Entrée en Streaming
Aperçu
Le SDK Claude Agent prend en charge deux modes d'entrée distincts pour interagir avec les agents :
- Mode d'Entrée en Streaming (Par défaut et recommandé) - Une session interactive persistante
- Entrée de Message Unique - Requêtes ponctuelles qui utilisent l'état de session et la reprise
Ce guide explique les différences, les avantages et les cas d'usage pour chaque mode afin de vous aider à choisir la bonne approche pour votre application.
Mode d'Entrée en Streaming (Recommandé)
Le mode d'entrée en streaming est la façon préférée d'utiliser le SDK Claude Agent. Il fournit un accès complet aux capacités de l'agent et permet des expériences riches et interactives.
Il permet à l'agent de fonctionner comme un processus de longue durée qui reçoit les entrées utilisateur, gère les interruptions, fait remonter les demandes de permission et gère la gestion de session.
Comment ça fonctionne
%%{init: {"theme": "base", "themeVariables": {"edgeLabelBackground": "#F0F0EB", "lineColor": "#91918D", "primaryColor": "#F0F0EB", "primaryTextColor": "#191919", "primaryBorderColor": "#D9D8D5", "secondaryColor": "#F5E6D8", "tertiaryColor": "#CC785C", "noteBkgColor": "#FAF0E6", "noteBorderColor": "#91918D"}, "sequence": {"actorMargin": 50, "width": 150, "height": 65, "boxMargin": 10, "boxTextMargin": 5, "noteMargin": 10, "messageMargin": 35}}}%%
sequenceDiagram
participant App as Votre Application
participant Agent as Claude Agent
participant Tools as Outils/Hooks
participant FS as Environnement/<br/>Système de Fichiers
App->>Agent: Initialiser avec AsyncGenerator
activate Agent
App->>Agent: Yield Message 1
Agent->>Tools: Exécuter les outils
Tools->>FS: Lire les fichiers
FS-->>Tools: Contenu des fichiers
Tools->>FS: Écrire/Éditer les fichiers
FS-->>Tools: Succès/Erreur
Agent-->>App: Streamer la réponse partielle
Agent-->>App: Streamer plus de contenu...
Agent->>App: Compléter le Message 1
App->>Agent: Yield Message 2 + Image
Agent->>Tools: Traiter l'image et exécuter
Tools->>FS: Accéder au système de fichiers
FS-->>Tools: Résultats des opérations
Agent-->>App: Streamer la réponse 2
App->>Agent: Mettre en file d'attente le Message 3
App->>Agent: Interrompre/Annuler
Agent->>App: Gérer l'interruption
Note over App,Agent: La session reste active
Note over Tools,FS: État persistant du système<br/>de fichiers maintenu
deactivate AgentAvantages
Téléchargements d'Images
Joindre des images directement aux messages pour l'analyse visuelle et la compréhension
Messages en File d'Attente
Envoyer plusieurs messages qui se traitent séquentiellement, avec possibilité d'interruption
Intégration d'Outils
Accès complet à tous les outils et serveurs MCP personnalisés pendant la session
Support des Hooks
Utiliser les hooks de cycle de vie pour personnaliser le comportement à différents points
Retour en Temps Réel
Voir les réponses au fur et à mesure qu'elles sont générées, pas seulement les résultats finaux
Persistance du Contexte
Maintenir le contexte de conversation à travers plusieurs tours naturellement
Exemple d'Implémentation
import { query } from "@anthropic-ai/claude-agent-sdk";
import { readFileSync } from "fs";
async function* generateMessages() {
// Premier message
yield {
type: "user" as const,
message: {
role: "user" as const,
content: "Analyser cette base de code pour les problèmes de sécurité"
}
};
// Attendre les conditions ou l'entrée utilisateur
await new Promise(resolve => setTimeout(resolve, 2000));
// Suivi avec image
yield {
type: "user" as const,
message: {
role: "user" as const,
content: [
{
type: "text",
text: "Examiner ce diagramme d'architecture"
},
{
type: "image",
source: {
type: "base64",
media_type: "image/png",
data: readFileSync("diagram.png", "base64")
}
}
]
}
};
}
// Traiter les réponses en streaming
for await (const message of query({
prompt: generateMessages(),
options: {
maxTurns: 10,
allowedTools: ["Read", "Grep"]
}
})) {
if (message.type === "result") {
console.log(message.result);
}
}Entrée de Message Unique
L'entrée de message unique est plus simple mais plus limitée.
Quand Utiliser l'Entrée de Message Unique
Utilisez l'entrée de message unique quand :
- Vous avez besoin d'une réponse ponctuelle
- Vous n'avez pas besoin de pièces jointes d'images, de hooks, etc.
- Vous devez opérer dans un environnement sans état, comme une fonction lambda
Limitations
Le mode d'entrée de message unique ne prend pas en charge :
- Les pièces jointes d'images directes dans les messages
- La mise en file d'attente dynamique de messages
- L'interruption en temps réel
- L'intégration de hooks
- Les conversations multi-tours naturelles
Exemple d'Implémentation
import { query } from "@anthropic-ai/claude-agent-sdk";
// Requête ponctuelle simple
for await (const message of query({
prompt: "Expliquer le flux d'authentification",
options: {
maxTurns: 1,
allowedTools: ["Read", "Grep"]
}
})) {
if (message.type === "result") {
console.log(message.result);
}
}
// Continuer la conversation avec gestion de session
for await (const message of query({
prompt: "Maintenant expliquer le processus d'autorisation",
options: {
continue: true,
maxTurns: 1
}
})) {
if (message.type === "result") {
console.log(message.result);
}
}