Input Streaming
Gambaran Umum
Claude Agent SDK mendukung dua mode input yang berbeda untuk berinteraksi dengan agen:
- Mode Input Streaming (Default & Direkomendasikan) - Sesi interaktif yang persisten
- Input Pesan Tunggal - Query sekali jalan yang menggunakan state sesi dan melanjutkan
Panduan ini menjelaskan perbedaan, manfaat, dan kasus penggunaan untuk setiap mode untuk membantu Anda memilih pendekatan yang tepat untuk aplikasi Anda.
Mode Input Streaming (Direkomendasikan)
Mode input streaming adalah cara yang disukai untuk menggunakan Claude Agent SDK. Ini menyediakan akses penuh ke kemampuan agen dan memungkinkan pengalaman interaktif yang kaya.
Ini memungkinkan agen untuk beroperasi sebagai proses yang hidup lama yang menerima input pengguna, menangani interupsi, menampilkan permintaan izin, dan menangani manajemen sesi.
Cara Kerjanya
%%{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 Your Application
participant Agent as Claude Agent
participant Tools as Tools/Hooks
participant FS as Environment/<br/>File System
App->>Agent: Initialize with AsyncGenerator
activate Agent
App->>Agent: Yield Message 1
Agent->>Tools: Execute tools
Tools->>FS: Read files
FS-->>Tools: File contents
Tools->>FS: Write/Edit files
FS-->>Tools: Success/Error
Agent-->>App: Stream partial response
Agent-->>App: Stream more content...
Agent->>App: Complete Message 1
App->>Agent: Yield Message 2 + Image
Agent->>Tools: Process image & execute
Tools->>FS: Access filesystem
FS-->>Tools: Operation results
Agent-->>App: Stream response 2
App->>Agent: Queue Message 3
App->>Agent: Interrupt/Cancel
Agent->>App: Handle interruption
Note over App,Agent: Session stays alive
Note over Tools,FS: Persistent file system<br/>state maintained
deactivate AgentManfaat
Upload Gambar
Lampirkan gambar langsung ke pesan untuk analisis visual dan pemahaman
Pesan Antrian
Kirim beberapa pesan yang diproses secara berurutan, dengan kemampuan untuk menginterupsi
Integrasi Tool
Akses penuh ke semua tool dan server MCP kustom selama sesi
Dukungan Hooks
Gunakan lifecycle hooks untuk menyesuaikan perilaku di berbagai titik
Umpan Balik Real-time
Lihat respons saat dibuat, bukan hanya hasil akhir
Persistensi Konteks
Pertahankan konteks percakapan di beberapa giliran secara alami
Contoh Implementasi
import { query } from "@anthropic-ai/claude-agent-sdk";
import { readFileSync } from "fs";
async function* generateMessages() {
// Pesan pertama
yield {
type: "user" as const,
message: {
role: "user" as const,
content: "Analisis codebase ini untuk masalah keamanan"
}
};
// Tunggu kondisi atau input pengguna
await new Promise(resolve => setTimeout(resolve, 2000));
// Tindak lanjut dengan gambar
yield {
type: "user" as const,
message: {
role: "user" as const,
content: [
{
type: "text",
text: "Tinjau diagram arsitektur ini"
},
{
type: "image",
source: {
type: "base64",
media_type: "image/png",
data: readFileSync("diagram.png", "base64")
}
}
]
}
};
}
// Proses respons streaming
for await (const message of query({
prompt: generateMessages(),
options: {
maxTurns: 10,
allowedTools: ["Read", "Grep"]
}
})) {
if (message.type === "result") {
console.log(message.result);
}
}Input Pesan Tunggal
Input pesan tunggal lebih sederhana tetapi lebih terbatas.
Kapan Menggunakan Input Pesan Tunggal
Gunakan input pesan tunggal ketika:
- Anda memerlukan respons sekali jalan
- Anda tidak memerlukan lampiran gambar, hooks, dll.
- Anda perlu beroperasi dalam lingkungan stateless, seperti fungsi lambda
Keterbatasan
Mode input pesan tunggal tidak mendukung:
- Lampiran gambar langsung dalam pesan
- Antrian pesan dinamis
- Interupsi real-time
- Integrasi hook
- Percakapan multi-giliran yang alami
Contoh Implementasi
import { query } from "@anthropic-ai/claude-agent-sdk";
// Query sekali jalan sederhana
for await (const message of query({
prompt: "Jelaskan alur autentikasi",
options: {
maxTurns: 1,
allowedTools: ["Read", "Grep"]
}
})) {
if (message.type === "result") {
console.log(message.result);
}
}
// Lanjutkan percakapan dengan manajemen sesi
for await (const message of query({
prompt: "Sekarang jelaskan proses otorisasi",
options: {
continue: true,
maxTurns: 1
}
})) {
if (message.type === "result") {
console.log(message.result);
}
}