Créer un agent
Crée un agent à partir d’une définition. La limite d’étapes de la définition s’applique à chaque appel run ou continue.Champs de la définition
Rust construit la définition avec des méthodes plutôt qu’avec des champs :AgentDefinition::new(id, model), puis .instructions(text), .tool(tool) (une fois par outil), .max_steps(limit), .model_retries(count, backoff) et .human_review(callback). L’AgentDefinition de Java est un record avec des constructeurs à 10, 13 et 19 arguments.
En TypeScript,
model, instructions et les valeurs d’échantillonnage peuvent être fixes ou dynamiques.
Définir un outil
Outils liste tous les champs d’un outil.
Se connecter à Phaseo Gateway
Sorties et nouvelles tentatives liste les options du client dans chaque langage.
Capturer les exécutions en local
Voir DevTools.
Conditions d’arrêt
Go et Java renvoient une
StopCondition ; C# renvoie une Func<StopState, (bool Stop, string Reason)> ; PHP renvoie un callable ; Ruby renvoie une lambda. Rust n’a pas de conditions d’arrêt, seulement la limite d’étapes. Voir Conditions d’arrêt.
Exécuter et reprendre
Run et continue renvoient un résultat d’exécution : une
Promise<AgentRunResult> en TypeScript, (RunResult, error) en Go, Task<RunResult> en C#, Result<RunResult, AgentError> en Rust, et directement le résultat d’exécution ailleurs. Les méthodes de streaming renvoient immédiatement un résultat de flux.
Options d’exécution
PHP et Ruby les prennent en arguments nommés ; leRunOptions de Java est un record positionnel dans l’ordre input, client, context, model, preset, maxSteps, modelRetry, toolExecution, onEvent, devtools, puis un state facultatif.
Le
run() de Python accepte aussi stop_when mais l’ignore ; définissez les conditions d’arrêt sur la définition. Le stream() de PHP et le stream de Ruby ne prennent que input, client, context et state. Rust crée les valeurs par défaut avec RunOptions::new(input).
Options de reprise
Les options de reprise acceptent les surcharges d’exécution ci-dessus, plus :
L’ordre du
ContinueOptions de Java est run, client, context, model, preset, maxSteps, humanInput, modelRetry, toolExecution, onEvent, devtools, puis approvals, rejections, toolOutputs, puis runId, state. En plus de cette forme à 16 arguments, il existe des constructeurs qui ne prennent que les 11 ou les 14 premiers arguments ; les autres valent par défaut des listes vides ou null. Rust crée les valeurs par défaut avec ContinueOptions::new(result).
Résultat de flux
Les consommateurs rejouent depuis le début ; plusieurs peuvent donc lire la même exécution. Leur comportement diffère :
Résultat d’exécution
Le type est
AgentRunResult en TypeScript et Python et RunResult ailleurs. TypeScript ajoute stepResults (résultats d’étapes normalisés) et items (messages, raisonnement, activité des outils, erreurs et sortie finale, dans l’ordre ; voir Éléments). En Rust, output est une serde_json::Value, et RunResult, RunRecord, RunStep, Message, ToolCall, HumanPause, PendingToolCall, ToolDecision, ToolOutput et UsageSummary se sérialisent avec Serde.
Enregistrement de l’exécution
Le
RunRecord de Rust stocke aussi le modèle effectif et la limite d’étapes. TypeScript ajoute errorDetails avec les détails des erreurs du gateway.
Les statuts d’exécution sont queued, running, waiting_for_tools, waiting_for_human, completed, stopped et failed. TypeScript ajoute cancelled.
Enregistrement d’étape
Le type est
RunStep partout sauf en TypeScript et Python (AgentStepRecord).
Récapitulatif de l’utilisation
inputTokens, outputTokens, cachedTokens, totalTokens, cost (TypeScript, Java) ; input_tokens, output_tokens, cached_tokens, total_tokens, cost (clés Python, PHP et Ruby, Rust) ; InputTokens, OutputTokens, CachedTokens, TotalTokens, Cost (Go, C#). Le type est AgentUsageSummary en TypeScript et Python et UsageSummary en Go, C#, Java et Rust. PHP et Ruby utilisent un tableau ou un Hash. Voir Observabilité pour les mises en garde sur cost.
Pauses et décisions
Les noms de champs suivent le style de chaque langage :
toolCallId (TypeScript, PHP, Java), tool_call_id (Python, Ruby, Rust), ToolCallID (Go) et ToolCallId (C#). Le ToolDecision de Rust ne sert qu’à l’approbation. Voir État et approbation.
Contexte d’exécution passé aux outils
Accesseur d’état
Clients de modèle
Implémentez un client de modèle pour envoyer les tours du modèle par un autre transport, ou pour encapsuler le client gateway.
En Rust,
ModelRequest contient l’ID de l’agent, le modèle effectif, les instructions, les messages courants, les spécifications des outils (ToolSpec : id, description, parameters en JSON Schema) et le contexte applicatif. ModelResponse contient message, usage, request_id, provider, model et finish_reason. Message a role, content, tool_calls, tool_call_id, name et is_error, avec les constructeurs Message::user(content) et Message::assistant(content) ; ToolCall a id, name et input en JSON.
Événements et erreurs
TypeScript exporte aussi
agentErrorIsRetryable(), agentRetryAfterMs() et agentErrorIsContextOverflow() pour classer les erreurs, repairToolHistory(messages) pour répondre aux appels d’outils restés sans résultat et supprimer les résultats qui ne répondent à aucun appel, et truncateToolOutput(text, limit) pour garder le début et la fin d’un texte long avec un avis indiquant ce qui a été coupé. Voir Hooks de cycle de vie et Événements et erreurs.