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

Estado da conversa

Aprenda a gerenciar o estado da conversa durante uma interação com o modelo.

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

Ao investigar casos em que o GPT-5.5 trata uma atualização intermediária como a resposta final, verifique se sua integração preserva corretamente o campo phase da mensagem do assistente. Consulte Parâmetro de fase para mais detalhes.

Gerenciar manualmente o estado da conversa

Embora cada requisição de geração de texto seja independente e não mantenha estado, você ainda pode implementar conversas com vários turnos fornecendo mensagens adicionais como parâmetros da requisição de geração de texto. Considere uma piada de “toc-toc”:

Construir 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ê registra o estado anterior de uma conversa em uma única requisição ao modelo.

Para compartilhar manualmente o contexto entre as respostas geradas, inclua 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 Responses API retorna itens de raciocínio criptografados por padrão. Reenviar a saída completa mantém intactos os itens de raciocínio e os valores de phase do assistente. Modelos que oferecem suporte à persistência de raciocínio podem usar reasoning.context: "all_turns" para incluir o raciocínio disponível de turnos anteriores na próxima amostra. Consulte Preservar o raciocínio entre chamadas.

No exemplo a seguir, pedimos ao modelo que conte uma piada e depois solicitamos outra. Acrescentar respostas anteriores a novas requisições dessa forma ajuda a manter a naturalidade das conversas e a preservar o contexto das interações anteriores.

Gerenciar manualmente o estado da conversa com a Responses API.
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 o estado da conversa

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

Usar a Conversations API

A Conversations API funciona em conjunto com a Responses API para persistir o estado da conversa como um objeto de longa duração com seu próprio identificador durável. Depois de criar um objeto de conversa, você pode continuar usando-o em diferentes sessões, dispositivos ou tarefas.

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

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

Em uma interação com vários turnos, você pode passar conversation nas respostas seguintes para persistir o estado e compartilhar o contexto entre elas, em vez de precisar encadear vários itens de resposta.

Gerenciar 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,
)

Passar o contexto da resposta anterior

Outra forma de gerenciar o estado da conversa é compartilhar o contexto entre as respostas geradas usando o parâmetro previous_response_id. Esse parâmetro permite encadear respostas e criar uma conversa com mensagens interligadas.

Encadear respostas entre turnos passando 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)

No exemplo a seguir, pedimos ao modelo que conte uma piada. Em uma requisição separada, pedimos que explique por que ela é engraçada, e o modelo tem todo o contexto necessário para dar uma boa resposta.

Gerenciar manualmente o estado da conversa com a Responses API
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

Se você estiver usando o modo WebSocket da Responses API, a continuação usa a mesma semântica de previous_response_id do modo HTTP, mas por meio de um socket persistente com eventos response.create repetidos.

O cache local da conexão mantém as respostas anteriores recentes na memória para permitir a continuação com baixa latência. Ao usar stream_id, cada canal pode reter sua resposta mais recente; previous_response_id continua controlando a linhagem, de modo que um novo canal pode se ramificar a partir de uma resposta de outro canal enquanto ela permanecer disponível. Se não for possível resolver um ID ausente do cache, envie um novo turno com previous_response_id definido como null e passe todo o contexto de entrada.

Mesmo ao usar previous_response_id, todos os tokens de entrada anteriores das respostas na cadeia são cobrados como tokens de entrada na API.

Gerenciar a janela de contexto

Entender as janelas de contexto ajudará você a criar conversas com mensagens interligadas e a gerenciar o estado entre 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 qual é a janela de contexto do seu modelo, consulte os detalhes do modelo.

Gerenciar o contexto para geração de texto

À medida que suas entradas se tornam mais complexas ou você inclui mais turnos em uma conversa, é preciso considerar tanto os limites de tokens de saída quanto os da janela de contexto . As entradas e saídas do modelo são medidas em tokens, extraídos das entradas para analisar seu conteúdo e sua intenção e combinados para produzir saídas lógicas. Os modelos têm limites de uso de tokens durante o ciclo de vida de uma requisição de geração de texto.

  • Tokens de saída são os tokens gerados por um modelo em resposta a um prompt. Cada modelo tem limites diferentes para tokens de saída. Por exemplo, gpt-4o-2024-08-06 pode gerar no máximo 16.384 tokens de saída.
  • Uma janela de contexto descreve o total de tokens que podem ser usados para entrada e saída (e, em alguns modelos, 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 total de 128 mil tokens.

Se você criar um prompt extenso, muitas vezes por incluir contexto, dados ou exemplos adicionais para o modelo, corre o risco de ultrapassar a janela de contexto disponível para ele, o que pode resultar em saídas truncadas.

Use a ferramenta de tokenização, criada com a biblioteca tiktoken, para ver quantos tokens há em uma determinada string de texto.

Por exemplo, ao fazer uma solicitação à Responses API com um modelo com raciocínio habilitado, como o modelo o1, as seguintes contagens de tokens serão consideradas no total da janela de contexto:

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

Os tokens gerados que excederem o limite da janela de contexto poderão ser truncados nas respostas da API.

visualização da janela de contexto

Você pode estimar o número de tokens que suas mensagens usarão com a ferramenta de tokenização.

Compactação

As orientações detalhadas sobre compactação agora estão em Compactação.

Próximos passos

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