Alejandría

Busca en Alejandría

Técnicas

Function calling with LLMs

Conecta decisiones del modelo con funciones y sistemas externos.

01

En pocas palabras

Patrón en el que un LLM propone llamadas estructuradas a herramientas descritas mediante nombres, argumentos y propósito; la aplicación controla su validación y ejecución.

Qué problema resuelve

Limitación de un modelo que solo genera texto y no puede consultar estados reales ni actuar sobre sistemas externos por sí mismo.

Cuándo utilizarlo

Agentes, asistentes transaccionales y consultas a APIs. Ejemplo: interpretar una pregunta sobre una solicitud, pedir una consulta autorizada a su API y explicar el resultado.

02

De la idea a la práctica

Funcionamiento, ejemplos y decisiones para pasar al siguiente nivel.

En el Radar compartido: Trial (valoración de la edición aportada).

Cómo funciona

La aplicación entrega al modelo descripciones de herramientas. El modelo devuelve una propuesta de llamada; el ejecutor comprueba y realiza la operación, y devuelve el resultado para que el modelo continúe. Algunos proveedores también ofrecen herramientas ejecutadas en su infraestructura.

Ejemplo: contrato de consulta

Una definición de herramienta con el formato de herramientas de cliente de Anthropic:

{
  "name": "consultar_estado",
  "description": "Consultar el estado de una solicitud autorizada.",
  "input_schema": {
    "type": "object",
    "properties": { "solicitud_id": { "type": "string" } },
    "required": ["solicitud_id"],
    "additionalProperties": false
  }
}

La implementación debe comprobar el acceso al identificador recibido antes de consultar el sistema. Este contrato no ejecuta por sí mismo la función.

El bucle de herramientas

1. App → modelo: mensajes + definiciones de herramientas
2. Modelo → app: «llama a consultar_estado con {"solicitud_id": "S-881"}»
3. App: valida argumentos y permisos → ejecuta → obtiene resultado
4. App → modelo: resultado de la herramienta
5. Repetir 2–4 hasta que el modelo responde sin pedir herramientas

El modelo nunca ejecuta nada: propone. La aplicación decide si ejecutar, con qué identidad y con qué límites.

Implementación del bucle (SDK de Anthropic)

import json, anthropic

client = anthropic.Anthropic()
MAX_PASOS = 6

def responder(pregunta: str, usuario) -> str:
    mensajes = [{"role": "user", "content": pregunta}]
    for _ in range(MAX_PASOS):
        r = client.messages.create(model="claude-sonnet-5-5", max_tokens=1024,
                                   tools=HERRAMIENTAS, messages=mensajes)
        mensajes.append({"role": "assistant", "content": r.content})
        if r.stop_reason != "tool_use":
            return "".join(b.text for b in r.content if b.type == "text")

        resultados = []
        for bloque in (b for b in r.content if b.type == "tool_use"):
            try:
                salida = ejecutar(bloque.name, bloque.input, usuario)   # autoriza con el usuario real
                resultados.append({"type": "tool_result", "tool_use_id": bloque.id,
                                   "content": json.dumps(salida)})
            except PermisoDenegado as e:
                resultados.append({"type": "tool_result", "tool_use_id": bloque.id,
                                   "content": f"Sin permiso: {e}", "is_error": True})
        mensajes.append({"role": "user", "content": resultados})
    return "No pude completar la consulta; un asesor revisará tu caso."

Los errores se devuelven al modelo como resultado (is_error) para que pueda corregir o explicar, en lugar de romper el flujo.

Diseño de herramientas

Práctica Ejemplo
Nombres y descripciones que digan cuándo usarla «Úsala cuando el cliente pregunte por el estado de una solicitud ya enviada»
Pocas herramientas de alto nivel resumen_credito en lugar de cinco llamadas a tablas
Parámetros con tipos estrictos y enums canal: "app" | "web" | "sucursal"
Respuestas compactas Campos necesarios, no el objeto completo de la base de datos
Errores accionables «Formato de id inválido; debe ser S-NNN»

Seguridad

  • Autorización por el usuario real: la herramienta comprueba que ese usuario puede ver la solicitud recibida; nunca confíes en que el modelo «solo pedirá lo permitido».
  • Herramientas de lectura y de escritura separadas; las de escritura con confirmación humana o reglas deterministas.
  • Contenido devuelto como dato: resultados de herramientas pueden contener instrucciones maliciosas (correos, páginas web).
  • Límites: número de pasos, tiempo total, coste y frecuencia por usuario.
  • Idempotencia en acciones con efectos (idempotencia).

Para exponer herramientas a muchos clientes y agentes con un protocolo común, ver MCP.

Criterios de implementación

Utiliza una lista de herramientas permitidas, límites de tiempo y reintentos acotados. Para efectos externos, define idempotencia y la autorización adecuada a la operación. Registra llamadas y resultados sin exponer secretos y considera contenido malicioso en respuestas externas.

Continúa en las fuentes

Documentación oficial para verificar detalles y explorar más.