Crie um agente
Cria um agente a partir de uma definição. O limite de etapas da definição vale para cada chamada de run ou de continuação.Campos da definição
O Rust monta a definição com métodos em vez de campos:AgentDefinition::new(id, model), depois .instructions(text), .tool(tool) (uma vez por ferramenta), .max_steps(limit), .model_retries(count, backoff) e .human_review(callback). O AgentDefinition do Java é um record com construtores de 10, 13 e 19 argumentos.
No TypeScript,
model, instructions e os valores de amostragem podem ser fixos ou dinâmicos.
Defina uma ferramenta
Ferramentas lista todos os campos de ferramenta.
Conecte-se ao Phaseo Gateway
Saídas e novas tentativas lista as opções do cliente em cada linguagem.
Capture execuções localmente
Veja DevTools.
Condições de parada
Go e Java retornam um
StopCondition; C# retorna um Func<StopState, (bool Stop, string Reason)>; PHP retorna um callable; Ruby retorna uma lambda. O Rust não tem condições de parada, só o limite de etapas. Veja Condições de parada.
Execute e continue
Executar e continuar retornam um resultado de execução: uma
Promise<AgentRunResult> no TypeScript, (RunResult, error) no Go, Task<RunResult> no C#, Result<RunResult, AgentError> no Rust e o próprio resultado da execução nas demais. Os métodos de stream retornam um resultado de stream imediatamente.
Opções de execução
PHP e Ruby as recebem como argumentos nomeados; oRunOptions do Java é um record posicional na ordem input, client, context, model, preset, maxSteps, modelRetry, toolExecution, onEvent, devtools, seguido de um state opcional.
O
run() do Python também aceita stop_when, mas o ignora; defina as condições de parada na definição. O stream() do PHP e o stream do Ruby só recebem input, client, context e state. O Rust cria os padrões com RunOptions::new(input).
Opções de continuação
As opções de continuação aceitam as substituições de execução acima, mais:
A ordem do
ContinueOptions do Java é run, client, context, model, preset, maxSteps, humanInput, modelRetry, toolExecution, onEvent, devtools, depois approvals, rejections, toolOutputs e depois runId, state. Além dessa forma de 16 argumentos, há construtores que recebem só os 11 primeiros ou os 14 primeiros argumentos; o restante assume listas vazias ou null por padrão. O Rust cria os padrões com ContinueOptions::new(result).
Resultado do stream
Os consumidores reproduzem desde o início, então vários podem ler a mesma execução. O comportamento deles varia:
Resultado da execução
O tipo é
AgentRunResult no TypeScript e no Python e RunResult nas demais. O TypeScript adiciona stepResults (resultados normalizados das etapas) e items (mensagens, raciocínio, atividade de ferramentas, erros e saída final em ordem; veja Itens). No Rust, output é um serde_json::Value, e RunResult, RunRecord, RunStep, Message, ToolCall, HumanPause, PendingToolCall, ToolDecision, ToolOutput e UsageSummary são serializados com Serde.
Registro da execução
O
RunRecord do Rust também guarda o modelo efetivo e o limite de etapas. O TypeScript adiciona errorDetails com os detalhes do erro do gateway.
Os status de execução são queued, running, waiting_for_tools, waiting_for_human, completed, stopped e failed. O TypeScript adiciona cancelled.
Registro da etapa
O tipo é
RunStep em todas as linguagens, exceto TypeScript e Python (AgentStepRecord).
Resumo de uso
inputTokens, outputTokens, cachedTokens, totalTokens, cost (TypeScript, Java); input_tokens, output_tokens, cached_tokens, total_tokens, cost (chaves no Python, PHP e Ruby, e Rust); InputTokens, OutputTokens, CachedTokens, TotalTokens, Cost (Go, C#). O tipo é AgentUsageSummary no TypeScript e no Python e UsageSummary no Go, C#, Java e Rust. PHP e Ruby usam um array ou um Hash. Veja em Observabilidade as ressalvas sobre cost.
Pausas e decisões
Os nomes dos campos seguem o estilo de cada linguagem:
toolCallId (TypeScript, PHP, Java), tool_call_id (Python, Ruby, Rust), ToolCallID (Go) e ToolCallId (C#). O ToolDecision do Rust serve só para aprovação. Veja Estado e aprovação.
Contexto de runtime passado às ferramentas
Acessor de estado
Clientes de modelo
Implemente um cliente de modelo para enviar os turnos do modelo por outro transporte ou para envolver o cliente de gateway.
No Rust,
ModelRequest guarda o ID do agente, o modelo efetivo, as instruções, as mensagens atuais, as especificações das ferramentas (ToolSpec: id, description, parameters em JSON Schema) e o contexto do aplicativo. ModelResponse guarda message, usage, request_id, provider, model e finish_reason. Message tem role, content, tool_calls, tool_call_id, name e is_error, com os construtores Message::user(content) e Message::assistant(content); ToolCall tem id, name e input em JSON.
Eventos e erros
O TypeScript também exporta
agentErrorIsRetryable(), agentRetryAfterMs() e agentErrorIsContextOverflow() para classificar erros, repairToolHistory(messages) para responder a chamadas de ferramenta que ficaram sem resultado e descartar resultados que não respondem a nenhuma chamada, e truncateToolOutput(text, limit) para manter o início e o fim de um texto longo com um aviso do que foi cortado. Veja Hooks do ciclo de vida e Eventos e erros.