Cargando

Conversaciones de múltiples turnos

Lección 46 min

Cuando trabajas con la API de Anthropic y Claude, hay un concepto crucial que debes entender: Claude no almacena nada de tu historial de conversación. Cada solicitud que haces es completamente independiente, sin memoria de intercambios anteriores.

Esto significa que si quieres tener una conversación de múltiples turnos en la que Claude recuerde el contexto de mensajes anteriores, necesitas gestionar tú mismo el estado de la conversación.

El problema con las conversaciones sin estado

Supongamos que le preguntas a Claude "¿Qué es la computación cuántica?" y obtienes una buena respuesta. Luego continúas con "Escribe otra oración" - Claude no tiene idea a qué te refieres. Escribirá una oración sobre algo completamente aleatorio porque no tiene memoria de la discusión sobre computación cuántica.

Cómo funcionan las conversaciones de múltiples turnos

Para mantener el contexto de la conversación, necesitas hacer dos cosas:

  • Mantener manualmente una lista de todos los mensajes en tu código
  • Enviar el historial completo de mensajes con cada solicitud

Aquí está el flujo que realmente funciona:

  1. Envía tu mensaje inicial de usuario a Claude
  2. Toma la respuesta de Claude y agrégala a tu lista de mensajes como un mensaje de asistente
  3. Agrega tu pregunta de seguimiento como otro mensaje de usuario
  4. Envía todo el historial de la conversación a Claude

Creación de funciones auxiliares

Para facilitar la gestión de conversaciones, puedes crear tres funciones auxiliares:

python
def add_user_message(messages, text):
    user_message = {"role": "user", "content": text}
    messages.append(user_message)

def add_assistant_message(messages, text):
    assistant_message = {"role": "assistant", "content": text}
    messages.append(assistant_message)

def chat(messages):
    message = client.messages.create(
        model=model,
        max_tokens=1000,
        messages=messages,
    )
    return message.content[0].text

Poniéndolo todo junto

Así es como usas estas funciones para mantener una conversación:

python
# Empieza con una lista de mensajes vacía
messages = []

# Agrega la pregunta inicial del usuario
add_user_message(messages, "Define quantum computing in one sentence")

# Obtén la respuesta de Claude
answer = chat(messages)

# Agrega la respuesta de Claude al historial de la conversación
add_assistant_message(messages, answer)

# Agrega una pregunta de seguimiento
add_user_message(messages, "Write another sentence")

# Obtén la respuesta de seguimiento con contexto completo
final_answer = chat(messages)

Ahora Claude entenderá que "Escribe otra oración" se refiere a ampliar la definición de computación cuántica, porque has proporcionado el contexto completo de la conversación.

Estas funciones auxiliares serán útiles a lo largo de tu trabajo con Claude, facilitando mucho la creación de aplicaciones que puedan mantener conversaciones significativas a través de múltiples intercambios.