Conversación con la API de OpenAI

Cuando conversamos con ChatGPT, cada respuesta del modelo puede ser influenciada por las interacciones previas con el usuario. En la API de OpenAI, una conversación busca emular esta característica. En la siguiente entrada, veremos cómo crear una conversación y cómo integrarla a nuestras consultas para tener una interacción contexto-dependiente.

Creando una conversación…

El primer paso para que las respuestas del modelo dependan del historial de conversación es crear una conversación. Para llevar a cabo esto, siguiendo la documentación oficial, una consulta tipo podría ser:

curl https://api.openai.com/v1/conversations \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"metadata": {"topic": "demo"},
"items": [
{
"type": "message",
"role": "user",
"content": "Hello!"
}
]
}'

donde $OPENAI_API_KEY es nuestra API KEY. En este sentido, al ejecutarla, una respuesta tipo podría tener el siguiente formato,

{
  "id": "conv_123",
  "object": "conversation",
  "created_at": 1741900000,
  "metadata": {"topic": "demo"}
}

de esta respuesta, y para efectos de esta entrada, sólo nos interesa el id, que en este caso es «conv_123». Una vez guardado, basta con usar ese id en cada consulta con Responses API. En la siguiente sección mostramos una consulta tipo usando el id de la conversación.

Consultando Responses API con contexto…

Siguiendo el ejemplo de la documentación, sólo basta con añadir la clave conversation al payload, con el valor de nuestro id:

curl https://api.openai.com/v1/responses \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "model": "gpt-4.1",
    "conversation" : "conv_123",
    "input": "Tell me a three sentence bedtime story about a unicorn."
  }'

Así, el modelo responderá con contexto, pero este es finito: cada modelo tiene una ventana de contexto máxima. Si la conversación la rebasa, los mensajes más antiguos quedan fuera y el modelo deja de tenerlos en cuenta.

José Miguel Muñoz Urra – jmunozu@pulki.es