Cargando

Enviando resultados de herramientas

Lección 2510 min

Después de que Claude solicita una llamada a herramienta, necesitas ejecutar la función y enviar los resultados de vuelta. Esto completa el flujo de trabajo de uso de herramientas al proporcionarle a Claude la información que solicitó.

Ejecutando la función de la herramienta

Cuando Claude responde con un bloque de uso de herramienta, extraes los parámetros de entrada y llamas a tu función. Así es como accedes a los parámetros de la herramienta:

python
response.content[1].input

Esto te da un diccionario de los argumentos que Claude quiere pasar a tu función. Dado que tu función espera argumentos de palabra clave en lugar de un diccionario, usas la sintaxis de desempaquetado de Python:

python
get_current_datetime(**response.content[1].input)

Bloque de resultado de herramienta

Después de ejecutar la función de la herramienta, necesitas enviar los resultados de vuelta a Claude usando un bloque de resultado de herramienta. Este bloque va dentro de un mensaje de usuario y le indica a Claude qué sucedió cuando ejecutaste la herramienta.

El bloque de resultado de herramienta tiene varias propiedades importantes:

  • tool_use_id - Debe coincidir con el id del bloque ToolUse al que corresponde este ToolResult
  • content - Salida de la ejecución de tu herramienta, serializada como una cadena
  • is_error - True si ocurrió un error

Manejo de múltiples llamadas a herramientas

Claude puede solicitar múltiples llamadas a herramientas en una sola respuesta. Por ejemplo, si un usuario pregunta "¿Cuánto es 10 + 10 y cuánto es 30 + 30?", Claude podría responder con dos bloques ToolUse separados.

Cada llamada a herramienta obtiene un ID único, y debes hacer coincidir estos IDs al enviar los resultados de vuelta. Esto asegura que Claude sepa qué resultado corresponde a qué solicitud, incluso si los resultados llegan en un orden diferente.

Construyendo la solicitud de seguimiento

Tu solicitud de seguimiento a Claude debe incluir el historial completo de la conversación más el nuevo resultado de la herramienta. Así es la estructura:

python
messages.append({
    "role": "user",
    "content": [{
        "type": "tool_result",
        "tool_use_id": response.content[1].id,
        "content": "15:04:22",
        "is_error": False
    }]
})

El historial completo de mensajes ahora contiene:

  • Mensaje original del usuario
  • Mensaje del asistente con bloque de uso de herramienta
  • Mensaje del usuario con bloque de resultado de herramienta

Realizando la solicitud final

Al enviar la solicitud de seguimiento, aún debes incluir el esquema de la herramienta aunque no esperes que Claude haga otra llamada a herramienta. Claude necesita el esquema para entender las referencias a la herramienta en tu historial de conversación.

python
client.messages.create(
    model=model,
    max_tokens=1000,
    messages=messages,
    tools=[get_current_datetime_schema]
)

Claude entonces responderá con un mensaje final que incorpora los resultados de la herramienta en una respuesta natural para el usuario. El flujo de trabajo de uso de herramientas ahora está completo: has habilitado exitosamente a Claude para acceder a información en tiempo real a través de tu función personalizada.