Saltar al contenido principal

Descripción General

El Claude Agent SDK admite dos modos de entrada distintos para interactuar con agentes:
  • Modo de Entrada de Streaming (Predeterminado y Recomendado) - Una sesión persistente e interactiva
  • Entrada de Mensaje Único - Consultas de una sola vez que utilizan el estado de la sesión y la reanudación
Esta guía explica las diferencias, beneficios y casos de uso para cada modo para ayudarle a elegir el enfoque correcto para su aplicación.

Modo de Entrada de Streaming (Recomendado)

El modo de entrada de streaming es la forma preferida de usar el Claude Agent SDK. Proporciona acceso completo a las capacidades del agente y permite experiencias ricas e interactivas. Permite que el agente funcione como un proceso de larga duración que recibe entrada del usuario, maneja interrupciones, muestra solicitudes de permisos y gestiona la sesión.

Cómo Funciona

Beneficios

Cargas de Imágenes

Adjunte imágenes directamente a los mensajes para análisis visual y comprensión

Mensajes en Cola

Envíe múltiples mensajes que se procesen secuencialmente, con capacidad de interrumpir

Integración de Herramientas

Acceso completo a todas las herramientas y servidores MCP personalizados durante la sesión

Retroalimentación en Tiempo Real

Vea las respuestas mientras se generan, no solo los resultados finales

Persistencia de Contexto

Mantenga el contexto de la conversación en múltiples turnos de forma natural

Ejemplo de Implementación

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

Entrada de Mensaje Único

La entrada de mensaje único es más simple pero más limitada.

Cuándo Usar Entrada de Mensaje Único

Use entrada de mensaje único cuando:
  • Necesite una respuesta de una sola vez
  • No necesite adjuntos de imágenes ni métodos de control a mitad de sesión
  • Necesite operar en un entorno sin estado, como una función lambda

Limitaciones

El modo de entrada de mensaje único no admite:
  • Adjuntos de imágenes directas en mensajes
  • Encolamiento dinámico de mensajes
  • Interrupción en tiempo real
  • Conversaciones naturales de múltiples turnos

Ejemplo de Implementación

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