Zum Hauptinhalt springen

Übersicht

Das Claude Agent SDK unterstützt zwei unterschiedliche Eingabemodi für die Interaktion mit Agenten:
  • Streaming-Eingabemodus (Standard & Empfohlen) - Eine persistente, interaktive Sitzung
  • Einzelne Nachricht-Eingabe - One-Shot-Abfragen, die Sitzungszustand und Wiederaufnahme verwenden
Dieser Leitfaden erklärt die Unterschiede, Vorteile und Anwendungsfälle für jeden Modus, um Ihnen bei der Wahl des richtigen Ansatzes für Ihre Anwendung zu helfen.

Streaming-Eingabemodus (Empfohlen)

Der Streaming-Eingabemodus ist die bevorzugte Methode zur Verwendung des Claude Agent SDK. Er bietet vollständigen Zugriff auf die Fähigkeiten des Agenten und ermöglicht umfangreiche, interaktive Erfahrungen. Er ermöglicht es dem Agenten, als langlebiger Prozess zu fungieren, der Benutzereingaben entgegennimmt, Unterbrechungen verarbeitet, Berechtigungsanfragen anzeigt und die Sitzungsverwaltung übernimmt.

Funktionsweise

Vorteile

Bild-Uploads

Bilder direkt an Nachrichten anhängen für visuelle Analyse und Verständnis

Warteschlangen-Nachrichten

Mehrere Nachrichten senden, die sequenziell verarbeitet werden, mit der Möglichkeit zu unterbrechen

Tool-Integration

Vollständiger Zugriff auf alle Tools und benutzerdefinierten MCP-Server während der Sitzung

Echtzeit-Feedback

Sehen Sie Antworten, während sie generiert werden, nicht nur die endgültigen Ergebnisse

Kontext-Persistenz

Behalten Sie den Gesprächskontext über mehrere Umdrehungen hinweg natürlich bei

Implementierungsbeispiel

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);
  }
}

Einzelne Nachricht-Eingabe

Die Eingabe einer einzelnen Nachricht ist einfacher, aber begrenzter.

Wann sollte die Eingabe einer einzelnen Nachricht verwendet werden

Verwenden Sie die Eingabe einer einzelnen Nachricht, wenn:
  • Sie eine One-Shot-Antwort benötigen
  • Sie keine Bild-Anhänge oder Mid-Session-Kontrollmethoden benötigen
  • Sie in einer zustandslosen Umgebung arbeiten müssen, z. B. in einer Lambda-Funktion

Einschränkungen

Der Modus für die Eingabe einer einzelnen Nachricht unterstützt nicht:
  • Direkte Bild-Anhänge in Nachrichten
  • Dynamische Nachrichtenwarteschlangen
  • Echtzeit-Unterbrechung
  • Natürliche Multi-Turn-Gespräche

Implementierungsbeispiel

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);
  }
}