For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
Navegação principal
Theme

Estado da conversa

Saiba como gerenciar o estado da conversa ao interagir com um modelo.

A OpenAI oferece algumas formas de gerenciar o estado da conversa para preservar informações ao longo de várias mensagens ou turnos.

Se o GPT-5.5 tratar uma atualização intermediária como resposta final, verifique se sua integração preserva corretamente o campo phase da mensagem do assistente. Para mais detalhes, consulte Parâmetro de fase.

Como gerenciar manualmente o estado da conversa

Cada requisição de geração de texto é independente e não mantém estado. Ainda assim, você pode implementar conversas com vários turnos passando mensagens adicionais como parâmetros da requisição. Veja o exemplo de uma piada do tipo “toc, toc”:

Reconstrua manualmente uma conversa anterior
from openai import OpenAI

client = OpenAI()

response = client.responses.create(
    model="gpt-6-astra",
    input=[
        {"role": "user", "content": "knock knock."},
        {"role": "assistant", "content": "Who's there?"},
        {"role": "user", "content": "Orange."},
    ],
)

print(response.output_text)

Ao alternar mensagens user e assistant, você inclui o estado anterior da conversa em uma única requisição ao modelo.

Para compartilhar o contexto manualmente entre as respostas geradas, use a saída da resposta anterior do modelo como entrada e acrescente essa entrada à próxima requisição.

Em requisições sem estado a modelos de raciocínio, preserve todos os itens do array output da resposta. A API Responses retorna itens de raciocínio criptografados por padrão. Ao reenviar a saída completa, você mantém intactos os itens de raciocínio e os valores de phase das mensagens do assistente. Nos modelos que permitem persistir o raciocínio, você pode usar reasoning.context: "all_turns" para incorporar à próxima geração o raciocínio disponível dos turnos anteriores. Veja como preservar o raciocínio entre chamadas.

Ao reenviar itens de raciocínio, preserve o histórico da conversa que deu origem a esses itens. Consulte Mantenha o prefixo inalterado para entender como as alterações no histórico da conversa afetam o raciocínio.

No exemplo a seguir, pedimos ao modelo que conte uma piada e depois pedimos outra. Acrescentar as respostas anteriores às novas requisições ajuda a manter a conversa natural e a preservar o contexto das interações anteriores.

Gerencie manualmente o estado da conversa com a API Responses.
from openai import OpenAI

client = OpenAI()

history = [{"role": "user", "content": "tell me a joke"}]

response = client.responses.create(
    model="gpt-6-astra",
    input=history,
    store=False,
)

print(response.output_text)

# Add all response output items, including encrypted reasoning items, to the conversation
history += response.output

history.append({"role": "user", "content": "tell me another"})

second_response = client.responses.create(
    model="gpt-6-astra",
    input=history,
    store=False,
)

print(second_response.output_text)

APIs da OpenAI para gerenciar o estado da conversa

Nossas APIs facilitam o gerenciamento automático do estado da conversa, sem que você precise passar as entradas manualmente a cada turno.

Como usar a API Conversations

A API Conversations funciona em conjunto com a API Responses para armazenar o estado da conversa em um objeto de longa duração com um identificador persistente próprio. Depois de criar um objeto de conversa, você pode reutilizá-lo em diferentes sessões, dispositivos ou tarefas.

As conversas armazenam itens, como mensagens, chamadas de ferramentas, saídas de ferramentas e outros dados.

Crie uma conversa
conversation = openai.conversations.create()

Em uma interação com vários turnos, passe conversation ao gerar as próximas respostas para manter o estado e compartilhar o contexto entre elas. Assim, você dispensa o encadeamento de vários itens de resposta.

Gerencie o estado da conversa com as APIs Conversations e Responses
response = openai.responses.create(
    model="gpt-6-astra",
    input=[{"role": "user", "content": "What are the 5 Ds of dodgeball?"}],
    conversation=conversation.id,
)

Como passar o contexto da resposta anterior

Outra forma de gerenciar o estado da conversa é usar o parâmetro previous_response_id para compartilhar o contexto entre as respostas geradas. Com esse parâmetro, você pode encadear respostas e dar continuidade à conversa.

Encadeie respostas entre turnos usando o ID da resposta anterior
from openai import OpenAI

client = OpenAI()

response = client.responses.create(
    model="gpt-6-astra",
    input="tell me a joke",
)
print(response.output_text)

second_response = client.responses.create(
    model="gpt-6-astra",
    previous_response_id=response.id,
    input=[{"role": "user", "content": "explain why this is funny."}],
)
print(second_response.output_text)

previous_response_id no modo WebSocket

No modo WebSocket da API Responses, previous_response_id funciona da mesma forma que no modo HTTP para dar continuidade à conversa. A diferença é que você envia eventos response.create sucessivos pelo mesmo socket persistente.

O cache de cada conexão mantém as respostas mais recentes na memória para que a conversa continue com baixa latência. Quando você usa stream_id, cada fluxo pode reter sua resposta mais recente. O parâmetro previous_response_id continua definindo de qual resposta a próxima deriva. Assim, um novo fluxo pode partir de uma resposta de outro fluxo enquanto ela estiver disponível. Se não for possível localizar uma resposta cujo ID não esteja no cache, envie um novo turno com previous_response_id definido como null e inclua todo o contexto de entrada.

Mesmo quando você usa previous_response_id, a API cobra todos os tokens de entrada das respostas anteriores da cadeia como tokens de entrada.

Como gerenciar a janela de contexto

Entender como funciona a janela de contexto ajuda a criar conversas encadeadas e a gerenciar o estado ao longo das interações com o modelo.

A janela de contexto é o número máximo de tokens que podem ser usados em uma única requisição. Esse limite inclui tokens de entrada, de saída e de raciocínio. Para saber o tamanho da janela de contexto do seu modelo, consulte os detalhes dos modelos.

Como gerenciar o contexto na geração de texto

À medida que as entradas se tornam mais complexas ou que você acrescenta turnos à conversa, é preciso considerar os limites de tokens de saída e da janela de contexto. As entradas e saídas do modelo são medidas em tokens. O modelo decompõe as entradas em tokens para analisar seu conteúdo e sua intenção, e combina tokens para gerar saídas coerentes. Cada modelo tem limites para o uso de tokens ao longo de uma requisição de geração de texto.

  • Tokens de saída são os tokens que o modelo gera em resposta a um prompt. Cada modelo tem seus próprios limites de tokens de saída. Por exemplo, gpt-4o-2024-08-06 pode gerar até 16.384 tokens de saída.
  • A janela de contexto define o total de tokens disponíveis para entrada e saída e, em alguns modelos, também para tokens de raciocínio. Compare os limites da janela de contexto dos nossos modelos. Por exemplo, gpt-4o-2024-08-06 tem uma janela de contexto de 128 mil tokens.

Ao incluir mais contexto, dados ou exemplos para o modelo, você pode criar um prompt longo que ultrapasse o limite da janela de contexto. Nesse caso, a saída pode ser truncada.

Use a ferramenta de tokenização, criada com a biblioteca tiktoken, para saber quantos tokens há em um trecho de texto.

Por exemplo, em uma requisição à API Responses com um modelo que tem o raciocínio habilitado, como o modelo o1, os seguintes tokens entram na contagem total da janela de contexto:

  • Tokens de entrada (entradas que você inclui no array input da API Responses)
  • Tokens de saída (tokens gerados em resposta ao seu prompt)
  • Tokens de raciocínio (usados pelo modelo para planejar a resposta)

Os tokens gerados além do limite da janela de contexto podem ser truncados nas respostas da API.

Diagrama da janela de contexto

Você pode estimar quantos tokens suas mensagens usarão com a ferramenta de tokenização.

Compactação

As orientações detalhadas sobre compactação agora estão no guia de Compactação.

Próximos passos

Para ver exemplos e casos de uso mais específicos, acesse o OpenAI Cookbook ou saiba como usar as APIs para ampliar os recursos dos modelos: