--output-format
lorsqu’elle est utilisée avec --print
. Ces formats incluent des formats structurés pour un usage programmatique (json
, stream-json
) et un format texte simplifié pour un suivi de progression lisible.
Le format par défaut de
--output-format
est stream-json
. Cette option n’est valide que lors de l’impression (--print
) ou lorsque le mode impression est déduit (stdout non TTY ou stdin acheminé via un pipe).Format JSON
json
émet un seul objet JSON (suivi d’un saut de ligne) lorsque l’exécution se termine avec succès. Les deltas et les événements d’outils ne sont pas émis ; le texte est agrégé dans le résultat final.
En cas d’échec, le processus se termine avec un code non nul et écrit un message d’erreur sur stderr. Aucun objet JSON valide n’est émis en cas d’échec.
Réponse en cas de succès
Champ | Description |
---|---|
type | Toujours "result" pour les résultats terminaux |
subtype | Toujours "success" pour les exécutions réussies |
is_error | Toujours false pour les réponses réussies |
duration_ms | Durée totale d’exécution en millisecondes |
duration_api_ms | Durée de la requête API en millisecondes (actuellement égale à duration_ms ) |
result | Texte complet de la réponse de l’assistant (concaténation de tous les deltas de texte) |
session_id | Identifiant de session unique |
request_id | Identifiant de requête optionnel (peut être omis) |
Format JSON en flux
stream-json
émet du JSON délimité par des sauts de ligne (NDJSON). Chaque ligne contient un seul objet JSON représentant un événement en temps réel pendant l’exécution.
Le flux se termine par un événement terminal result
en cas de succès. En cas d’échec, le processus se termine avec un code non nul et le flux peut s’interrompre plus tôt sans événement terminal ; un message d’erreur est écrit sur stderr.
Types d’événements
Initialisation du système
Des champs supplémentaires comme
tools
et mcp_servers
pourront être ajoutés à cet événement.Message utilisateur
Delta de texte de l’assistant
Concatène toutes les valeurs
message.content[].text
dans l’ordre pour reconstruire la réponse complète de l’assistant.Événements d’appel d’outil
Types d’appels d’outil
- Démarré :
tool_call.readToolCall.args
contient{ "path": "file.txt" }
- Terminé :
tool_call.readToolCall.result.success
contient les métadonnées et le contenu du fichier
- Démarré :
tool_call.writeToolCall.args
contient{ "path": "file.txt", "fileText": "content...", "toolCallId": "id" }
- Terminé :
tool_call.writeToolCall.result.success
contient{ "path": "/absolute/path", "linesCreated": 19, "fileSize": 942 }
- Peuvent utiliser la structure
tool_call.function
avec{ "name": "tool_name", "arguments": "..." }
Résultat final
Séquence d’exemple
Format texte
text
fournit un flux simplifié et lisible des actions de l’agent. Plutôt que des événements JSON détaillés, il affiche des descriptions textuelles concises de ce que l’agent fait en temps réel.
Ce format est utile pour suivre la progression de l’agent sans le coût supplémentaire de l’analyse de données structurées, ce qui le rend idéal pour la journalisation, le débogage ou un simple suivi de progression.
Exemple de sortie
Notes d’implémentation
- Chaque événement est émis sur une seule ligne terminée par
\n
- Les événements
thinking
sont masqués en mode impression et n’apparaissent dans aucun des formats de sortie - Des champs peuvent être ajoutés au fil du temps de manière rétrocompatible (les consommateurs doivent ignorer les champs inconnus)
- Le format en streaming fournit des mises à jour en temps réel, tandis que le format JSON attend la fin avant de produire les résultats
- Concatène tous les deltas du message
assistant
pour reconstituer la réponse complète - Les IDs d’appel d’outil peuvent être utilisés pour corréler les événements de début et de fin
- Les IDs de session restent constants tout au long d’une exécution unique de l’agent