Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Erro na definicao do messages em client.chat.completions.create

Bom dia.
Ao codificar atualmente a solução, estou encontrando dificuldades em consertar o problema abaixo.
Como sou novado no OpenAI, tentei ver documentação mas nao ficou claro. Usei de várias maneiras o Copilot integrado ao VSCode mas ele selecionava importar uma biblioteca do OpenAI nao acessivel.

Ambiente:
VSCODE
Ambiente virtual configurado
Python 3.13.0

CODIGO:
from openai import OpenAI
import os
from dotenv import load_dotenv
import tiktoken
....

lista_mensagens = [
{
"role": "system",
"content": prompt_sistema
},
{
"role": "user",
"content": prompt_usuario
}
]

resposta = client.chat.completions.create(
model=modelo,
messages=lista_mensagens
)

print(resposta.choices[0].message.content)

ERRO
Argument of type "list[dict[str, str]]" cannot be assigned to parameter "messages" of type "Iterable[ChatCompletionMessageParam]" in function "create"
  "list[dict[str, str]]" is not assignable to "Iterable[ChatCompletionMessageParam]"
    Type parameter "_T_co@Iterable" is covariant, but "dict[str, str]" is not a subtype of "ChatCompletionMessageParam"
      Type "dict[str, str]" is not assignable to type "ChatCompletionMessageParam"
        "dict[str, str]" is not assignable to "ChatCompletionDeveloperMessageParam"
        "dict[str, str]" is not assignable to "ChatCompletionSystemMessageParam"
        "dict[str, str]" is not assignable to "ChatCompletionUserMessageParam"
        "dict[str, str]" is not assignable to "ChatCompletionAssistantMessageParam"
        "dict[str, str]" is not assignable to "ChatCompletionToolMessageParam"
...

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
1 resposta
solução!

Oi, Elber! Como vai?

O erro indica conflito de tipos do Pyright/VSCode: sua lista usa dict[str, str], mas a SDK tipa messages como Iterable[ChatCompletionMessageParam]. Tipando corretamente, o aviso some e o código roda.

Ajuste seu código assim (SDK OpenAI v1+):

from openai import OpenAI
from openai.types.chat import ChatCompletionMessageParam

client = OpenAI()

modelo = "gpt-4o-mini"  # troque pelo que o curso pedir

mensagens: list[ChatCompletionMessageParam] = [
    {"role": "system", "content": "Voce e um assistente que responde de forma objetiva."},
    {"role": "user", "content": "Diga apenas: Olá mundo!"}
]

resposta = client.chat.completions.create(
    model=modelo,
    messages=mensagens,
)

print(resposta.choices[0].message.content)

Por que funciona?

  • ChatCompletionMessageParam é um TypedDict com chaves esperadas (role, content).
  • Tipar mensagens como list[ChatCompletionMessageParam] evita a queixa do type checker.

Dicas finais:

  • Instale/atualize: pip install -U openai
  • Evite confundir com libs antigas/nao oficiais sugeridas pelo Copilot.
  • Python 3.13: a SDK é compatível; o ponto crítico é a tipagem estática no editor.

Espero ter ajudado. Conte com o apoio do Fórum na sua jornada. Fico à disposição.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado