Crea un agente
Crea un agente a partir de una definición. El límite de pasos de la definición se aplica a cada llamada de ejecución o de continuación.Campos de la definición
Rust construye la definición con métodos en lugar de campos:AgentDefinition::new(id, model) y después .instructions(text), .tool(tool) (una vez por herramienta), .max_steps(limit), .model_retries(count, backoff) y .human_review(callback). El AgentDefinition de Java es un record con constructores de 10, 13 y 19 argumentos.
En TypeScript,
model, instructions y los valores de muestreo pueden ser fijos o dinámicos.
Define una herramienta
En Herramientas se enumeran todos los campos de una herramienta.
Conéctate a Phaseo Gateway
En Salidas y reintentos se enumeran las opciones del cliente en cada lenguaje.
Captura ejecuciones en local
Consulta DevTools.
Condiciones de parada
Go y Java devuelven un
StopCondition; C# devuelve un Func<StopState, (bool Stop, string Reason)>; PHP devuelve un callable; Ruby devuelve una lambda. Rust no tiene condiciones de parada, solo el límite de pasos. Consulta Condiciones de parada.
Ejecuta y continúa
Ejecutar y continuar devuelven un resultado de ejecución: un
Promise<AgentRunResult> en TypeScript, (RunResult, error) en Go, Task<RunResult> en C#, Result<RunResult, AgentError> en Rust y el resultado de ejecución directamente en los demás. Los métodos de streaming devuelven un resultado de stream de inmediato.
Opciones de ejecución
PHP y Ruby las reciben como argumentos con nombre o con palabra clave; elRunOptions de Java es un record posicional en el orden input, client, context, model, preset, maxSteps, modelRetry, toolExecution, onEvent, devtools, seguido de un state opcional.
El
run() de Python también acepta stop_when, pero lo ignora; establece las condiciones de parada en la definición. El stream() de PHP y el stream de Ruby solo reciben input, client, context y state. Rust crea los valores predeterminados con RunOptions::new(input).
Opciones de continuación
Las opciones de continuación aceptan las sustituciones de ejecución anteriores, más:
El orden del
ContinueOptions de Java es run, client, context, model, preset, maxSteps, humanInput, modelRetry, toolExecution, onEvent, devtools, después approvals, rejections, toolOutputs y después runId, state. Además de esta forma de 16 argumentos, tiene constructores que reciben solo los 11 primeros o los 14 primeros; el resto toma listas vacías o null por defecto. Rust crea los valores predeterminados con ContinueOptions::new(result).
Resultado del stream
Los consumidores reproducen desde el principio, así que varios pueden leer la misma ejecución. Su comportamiento varía:
Resultado de la ejecución
El tipo es
AgentRunResult en TypeScript y Python y RunResult en los demás. TypeScript añade stepResults (resultados de pasos normalizados) e items (mensajes, razonamiento, actividad de herramientas, errores y salida final, en orden; consulta Elementos). En Rust, output es un serde_json::Value, y RunResult, RunRecord, RunStep, Message, ToolCall, HumanPause, PendingToolCall, ToolDecision, ToolOutput y UsageSummary se serializan con Serde.
Registro de la ejecución
El
RunRecord de Rust también guarda el modelo efectivo y el límite de pasos. TypeScript añade errorDetails con los detalles del error del gateway.
Los estados de ejecución son queued, running, waiting_for_tools, waiting_for_human, completed, stopped y failed. TypeScript añade cancelled.
Registro de paso
El tipo es
RunStep en todos los lenguajes salvo TypeScript y Python (AgentStepRecord).
Resumen de uso
inputTokens, outputTokens, cachedTokens, totalTokens, cost (TypeScript, Java); input_tokens, output_tokens, cached_tokens, total_tokens, cost (claves de Python, PHP y Ruby, Rust); InputTokens, OutputTokens, CachedTokens, TotalTokens, Cost (Go, C#). El tipo es AgentUsageSummary en TypeScript y Python y UsageSummary en Go, C#, Java y Rust. PHP y Ruby usan un array o un Hash. Consulta Observabilidad para ver las salvedades sobre cost.
Pausas y decisiones
Los nombres de los campos siguen el estilo de cada lenguaje:
toolCallId (TypeScript, PHP, Java), tool_call_id (Python, Ruby, Rust), ToolCallID (Go) y ToolCallId (C#). El ToolDecision de Rust solo sirve para aprobar. Consulta Estado y aprobación.
Contexto de ejecución que reciben las herramientas
Accesor de estado
Clientes del modelo
Implementa un cliente del modelo para enviar los turnos del modelo por otro transporte o para envolver el cliente de gateway.
En Rust,
ModelRequest contiene el ID del agente, el modelo efectivo, las instrucciones, los mensajes actuales, las especificaciones de las herramientas (ToolSpec: id, description, parameters en JSON Schema) y el contexto de la aplicación. ModelResponse contiene message, usage, request_id, provider, model y finish_reason. Message tiene role, content, tool_calls, tool_call_id, name e is_error, con los constructores Message::user(content) y Message::assistant(content); ToolCall tiene id, name e input en JSON.
Eventos y errores
TypeScript también exporta
agentErrorIsRetryable(), agentRetryAfterMs() y agentErrorIsContextOverflow() para clasificar errores, repairToolHistory(messages) para responder a las llamadas a herramientas que quedaron sin resultado y descartar los resultados que no responden a ninguna llamada, y truncateToolOutput(text, limit) para conservar el principio y el final de un texto largo con un aviso de lo que se ha recortado. Consulta Hooks del ciclo de vida y Eventos y errores.