Herramientas de agente: llamadas, búsqueda y código

@gabrielchua
INGLÉShace 1 día · 13 jul 2026
796K
19
3
1
43

TL;DR

Gabriel Chua explora las nuevas capacidades de herramientas de GPT-5.6, detallando cómo Programmatic Tool Calling y Tool Search optimizan el rendimiento del agente y la gestión del contexto.

Con GPT-5.6, lanzamos Programmatic Tool Calling, lo que hace un buen momento para repasar las herramientas de agente y las formas de mantener los modelos enfocados a medida que crece el uso de herramientas.

Pregúntale a un agente de soporte por qué el pedido A-104 está retrasado y podría leer el pedido, llamar al transportista y explicar la demora. Ese intercambio esconde un bucle: el modelo solicita una acción, un runtime la ejecuta y el resultado regresa. Las herramientas integradas, MCP, skills, Tool Search y Programmatic Tool Calling cambian lo que el modelo ve y lo que regresa.

1. Tool Calling 101: el modelo pide; la aplicación actúa

Con una función propiedad del cliente, el modelo no ejecuta tu código. Devuelve un nombre de herramienta, argumentos JSON y un ID de llamada. Tu aplicación verifica la solicitud, ejecuta la función y devuelve function_call_output con el mismo ID.

Gabriel Chua - inline image

El bucle de herramientas propiedad del cliente: no ocurre ninguna acción externa hasta que tu aplicación ejecuta el paso 3. Generado con GPT-Image-2 en Codex.

En Python, devolver function_call_output entrega el control de vuelta al modelo:

python
1import json
2from openai import OpenAI
3
4client = OpenAI()
5
6def get_order(order_id): return {"order_id": order_id, "promised_date": "2026-07-13"}
7
8order_tool = {
9 "type": "function", "name": "get_order", "strict": True,
10 "description": "Devuelve la fecha de entrega prometida para un pedido.",
11 "parameters": {
12 "type": "object",
13 "properties": {"order_id": {"type": "string"}},
14 "required": ["order_id"], "additionalProperties": False,
15 },
16 "output_schema": {
17 "type": "object",
18 "properties": {
19 "order_id": {"type": "string"}, "promised_date": {"type": "string"},
20 },
21 "required": ["order_id", "promised_date"], "additionalProperties": False,
22 },
23}
24
25first = client.responses.create(
26 model="gpt-5.6", tools=[order_tool], input="¿Por qué el pedido A-104 está retrasado?",
27 tool_choice={"type": "function", "name": "get_order"},
28)
29call = next(item for item in first.output if item.type == "function_call")
30result = get_order(**json.loads(call.arguments))
31
32final = client.responses.create(
33 model="gpt-5.6",
34 tools=[order_tool],
35 input=[*first.output, {
36 "type": "function_call_output",
37 "call_id": call.call_id,
38 "output": json.dumps(result),
39 }],
40)
41print(final.output_text)

El harness repite este bucle hasta que el modelo devuelve un mensaje final. Los esquemas estrictos mantienen los argumentos bien formados; el ejecutor aún verifica los permisos.

2. La ejecución de herramientas puede ejecutarse en diferentes lugares

Las herramientas integradas, que incluyen búsqueda web, búsqueda de archivos y shell alojado, pueden ejecutarse en la infraestructura de OpenAI. Un servidor MCP remoto expone y ejecuta herramientas de forma remota; Responses admite estos servidores y conectores mantenidos por OpenAI, solicitando aprobación de forma predeterminada antes de compartir datos.

Una skill agrupa instrucciones y archivos. Adjúntala al shell alojado y el modelo puede seguir su procedimiento o ejecutar sus scripts. Primero ve el nombre, la descripción y la ruta de la skill, luego lee SKILL.md cuando se selecciona.

python
1carrier_mcp = {
2 "type": "mcp",
3 "server_label": "carrier",
4 "server_url": "https://example.com/mcp",
5 "allowed_tools": ["track_package"],
6 "require_approval": "always",
7}
8incident_shell = {
9 "type": "shell",
10 "environment": {
11 "type": "container_auto",
12 "skills": [{"type": "skill_reference", "skill_id": "skill_..."}],
13 },
14}
15
16response = client.responses.create(
17 model="gpt-5.6",
18 tools=[carrier_mcp, incident_shell],
19 input="Investiga por qué el pedido A-104 está retrasado usando la skill de incidentes.",
20)

El harness unifica estas superficies: MCP expone herramientas remotas, las skills proporcionan procedimientos y archivos, y el harness controla dónde se ejecutan las llamadas.

3. Tool Search: cuando el contexto se convierte en la restricción

Cada definición de herramienta visible consume contexto. Los nombres, descripciones y esquemas usan tokens de entrada, las herramientas similares se vuelven más difíciles de distinguir y un catálogo grande de MCP se convierte en un prompt grande.

Tool Search permite que los modelos compatibles GPT-5.4 o posteriores carguen definiciones diferidas solo cuando sea necesario:

python
1shipping = {
2 "type": "namespace", "name": "shipping",
3 "description": "Herramientas de seguimiento y entrega de pedidos.",
4 "tools": [{
5 "type": "function", "name": "get_delivery_eta",
6 "description": "Devuelve la hora estimada de llegada para un pedido.",
7 "defer_loading": True,
8 "parameters": {
9 "type": "object", "required": ["order_id"],
10 "properties": {"order_id": {"type": "string"}},
11 "additionalProperties": False,
12 },
13 }],
14}
15
16response = client.responses.create(
17 model="gpt-5.6",
18 input="¿Cuándo llegará el pedido A-104?",
19 tools=[shipping, {"type": "tool_search"}],
20)

Hosted Tool Search elige entre las herramientas declaradas en la solicitud; la búsqueda ejecutada por el cliente puede devolver herramientas para el tenant o proyecto actual. La búsqueda agrega un paso, por lo que los catálogos pequeños pueden ganar poco. Una función diferida aún expone su nombre y descripción, mientras que un namespace o servidor MCP puede comenzar con una descripción corta. Las herramientas cargadas se agregan al final para preservar el prefijo de caché. Las skills difieren instrucciones y archivos; Tool Search difiere esquemas invocables.

4. Programmatic Tool Calling para trabajo predecible con múltiples herramientas

Las llamadas directas devuelven cada resultado al modelo. Eso es útil cuando un resultado cambia la siguiente decisión, pero las uniones simples, filtros y búsquedas paralelas pueden llenar el contexto con datos que el código podría reducir.

Programmatic Tool Calling permite que GPT-5.6 escriba JavaScript que se ejecuta en un runtime V8 nuevo y aislado. V8 ejecuta JavaScript dentro de Chrome, pero esto no es un navegador ni Node.js. Soporta await de nivel superior, bucles, condiciones y llamadas paralelas, sin instalación de paquetes, acceso directo a la red, sistema de archivos de propósito general, subprocesos, consola ni estado persistente.

Gabriel Chua - inline image

Tres llamadas directas comparadas con tres llamadas paralelas en el runtime V8 aislado. Generado con GPT-Image-2 en Codex.

Cuando un programa llega a una función propiedad del cliente, se pausa mientras tu aplicación ejecuta la llamada; devolver su call_id y caller la reanuda. carrier_mcp también puede pausarse para aprobación, y output_schema le dice a JavaScript qué campos puede inspeccionar.

python
1for tool in (order_tool, carrier_mcp):
2 tool["allowed_callers"] = ["programmatic"]
3
4response = client.responses.create(
5 model="gpt-5.6",
6 tools=[
7 order_tool,
8 carrier_mcp,
9 {"type": "programmatic_tool_calling"},
10 ],
11 input="Compara el pedido A-104 con el estado del transportista y devuelve evidencia de la demora.",
12)

Los programas pueden llamar a funciones y herramientas personalizadas, MCP, apply_patch, shell e intérprete de código, pero no a búsqueda web ni búsqueda de archivos. Tool Search de nivel superior debe cargar una herramienta diferida antes de que comience el programa; un programa en ejecución no puede buscar herramientas.

Mantén las llamadas directas cuando el siguiente paso necesite juicio del modelo, aprobación, citas o un efecto secundario. Usa un programa cuando reglas claras permitan que el código devuelva un resultado más pequeño sin perder evidencia. La ejecución alojada cambia dónde se ejecuta el trabajo, Tool Search cambia qué definiciones entran al contexto y las llamadas programáticas cambian qué resultados regresan. Combínalos cuando una evaluación muestre que la corrección se mantiene mientras los tokens, la latencia o el costo mejoran.

Bonus: mantén bucles largos de herramientas en una sola conexión

Si un agente cambia repetidamente entre el modelo y las herramientas propiedad del cliente, el modo WebSocket de Responses puede reducir la sobrecarga de continuación. El socket conecta tu harness a Responses; no hace que las herramientas se ejecuten más rápido. Acepta los mismos campos de response.create para funciones, MCP, Tool Search y Programmatic Tool Calling, aunque la documentación no evalúa todas las combinaciones. OpenAI ha observado hasta un 40% de ejecución más rápida en despliegues con 20 o más llamadas, así que mide tu flujo de trabajo.

Pruébalo con tu agente

Toma un Appshot de este artículo, abre tu proyecto de agente en Codex y pega:

Usa este artículo y la base de código actual para actualizar la ruta de herramientas de este agente. Agrupa herramientas grandes o de uso poco frecuente y habilita Tool Search para diferirlas. Encuentra etapas acotadas donde Programmatic Tool Calling pueda ejecutar llamadas en paralelo y devolver resultados compactos. Mantén las decisiones semánticas, aprobaciones, citas y efectos secundarios como llamadas directas. Compara ambas rutas en cuanto a corrección, cobertura de evidencia, éxito de herramientas, tokens, latencia, reintentos y costo antes de cambiar el enrutamiento de producción.

Recrear en YouMind

Turn one viral article into a full content workflow

Collect the source, decode the pattern, create assets, draft the story, and distribute from one AI workspace.

Explore YouMind
Para creadores

Convierte tu Markdown en un artículo de 𝕏 impecable

Cuando publicas tus propios textos largos, dar formato en 𝕏 a imágenes, tablas y bloques de código es un fastidio. YouMind convierte un borrador completo en Markdown en un artículo de 𝕏 impecable y listo para publicar.

Prueba Markdown a 𝕏

Más patrones por descifrar

Artículos virales recientes

Explorar más artículos virales