Passer au contenu principal

Aperçu

Le Claude Agent SDK prend en charge deux modes d’entrée distincts pour interagir avec les agents :
  • Mode Streaming Input (Par défaut et recommandé) - Une session persistante et interactive
  • Single Message Input - Des requêtes ponctuelles qui utilisent l’état de la session et la reprise
Ce guide explique les différences, les avantages et les cas d’usage de chaque mode pour vous aider à choisir la bonne approche pour votre application.

Mode Streaming Input (Recommandé)

Le mode streaming input est la façon préférée d’utiliser le Claude Agent SDK. 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 accepte les entrées utilisateur, gère les interruptions, affiche les demandes de permission et gère la gestion de session.

Fonctionnement

Avantages

Téléchargements d'images

Joignez des images directement aux messages pour l’analyse et la compréhension visuelles

Messages en file d'attente

Envoyez plusieurs messages qui se traitent séquentiellement, avec la possibilité d’interrompre

Intégration d'outils

Accès complet à tous les outils et serveurs MCP personnalisés pendant la session

Retours en temps réel

Voyez les réponses au fur et à mesure qu’elles sont générées, pas seulement les résultats finaux

Persistance du contexte

Maintenez le contexte de la conversation sur plusieurs tours naturellement

Exemple d’implémentation

import { query, type SDKUserMessage } from "@anthropic-ai/claude-agent-sdk";
import { readFile } from "fs/promises";

async function* generateMessages(): AsyncGenerator<SDKUserMessage> {
  // First message
  yield {
    type: "user",
    message: {
      role: "user",
      content: "Analyze this codebase for security issues"
    },
    parent_tool_use_id: null
  };

  // Wait for conditions or user input
  await new Promise((resolve) => setTimeout(resolve, 2000));

  // Follow-up with image
  yield {
    type: "user",
    message: {
      role: "user",
      content: [
        {
          type: "text",
          text: "Review this architecture diagram"
        },
        {
          type: "image",
          source: {
            type: "base64",
            media_type: "image/png",
            data: await readFile("diagram.png", "base64")
          }
        }
      ]
    },
    parent_tool_use_id: null
  };
}

// Process streaming responses
for await (const message of query({
  prompt: generateMessages(),
  options: {
    maxTurns: 10,
    allowedTools: ["Read", "Grep"]
  }
})) {
  if (message.type === "result" && message.subtype === "success") {
    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 ou de méthodes de contrôle en milieu de session
  • 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
  • Les conversations multi-tours naturelles

Exemple d’implémentation

import { query } from "@anthropic-ai/claude-agent-sdk";

// Simple one-shot query
for await (const message of query({
  prompt: "Explain the authentication flow",
  options: {
    maxTurns: 1,
    allowedTools: ["Read", "Grep"]
  }
})) {
  if (message.type === "result" && message.subtype === "success") {
    console.log(message.result);
  }
}

// Continue conversation with session management
for await (const message of query({
  prompt: "Now explain the authorization process",
  options: {
    continue: true,
    maxTurns: 1
  }
})) {
  if (message.type === "result" && message.subtype === "success") {
    console.log(message.result);
  }
}