Crea agentes persistentes en la nube con un arnés de ejecución administrado de Codex.
La API de agentes permite que tu aplicación acceda al arnés de ejecución de Codex a través de una API administrada por OpenAI.
OpenAI administra las sesiones, la orquestación, la compactación del contexto y la recuperación, mientras tu aplicación proporciona herramientas y elige su entorno de ejecución.
Los agentes pueden operar en un sandbox donde pueden ejecutar código, editar archivos, conectarse a servidores MCP y generar artefactos.
Usa el revisor de documentos para revisar documentos con habilidades de políticas y agentes especializados.
Conceptos fundamentales
La API de agentes se basa en cuatro conceptos principales:
Agente: el modelo, las instrucciones, las herramientas y los servidores MCP disponibles para el agente.
Entorno: un sandbox o una computadora opcionales donde el agente accede a archivos, carga habilidades y ejecuta comandos.
Sesión: una instancia persistente de un agente que trabaja en tareas y responde a las entradas.
Eventos y elementos: las entradas enviadas a un agente y la salida generada durante una sesión.
Una sesión de principio a fin
Comienza con un sandbox alojado por OpenAI en la guía de inicio rápido:
Crea una sesión. Configura el agente; OpenAI aprovisiona su entorno.
Asígnale una tarea. La entrada del usuario inicia un turno de trabajo una vez que el entorno está listo.
Sigue el progreso. Recibe la salida en streaming o usa webhooks para saber cuándo el agente termina o necesita una entrada.
Continúa o da indicaciones. Envía otra tarea a la misma sesión o guía al agente durante su turno actual.
Con una sesión alojada por OpenAI, tu aplicación envía entradas y recibe eventos, mientras OpenAI ejecuta el agente y aprovisiona y administra su sandbox. Consulta las opciones de entorno para conocer la configuración y las limitaciones.
Qué ofrece el arnés de ejecución administrado
El arnés de ejecución administrado de Codex permite:
Ejecutar comandos y código en un sandbox.
Aplicar habilidades e instrucciones pertinentes.
Conectarse a datos externos mediante herramientas o MCP.
Guiar al agente mientras trabaja.
Resumir el trabajo anterior para administrar su ventana de contexto.
Dividir el trabajo en subtareas y delegarlas a subagentes.
Reanudar una sesión desde donde se quedó.
Consulta los requisitos previos de inicio rápido para conocer los permisos de la clave de API y la configuración del SDK. Configura estas capacidades al crear una sesión:
Configurar las capacidades del arnés de ejecución administrado
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41import OpenAI from "openai";const client = new OpenAI();const session = await client.beta.agents.sessions.create({ agent: { model: "gpt-6-astra", instructions: "Use the OpenAI documentation MCP and web search to answer technical questions accurately. Delegate independent research tasks to subagents when useful.", tools: [ { type: "programmatic_tool_calling" }, { type: "mcp", server_label: "openai_docs", transport: { type: "http", server_url: "https://developers.openai.com/mcp", }, }, { type: "web_search" }, ], multi_agent: { enabled: true, max_concurrent_subagents: 4 }, }, environment: { type: "self_hosted", workspace_directory: "/workspace", capability_directories: ["/workspace/capabilities/skills"], }, input: [ { role: "user", content: [ { type: "input_text", text: "Research how to connect an MCP server to an OpenAI agent, check for recent updates, and summarize the recommended setup.", }, ], }, ],});console.log(session.id);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40from openai import OpenAIclient = OpenAI()session = client.beta.agents.sessions.create(agent={"model": "gpt-6-astra","instructions": "Use the OpenAI documentation MCP and web search to answer technical questions accurately. Delegate independent research tasks to subagents when useful.","tools": [ {"type": "programmatic_tool_calling"}, {"type": "mcp","server_label": "openai_docs","transport": {"type": "http","server_url": "https://developers.openai.com/mcp", }, }, {"type": "web_search"}, ],"multi_agent": {"enabled": True, "max_concurrent_subagents": 4}, },environment={"type": "self_hosted","workspace_directory": "/workspace","capability_directories": ["/workspace/capabilities/skills"], },input=[ {"role": "user","content": [ {"type": "input_text","text": "Research how to connect an MCP server to an OpenAI agent, check for recent updates, and summarize the recommended setup.", } ], } ],)print(session.id)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23import ( "context" "fmt" "github.com/openai/openai-go/v3")ctx := context.Background()client := openai.NewClient()session, err := client.Beta.Agents.Sessions.New(ctx, openai.BetaAgentSessionNewParams{Agent: openai.BetaAgentSessionNewParamsAgent{Model: openai.String("gpt-6-astra"), Instructions: openai.String("Use the OpenAI documentation MCP and web search to answer technical questions accurately. Delegate independent research tasks to subagents when useful."), Tools: []openai.AgentToolParamUnion{openai.AgentToolParamUnion{OfParamProgrammaticToolCalling: &openai.AgentToolParamProgrammaticToolCalling{}}, openai.AgentToolParamUnion{OfParamMcp: &openai.AgentToolParamMcp{ServerLabel: "openai_docs", Transport: openai.McpTransportParamUnion{OfParamHTTP: &openai.McpTransportParamHTTP{ServerURL: "https://developers.openai.com/mcp"}}}}, openai.AgentToolParamUnion{OfParamWebSearch: &openai.AgentToolParamWebSearch{}}}, MultiAgent: openai.MultiAgentConfigParam{Enabled: true, MaxConcurrentSubagents: openai.Int(4)}}, Environment: openai.EnvironmentParamUnion{OfParamSelfHosted: &openai.EnvironmentParamSelfHosted{WorkspaceDirectory: "/workspace", CapabilityDirectories: []string{"/workspace/capabilities/skills"}}}, Input: openai.BetaAgentSessionNewParamsInputUnion{OfArrayOfInputMessages: []openai.AgentSessionInputMessageParam{openai.AgentSessionInputMessageParam{Content: []openai.InputContentParamUnion{openai.InputContentParamUnion{OfParamInputText: &openai.InputContentParamInputText{Text: "Research how to connect an MCP server to an OpenAI agent, check for recent updates, and summarize the recommended setup."}}}}}}})if err != nil { panic(err)}fmt.Println(session.ID)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50import com.openai.client.OpenAIClient;import com.openai.client.okhttp.OpenAIOkHttpClient;import com.openai.models.beta.agents.AgentToolParam;import com.openai.models.beta.agents.EnvironmentParam;import com.openai.models.beta.agents.McpTransportParam;import com.openai.models.beta.agents.MultiAgentConfigParam;import com.openai.models.beta.agents.sessions.SessionCreateParams;import java.util.List;OpenAIClient client = OpenAIOkHttpClient.fromEnv();var session = client .beta() .agents() .sessions() .create( SessionCreateParams.builder() .agent( SessionCreateParams.Agent.builder() .model("gpt-6-astra") .instructions( "Use the OpenAI documentation MCP and web search to answer" + " technical questions accurately. Delegate independent" + " research tasks to subagents when useful.") .addTool(AgentToolParam.ProgrammaticToolCalling.builder().build()) .addTool( AgentToolParam.Mcp.builder() .serverLabel("openai_docs") .transport( McpTransportParam.Http.builder() .serverUrl("https://developers.openai.com/mcp") .build()) .build()) .addTool(AgentToolParam.WebSearch.builder().build()) .multiAgent( MultiAgentConfigParam.builder() .enabled(true) .maxConcurrentSubagents(4L) .build()) .build()) .environment( EnvironmentParam.SelfHosted.builder() .workspaceDirectory("/workspace") .capabilityDirectories(List.of("/workspace/capabilities/skills")) .build()) .input( "Research how to connect an MCP server to an OpenAI agent, check for recent" + " updates, and summarize the recommended setup.") .build());System.out.println(session.id());
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43require "openai"client = OpenAI::Client.newsession = client.beta.agents.sessions.create( agent: { model: "gpt-6-astra", instructions: "Use the OpenAI documentation MCP and web search to answer technical questions accurately. Delegate independent research tasks to subagents when useful.", tools: [ { type: "programmatic_tool_calling" }, { type: "mcp", server_label: "openai_docs", transport: { type: "http", server_url: "https://developers.openai.com/mcp" } }, { type: "web_search" } ], multi_agent: { enabled: true, max_concurrent_subagents: 4 } }, environment: { type: "self_hosted", workspace_directory: "/workspace", capability_directories: ["/workspace/capabilities/skills"] }, input: [ { role: "user", content: [ { type: "input_text", text: "Research how to connect an MCP server to an OpenAI agent, check for recent updates, and summarize the recommended setup." } ] } ])puts session.id
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46curl -sS -X POST "https://api.openai.com/v1/agents/sessions" \ -H "OpenAI-Beta: agents=v1" \ -H "Authorization: Bearer $OPENAI_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "agent": { "model": "gpt-6-astra", "instructions": "Use the OpenAI documentation MCP and web search to answer technical questions accurately. Delegate independent research tasks to subagents when useful.", "tools": [ { "type": "programmatic_tool_calling" }, { "type": "mcp", "server_label": "openai_docs", "transport": { "type": "http", "server_url": "https://developers.openai.com/mcp" } }, { "type": "web_search" } ], "multi_agent": { "enabled": true, "max_concurrent_subagents": 4 } }, "environment": { "type": "self_hosted", "workspace_directory": "/workspace", "capability_directories": ["/workspace/capabilities/skills"] }, "input": [ { "role": "user", "content": [ { "type": "input_text", "text": "Research how to connect an MCP server to an OpenAI agent, check for recent updates, and summarize the recommended setup." } ] } ] }'
La API de agentes conserva el estado de la sesión para que puedas continuar el trabajo entre turnos sin
reconstruir el contexto de la conversación. Puedes eliminar las sesiones y los artefactos
publicados cuando ya no los necesites.
Actualmente, la API de agentes solo admite la residencia de datos en Estados Unidos y
no admite la retención cero de datos (ZDR). Elegir un sandbox autoalojado
no hace que la API de agentes sea apta para ZDR. Consulta Controles de datos
en la plataforma de OpenAI
para obtener más información sobre la residencia y la retención de datos.