Uso de Ferramentas e Chamada de Funções
O uso de ferramentas permite que LLMs solicitem a execução de funções em vez de adivinharem respostas. Defina ferramentas com esquemas, valide argumentos, execute com segurança e retorne resultados ao modelo.
Busque em todas as páginas da documentação
O uso de ferramentas permite que LLMs solicitem a execução de funções em vez de adivinharem respostas. Defina ferramentas com esquemas, valide argumentos, execute com segurança e retorne resultados ao modelo.
tools = [{"type": "function", "function": {
"name": "get_order",
"parameters": {"type": "object", "properties": {"order_id": {"type": "string"}}, "required": ["order_id"]},
}}]
response = client.chat.completions.create(model="gpt-4o-mini", messages=messages, tools=tools)"""tool_use.py - loop de execução segura de ferramentas."""
from __future__ import annotations
import json
from pydantic import BaseModel, ValidationError
from openai import OpenAI
client = OpenAI()
class GetOrderArgs(BaseModel):
order_id: str
def get_order(order_id: str) -> dict:
orders = {"ORD-123": {"status": "shipped", "total": 49.99}}
return orders.get(order_id, {"error": "not found"})
TOOL_REGISTRY = {"get_order": (GetOrderArgs, get_order)}
tools = [{"type": "function", "function": {
"name": "get_order",
"description": "Pesquisar pedido por ID",
"parameters": GetOrderArgs.model_json_schema(),
}}]
messages = [{"role": "user", "content": "Qual é o status do pedido ORD-123?"}]
for _ in range(5):
resp = client.chat.completions.create(model="gpt-4o-mini", messages=messages, tools=tools)
msg = resp.choices[0].message
if not msg.tool_calls:
print(msg.content)
break
messages.append(msg)
for call in msg.tool_calls:
name = call.function.name
schema_cls, fn = TOOL_REGISTRY[name]
try:
args = schema_cls.model_validate_json(call.function.arguments)
result = fn(**args.model_dump())
except ValidationError as e:
result = {"error": str(e)}
messages.append({"role": "tool", "tool_call_id": call.id, "content": json.dumps(result)})| Alternativa | Usar Quando | Não Usar Quando |
|---|---|---|
| Chamada de ferramentas OpenAI | Modelos GPT | Claude (use o formato de ferramenta Anthropic) |
| LangChain @tool | Agentes LangGraph | Preferência por SDK bruto |
| MCP | Servidores de ferramentas padronizados | Ferramentas simples de aplicativo único |
Versões do Stack: Esta página foi escrita para Python 3.14.0 (estável 3.14, manutenção 3.13), FastAPI 0.115+, Django 5.2, Flask 3.1, Pydantic 2, PyTorch 2.6+, pandas 2.2+, Polars 1.x, ruff 0.9+, e uv 0.6+.
Revisado por Chris St. John·Última atualização: 19 de jul. de 2026