Ir al contenido

Herramientas

Con tools, Jeimy puede pedirle a tu código que ejecute una función —consultar una base, llamar a otra API— y usar el resultado para responder. Es el mismo formato de OpenAI.

tools = [{
"type": "function",
"function": {
"name": "consultar_stock",
"description": "Devuelve cuántas unidades hay de un producto",
"parameters": {
"type": "object",
"properties": {"producto": {"type": "string"}},
"required": ["producto"],
},
},
}]
mensajes = [{"role": "user", "content": "¿Cuántas cajas de mango nos quedan?"}]
r = client.chat.completions.create(model="aguila", messages=mensajes, tools=tools)
import json
llamada = r.choices[0].message.tool_calls[0]
args = json.loads(llamada.function.arguments) # {"producto": "mango"}
resultado = {"producto": args["producto"], "cajas": 42} # tu código real va acá
mensajes.append(r.choices[0].message)
mensajes.append({
"role": "tool",
"tool_call_id": llamada.id,
"content": json.dumps(resultado),
})
final = client.chat.completions.create(model="aguila", messages=mensajes, tools=tools)
print(final.choices[0].message.content) # "Quedan 42 cajas de mango."
tool_choice Qué hace
"auto" El modelo decide (por defecto)
"none" No usa ninguna
"required" Tiene que usar alguna
{"type": "function", "function": {"name": "..."}} Tiene que usar esa

Cuando el modelo pide una herramienta, finish_reason es tool_calls.

En el formato Anthropic funciona igual, con tools, bloques tool_use y tool_result.