API da OpenAI: chat.completions e transmissão
Cliente da OpenAI, lista de mensagens, papéis de sistema/usuário/assistente e transmissão com stream=True.
API da OpenAI: chat.completions e transmissão é uma aula grátis de Learn AI with Python no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Learn AI with Python, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Learn AI with Python inclui 4 aulas no total.
Conheça o SDK Python da OpenAI
O pacote openai para Python é a forma oficial de interagir com modelos da OpenAI, como o GPT-4o. Instale-o com pip install openai e você terá uma única classe de cliente OpenAI que cuida da autenticação, de novas tentativas e da criação de solicitações.
Toda chamada que você fizer passará por esse cliente, portanto criá-lo uma vez e reutilizá-lo é o padrão recomendado.
pip install openai
from openai import OpenAICriando o cliente
Instancie o cliente com OpenAI(). Por padrão, ele lê sua chave da variável de ambiente OPENAI_API_KEY, mantendo os segredos fora do código-fonte.
Você também pode passar a chave explicitamente, mas as variáveis de ambiente são a abordagem recomendada para aplicações de produção.
from openai import OpenAI
# Reads OPENAI_API_KEY from the environment
client = OpenAI()
# Or pass it explicitly (not recommended)
client = OpenAI(api_key="sk-...")A lista de mensagens
Os modelos de chat são orientados por uma lista de mensagens. Cada mensagem é um dicionário com um role e um content. As três funções principais são system (instruções), user (a pessoa) e assistant (o modelo).
Essa lista é o contexto completo da conversa que o modelo vê em cada chamada.
messages = [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "What is the capital of France?"}
]Sua primeira conclusão
Chame client.chat.completions.create() com um model e suas messages. O texto da resposta está em response.choices[0].message.content.
A API retorna uma lista de opções, mas, no uso normal, basta ler a primeira.
response = client.chat.completions.create(
model="gpt-4o",
messages=messages
)
print(response.choices[0].message.content)Controlando a saída com parâmetros
Dois parâmetros moldam a resposta: temperature (0 = determinístico; valores maiores = mais criativo) e max_tokens (limita o tamanho da resposta). Temperaturas mais baixas são adequadas para tarefas factuais; temperaturas mais altas são melhores para brainstorming.
response = client.chat.completions.create(
model="gpt-4o",
messages=messages,
temperature=0.2,
max_tokens=300
)Por que transmitir respostas?
Sem transmissão em fluxo, você precisa esperar a resposta inteira antes de ver qualquer coisa. Com a transmissão em fluxo, os tokens chegam à medida que são gerados, permitindo que uma interface exiba o texto em tempo real, como o ChatGPT faz.
Você a ativa com stream=True, o que transforma o valor retornado de um único objeto em um iterador.
Ativando a transmissão em fluxo
Transmita stream=True para create(). Em vez de uma resposta concluída, você passa a receber um gerador que produz fragmentos à medida que o modelo os cria.
stream = client.chat.completions.create(
model="gpt-4o",
messages=messages,
stream=True
)Percorrendo fragmentos
Percorra o stream em um laço. Cada fragmento contém uma parte do texto em chunk.choices[0].delta.content. Os fragmentos iniciais e finais podem ter None nesse campo, portanto verifique se há um valor antes de imprimir.
for chunk in stream:
delta = chunk.choices[0].delta.content
if delta is not None:
print(delta, end="", flush=True)Entendendo delta e mensagem
Em uma resposta normal, você lê message.content (a resposta inteira). Em um stream, você lê delta.content (apenas a parte nova). A palavra delta significa "a mudança" desde o último fragmento.
Concatenar todos os deltas reconstrói a mensagem completa.
full_text = ""
for chunk in stream:
piece = chunk.choices[0].delta.content or ""
full_text += piece
print("\nFinal:", full_text)Conversas com várias interações
Para manter uma conversa, use append para adicionar a resposta do assistente a messages e depois acrescente a próxima mensagem do usuário. O modelo não mantém estado, portanto YOU mantém o histórico.
messages.append({"role": "assistant", "content": response.choices[0].message.content})
messages.append({"role": "user", "content": "And its population?"})
follow_up = client.chat.completions.create(model="gpt-4o", messages=messages)Inspecionando o uso de tokens
Respostas sem transmissão em fluxo incluem um objeto usage com prompt_tokens, completion_tokens e total_tokens. É assim que você acompanha e controla o custo da API, já que a cobrança é feita por token.
print(response.usage.prompt_tokens)
print(response.usage.completion_tokens)
print(response.usage.total_tokens)Verificação rápida
Teste sua compreensão da transmissão em fluxo.
Recapitulação: respostas de chat e transmissão em fluxo
Você aprendeu a criar um cliente OpenAI, montar uma lista messages com funções de sistema, usuário e assistente e chamar chat.completions.create(). Você lê as respostas normais em choices[0].message.content.
Com stream=True, você percorre os fragmentos e lê delta.content para obter a saída em tempo real, mantém o histórico anexando respostas e acompanha o custo por meio do objeto usage.
Perguntas Frequentes
A aula “API da OpenAI: chat.completions e transmissão” é grátis?
Sim — o texto completo de “API da OpenAI: chat.completions e transmissão” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Learn AI with Python, atualize para CoddyKit PRO. O curso de Learn AI with Python inclui 4 aulas no total.
O que vou aprender em “API da OpenAI: chat.completions e transmissão”?
Cliente da OpenAI, lista de mensagens, papéis de sistema/usuário/assistente e transmissão com stream=True. Você pratica Learn AI with Python com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Learn AI with Python?
Nenhuma experiência prévia é necessária. Learn AI with Python no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.
Quanto tempo leva a aula “API da OpenAI: chat.completions e transmissão”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Learn AI with Python?
Sim. Cada aula de Learn AI with Python inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- API da OpenAI: chat.completions e transmissão
- API Anthropic Claude em Python
- Chamadas de funções e uso de ferramentas com LLMs
- Engenharia de prompts para aplicações LLM em produção