6 6
7> Bangun agen AI produksi dengan Claude Code sebagai perpustakaan7> Bangun agen AI produksi dengan Claude Code sebagai perpustakaan
8 8
9Bangun agen AI yang secara mandiri membaca file, menjalankan perintah, mencari web, mengedit kode, dan banyak lagi. Agent SDK memberi Anda alat yang sama, loop agen, dan manajemen konteks yang mendukung Claude Code, dapat diprogram dalam Python dan TypeScript. Untuk pemikiran di balik desain harness agen, lihat [A harness for every task: dynamic workflows in Claude Code](https://claude.com/blog/a-harness-for-every-task-dynamic-workflows-in-claude-code) di blog.9Agen adalah aplikasi yang menyelesaikan tugas dengan merencanakan langkah-langkahnya sendiri dan memanggil alat yang membaca file, menjalankan perintah, atau mengedit kode. Agent SDK memberi Anda alat yang sama, [agent loop](/docs/id/agent-sdk/agent-loop), dan manajemen konteks yang mendukung Claude Code, dapat diprogram dalam Python dan TypeScript.
10 10
11<CodeGroup>11<h2 id="compare-the-agent-sdk-to-other-claude-tools">
12 ```python Python theme={null}12 Bandingkan Agent SDK dengan alat Claude lainnya
13 import asyncio
14 from claude_agent_sdk import query, ClaudeAgentOptions
15
16
17 async def main():
18 async for message in query(
19 prompt="Find and fix the bug in auth.py",
20 options=ClaudeAgentOptions(allowed_tools=["Read", "Edit", "Bash"]),
21 ):
22 print(message) # Claude reads the file, finds the bug, edits it
23
24
25 asyncio.run(main())
26 ```
27
28 ```typescript TypeScript theme={null}
29 import { query } from "@anthropic-ai/claude-agent-sdk";
30
31 for await (const message of query({
32 prompt: "Find and fix the bug in auth.ts",
33 options: { allowedTools: ["Read", "Edit", "Bash"] }
34 })) {
35 console.log(message); // Claude reads the file, finds the bug, edits it
36 }
37 ```
38</CodeGroup>
39
40Agent SDK mencakup alat bawaan untuk membaca file, menjalankan perintah, dan mengedit kode, sehingga agen Anda dapat mulai bekerja segera tanpa Anda perlu mengimplementasikan eksekusi alat. Selami panduan cepat atau jelajahi agen nyata yang dibangun dengan SDK:
41
42<CardGroup cols={2}>
43 <Card title="Panduan Cepat" icon="play" href="/id/agent-sdk/quickstart">
44 Bangun agen perbaikan bug dalam hitungan menit
45 </Card>
46
47 <Card title="Agen contoh" icon="star" href="https://github.com/anthropics/claude-agent-sdk-demos">
48 Asisten email, agen penelitian, dan banyak lagi
49 </Card>
50</CardGroup>
51
52<h2 id="get-started">
53 Memulai
54</h2>13</h2>
55 14
56<Steps>15Agent SDK, CLI, Client SDK, dan Managed Agents masing-masing sesuai dengan kebutuhan yang berbeda. Gunakan tabel untuk menemukan yang cocok dengan apa yang Anda bangun.
57 <Step title="Instal SDK">
58 <Tabs>
59 <Tab title="TypeScript">
60 ```bash theme={null}
61 npm install @anthropic-ai/claude-agent-sdk
62 ```
63 </Tab>
64
65 <Tab title="Python (uv)">
66 [uv](https://docs.astral.sh/uv/) adalah manajer paket Python yang cepat yang menangani lingkungan virtual secara otomatis:
67
68 ```bash theme={null}
69 uv init
70 uv add claude-agent-sdk
71 ```
72 </Tab>
73
74 <Tab title="Python (pip)">
75 Buat dan aktifkan lingkungan virtual, kemudian instal paket. Menginstal ke dalam lingkungan virtual menghindari kegagalan `error: externally-managed-environment` yang dikembalikan oleh Python sistem pada instalasi Debian, Ubuntu, dan Homebrew terbaru untuk `pip install` di luar venv.
76
77 Di macOS atau Linux:
78
79 ```bash theme={null}
80 python3 -m venv .venv
81 source .venv/bin/activate
82 pip install claude-agent-sdk
83 ```
84
85 Di Windows:
86
87 ```powershell theme={null}
88 py -m venv .venv
89 .venv\Scripts\Activate.ps1
90 pip install claude-agent-sdk
91 ```
92
93 Jika PowerShell memblokir `Activate.ps1` dengan kesalahan kebijakan eksekusi, jalankan `Set-ExecutionPolicy -Scope Process RemoteSigned` terlebih dahulu.
94
95 Paket Python memerlukan Python 3.10 atau lebih baru. Jika pip melaporkan `No matching distribution found for claude-agent-sdk`, interpreter Anda lebih lama dari 3.10. Jalankan `python3 --version` di macOS atau Linux, atau `py --version` di Windows, untuk memeriksa.
96 </Tab>
97 </Tabs>
98
99 <Note>
100 TypeScript SDK menggabungkan biner Claude Code asli untuk platform Anda sebagai dependensi opsional, jadi Anda tidak perlu menginstal Claude Code secara terpisah.
101 </Note>
102 </Step>
103
104 <Step title="Atur kunci API Anda">
105 Dapatkan kunci API dari [Konsol](https://platform.claude.com/), kemudian atur sebagai variabel lingkungan.
106
107 Di macOS atau Linux:
108
109 ```bash theme={null}
110 export ANTHROPIC_API_KEY=sk-ant-xxxxx
111 ```
112
113 Di Windows PowerShell:
114
115 ```powershell theme={null}
116 $env:ANTHROPIC_API_KEY = "sk-ant-xxxxx"
117 ```
118
119 SDK juga mendukung autentikasi melalui penyedia API pihak ketiga:
120
121 * **Amazon Bedrock**: atur variabel lingkungan `CLAUDE_CODE_USE_BEDROCK=1` dan konfigurasi kredensial AWS
122 * **Claude Platform on AWS**: atur `CLAUDE_CODE_USE_ANTHROPIC_AWS=1` dan `ANTHROPIC_AWS_WORKSPACE_ID`, kemudian konfigurasi kredensial AWS
123 * **Google Cloud's Agent Platform**: atur variabel lingkungan `CLAUDE_CODE_USE_VERTEX=1` dan konfigurasi kredensial Google Cloud
124 * **Microsoft Azure**: atur variabel lingkungan `CLAUDE_CODE_USE_FOUNDRY=1` dan konfigurasi kredensial Azure
125
126 Lihat panduan penyiapan untuk [Amazon Bedrock](/id/amazon-bedrock), [Claude Platform on AWS](/id/claude-platform-on-aws), [Google Cloud's Agent Platform](/id/google-vertex-ai), atau [Microsoft Foundry](/id/microsoft-foundry) untuk detail.
127
128 <Note>
129 Kecuali sebelumnya disetujui, Anthropic tidak mengizinkan pengembang pihak ketiga untuk menawarkan login claude.ai atau batas laju untuk produk mereka, termasuk agen yang dibangun di Claude Agent SDK. Silakan gunakan metode autentikasi kunci API yang dijelaskan dalam dokumen ini.
130 </Note>
131 </Step>
132 16
133 <Step title="Jalankan agen pertama Anda">17| Jika Anda... | Gunakan | Mengapa |
134 Contoh ini membuat agen yang mencantumkan file di direktori saat ini menggunakan alat bawaan.18| ---------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- |
19| Membangun agen tanpa mengimplementasikan loop alat sendiri | **Agent SDK** | Sebuah library yang menjalankan loop agen dalam proses Anda sendiri, dalam Python atau TypeScript. |
20| Melakukan pengembangan interaktif atau menjalankan tugas sekali jadi dari terminal | [**Claude Code CLI**](/docs/id/overview) | Antarmuka terminal, dibangun untuk penggunaan interaktif sehari-hari. |
21| Memanggil API secara langsung dan mengimplementasikan loop alat sendiri | [**Client SDK**](https://platform.claude.com/docs/en/api/client-sdks) | Akses langsung ke API Anthropic daripada ke Claude Code. Anda mengimplementasikan loop alat sendiri. |
22| Menjalankan agen jangka panjang atau asinkron tanpa mengelola infrastruktur sandbox atau sesi Anda sendiri | [**Managed Agents**](https://platform.claude.com/docs/en/managed-agents/overview) | REST API yang dihosting, produk terpisah dari Agent SDK. Anthropic menjalankan agen dan sandbox. |
135 23
136 <CodeGroup>24SDK tersedia sebagai library untuk Python dan TypeScript saja. Untuk menjalankan loop agen yang sama dari bahasa lain, [jalankan CLI sebagai subprocess](/docs/id/headless) dengan flag `-p` dan `--output-format json`.
137 ```python Python theme={null}
138 import asyncio
139 from claude_agent_sdk import query, ClaudeAgentOptions
140
141
142 async def main():
143 async for message in query(
144 prompt="What files are in this directory?",
145 options=ClaudeAgentOptions(allowed_tools=["Bash", "Glob"]),
146 ):
147 if hasattr(message, "result"):
148 print(message.result)
149
150
151 asyncio.run(main())
152 ```
153
154 ```typescript TypeScript theme={null}
155 import { query } from "@anthropic-ai/claude-agent-sdk";
156
157 for await (const message of query({
158 prompt: "What files are in this directory?",
159 options: { allowedTools: ["Bash", "Glob"] }
160 })) {
161 if ("result" in message) console.log(message.result);
162 }
163 ```
164 </CodeGroup>
165 </Step>
166</Steps>
167
168**Siap untuk membangun?** Ikuti [Panduan Cepat](/id/agent-sdk/quickstart) untuk membuat agen yang menemukan dan memperbaiki bug dalam hitungan menit.
169 25
170<h2 id="capabilities">26<h2 id="capabilities">
171 Kemampuan27 Kemampuan
172</h2>28</h2>
173 29
174Semua yang membuat Claude Code kuat tersedia di SDK:30Kemampuan Claude Code ini tersedia di SDK:
175
176<Tabs>
177 <Tab title="Alat bawaan">
178 Agen Anda dapat membaca file, menjalankan perintah, dan mencari basis kode langsung dari kotak. Alat kunci meliputi:
179
180 | Alat | Apa yang dilakukannya |
181 | --------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
182 | **Read** | Baca file apa pun di direktori kerja |
183 | **Write** | Buat file baru |
184 | **Edit** | Buat pengeditan presisi pada file yang ada |
185 | **Bash** | Jalankan perintah terminal, skrip, operasi git |
186 | **Monitor** | Pantau skrip latar belakang dan bereaksi terhadap setiap baris output sebagai acara |
187 | **Glob** | Temukan file berdasarkan pola (`**/*.ts`, `src/**/*.py`) |
188 | **Grep** | Cari konten file dengan regex |
189 | **WebSearch** | Cari web untuk informasi terkini |
190 | **WebFetch** | Ambil dan parsing konten halaman web |
191 | **[AskUserQuestion](/id/agent-sdk/user-input#handle-clarifying-questions)** | Tanyakan pertanyaan klarifikasi kepada pengguna dengan opsi pilihan ganda |
192
193 Contoh ini membuat agen yang mencari basis kode Anda untuk komentar TODO:
194
195 <CodeGroup>
196 ```python Python theme={null}
197 import asyncio
198 from claude_agent_sdk import query, ClaudeAgentOptions
199
200
201 async def main():
202 async for message in query(
203 prompt="Find all TODO comments and create a summary",
204 options=ClaudeAgentOptions(allowed_tools=["Read", "Glob", "Grep"]),
205 ):
206 if hasattr(message, "result"):
207 print(message.result)
208
209
210 asyncio.run(main())
211 ```
212
213 ```typescript TypeScript theme={null}
214 import { query } from "@anthropic-ai/claude-agent-sdk";
215
216 for await (const message of query({
217 prompt: "Find all TODO comments and create a summary",
218 options: { allowedTools: ["Read", "Glob", "Grep"] }
219 })) {
220 if ("result" in message) console.log(message.result);
221 }
222 ```
223 </CodeGroup>
224 </Tab>
225
226 <Tab title="Hooks">
227 Jalankan kode khusus pada titik-titik kunci dalam siklus hidup agen. SDK hooks menggunakan fungsi callback untuk memvalidasi, mencatat, memblokir, atau mengubah perilaku agen.
228
229 **Hooks yang tersedia:** `PreToolUse`, `PostToolUse`, `Stop`, `SessionStart`, `SessionEnd`, `UserPromptSubmit`, dan banyak lagi.
230
231 Contoh ini mencatat semua perubahan file ke file audit:
232
233 <CodeGroup>
234 ```python Python theme={null}
235 import asyncio
236 from datetime import datetime
237 from claude_agent_sdk import query, ClaudeAgentOptions, HookMatcher
238
239
240 async def log_file_change(input_data, tool_use_id, context):
241 file_path = input_data.get("tool_input", {}).get("file_path", "unknown")
242 with open("./audit.log", "a") as f:
243 f.write(f"{datetime.now()}: modified {file_path}\n")
244 return {}
245
246
247 async def main():
248 async for message in query(
249 prompt="Refactor utils.py to improve readability",
250 options=ClaudeAgentOptions(
251 permission_mode="acceptEdits",
252 hooks={
253 "PostToolUse": [
254 HookMatcher(matcher="Edit|Write", hooks=[log_file_change])
255 ]
256 },
257 ),
258 ):
259 if hasattr(message, "result"):
260 print(message.result)
261
262
263 asyncio.run(main())
264 ```
265
266 ```typescript TypeScript theme={null}
267 import { query, HookCallback } from "@anthropic-ai/claude-agent-sdk";
268 import { appendFile } from "fs/promises";
269
270 const logFileChange: HookCallback = async (input) => {
271 const filePath = (input as any).tool_input?.file_path ?? "unknown";
272 await appendFile("./audit.log", `${new Date().toISOString()}: modified ${filePath}\n`);
273 return {};
274 };
275
276 for await (const message of query({
277 prompt: "Refactor utils.py to improve readability",
278 options: {
279 permissionMode: "acceptEdits",
280 hooks: {
281 PostToolUse: [{ matcher: "Edit|Write", hooks: [logFileChange] }]
282 }
283 }
284 })) {
285 if ("result" in message) console.log(message.result);
286 }
287 ```
288 </CodeGroup>
289
290 [Pelajari lebih lanjut tentang hooks →](/id/agent-sdk/hooks)
291 </Tab>
292
293 <Tab title="Subagents">
294 Spawn agen khusus untuk menangani subtask yang terfokus. Agen utama Anda mendelegasikan pekerjaan, dan subagen melaporkan kembali dengan hasil.
295 31
296 Tentukan agen khusus dengan instruksi khusus. Subagen dipanggil melalui alat Agent, jadi sertakan `Agent` dalam `allowedTools` untuk auto-approve invokasi tersebut:32| Kemampuan | Apa yang dilakukannya | Pelajari lebih lanjut |
33| ---------------------------- | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
34| Alat bawaan | Baca, tulis, edit file, jalankan perintah, dan cari web | [Referensi alat](/docs/id/tools-reference) |
35| Hooks | Jalankan kode khusus pada titik-titik kunci dalam siklus hidup agen | [Hooks](/docs/id/agent-sdk/hooks) |
36| Subagents | Spawn agen khusus untuk menangani subtask yang terfokus | [Subagents](/docs/id/agent-sdk/subagents) |
37| MCP | Terhubung ke alat eksternal dan sumber data melalui Model Context Protocol | [MCP](/docs/id/agent-sdk/mcp) |
38| Izin | Kontrol alat mana yang berjalan secara otomatis, mana yang memerlukan persetujuan | [Izin](/docs/id/agent-sdk/permissions) |
39| Sesi | Pertahankan konteks di seluruh pertukaran, lanjutkan atau fork nanti | [Sesi](/docs/id/agent-sdk/sessions) |
40| Skills, commands, dan memory | Muat secara otomatis dari `.claude/` proyek Anda dan dari `~/.claude/`, sama seperti Claude Code | [Skills](/docs/id/agent-sdk/skills), [Commands](/docs/id/agent-sdk/skills#commands-in-agent-sdk-sessions), [Memory](/docs/id/agent-sdk/modifying-system-prompts), [Pemuatan konfigurasi](/docs/id/agent-sdk/claude-code-features) |
41| Plugins | Paket skills, agen, hooks, dan server MCP, dan muat mereka berdasarkan jalur lokal | [Plugins](/docs/id/agent-sdk/plugins) |
297 42
298 <CodeGroup>43<h2 id="get-started">
299 ```python Python theme={null}44 Mulai
300 import asyncio
301 from claude_agent_sdk import query, ClaudeAgentOptions, AgentDefinition
302
303
304 async def main():
305 async for message in query(
306 prompt="Use the code-reviewer agent to review this codebase",
307 options=ClaudeAgentOptions(
308 allowed_tools=["Read", "Glob", "Grep", "Agent"],
309 agents={
310 "code-reviewer": AgentDefinition(
311 description="Expert code reviewer for quality and security reviews.",
312 prompt="Analyze code quality and suggest improvements.",
313 tools=["Read", "Glob", "Grep"],
314 )
315 },
316 ),
317 ):
318 if hasattr(message, "result"):
319 print(message.result)
320
321
322 asyncio.run(main())
323 ```
324
325 ```typescript TypeScript theme={null}
326 import { query } from "@anthropic-ai/claude-agent-sdk";
327
328 for await (const message of query({
329 prompt: "Use the code-reviewer agent to review this codebase",
330 options: {
331 allowedTools: ["Read", "Glob", "Grep", "Agent"],
332 agents: {
333 "code-reviewer": {
334 description: "Expert code reviewer for quality and security reviews.",
335 prompt: "Analyze code quality and suggest improvements.",
336 tools: ["Read", "Glob", "Grep"]
337 }
338 }
339 }
340 })) {
341 if ("result" in message) console.log(message.result);
342 }
343 ```
344 </CodeGroup>
345
346 Pesan dari dalam konteks subagen mencakup bidang `parent_tool_use_id`, memungkinkan Anda melacak pesan mana yang termasuk dalam eksekusi subagen mana.
347
348 [Pelajari lebih lanjut tentang subagents →](/id/agent-sdk/subagents)
349 </Tab>
350
351 <Tab title="MCP">
352 Terhubung ke sistem eksternal melalui Model Context Protocol: database, browser, API, dan [ratusan lainnya](https://github.com/modelcontextprotocol/servers).
353
354 Contoh ini menghubungkan [server Playwright MCP](https://github.com/microsoft/playwright-mcp) untuk memberikan agen Anda kemampuan otomasi browser:
355
356 <CodeGroup>
357 ```python Python theme={null}
358 import asyncio
359 from claude_agent_sdk import query, ClaudeAgentOptions
360
361
362 async def main():
363 async for message in query(
364 prompt="Open example.com and describe what you see",
365 options=ClaudeAgentOptions(
366 mcp_servers={
367 "playwright": {"command": "npx", "args": ["@playwright/mcp@latest"]}
368 }
369 ),
370 ):
371 if hasattr(message, "result"):
372 print(message.result)
373
374
375 asyncio.run(main())
376 ```
377
378 ```typescript TypeScript theme={null}
379 import { query } from "@anthropic-ai/claude-agent-sdk";
380
381 for await (const message of query({
382 prompt: "Open example.com and describe what you see",
383 options: {
384 mcpServers: {
385 playwright: { command: "npx", args: ["@playwright/mcp@latest"] }
386 }
387 }
388 })) {
389 if ("result" in message) console.log(message.result);
390 }
391 ```
392 </CodeGroup>
393
394 [Pelajari lebih lanjut tentang MCP →](/id/agent-sdk/mcp)
395 </Tab>
396
397 <Tab title="Izin">
398 Kontrol dengan tepat alat mana yang dapat digunakan agen Anda. Izinkan operasi yang aman, blokir yang berbahaya, atau minta persetujuan untuk tindakan sensitif.
399
400 <Note>
401 Untuk prompt persetujuan interaktif dan alat `AskUserQuestion`, lihat [Tangani persetujuan dan input pengguna](/id/agent-sdk/user-input).
402 </Note>
403
404 Contoh ini membuat agen read-only yang dapat menganalisis tetapi tidak memodifikasi kode. `allowed_tools` pra-menyetujui `Read`, `Glob`, dan `Grep`.
405
406 <CodeGroup>
407 ```python Python theme={null}
408 import asyncio
409 from claude_agent_sdk import query, ClaudeAgentOptions
410
411
412 async def main():
413 async for message in query(
414 prompt="Review this code for best practices",
415 options=ClaudeAgentOptions(
416 allowed_tools=["Read", "Glob", "Grep"],
417 ),
418 ):
419 if hasattr(message, "result"):
420 print(message.result)
421
422
423 asyncio.run(main())
424 ```
425
426 ```typescript TypeScript theme={null}
427 import { query } from "@anthropic-ai/claude-agent-sdk";
428
429 for await (const message of query({
430 prompt: "Review this code for best practices",
431 options: {
432 allowedTools: ["Read", "Glob", "Grep"]
433 }
434 })) {
435 if ("result" in message) console.log(message.result);
436 }
437 ```
438 </CodeGroup>
439
440 [Pelajari lebih lanjut tentang izin →](/id/agent-sdk/permissions)
441 </Tab>
442
443 <Tab title="Sesi">
444 Pertahankan konteks di seluruh pertukaran berganda. Claude mengingat file yang dibaca, analisis yang dilakukan, dan riwayat percakapan. Lanjutkan sesi nanti, atau fork mereka untuk menjelajahi pendekatan berbeda.
445
446 Contoh ini menangkap ID sesi dari kueri pertama, kemudian melanjutkan untuk terus dengan konteks penuh:
447
448 <CodeGroup>
449 ```python Python theme={null}
450 import asyncio
451 from claude_agent_sdk import query, ClaudeAgentOptions, SystemMessage, ResultMessage
452
453
454 async def main():
455 session_id = None
456
457 # First query: capture the session ID
458 async for message in query(
459 prompt="Read the authentication module",
460 options=ClaudeAgentOptions(allowed_tools=["Read", "Glob"]),
461 ):
462 if isinstance(message, SystemMessage) and message.subtype == "init":
463 session_id = message.data["session_id"]
464
465 # Resume with full context from the first query
466 async for message in query(
467 prompt="Now find all places that call it", # "it" = auth module
468 options=ClaudeAgentOptions(resume=session_id),
469 ):
470 if isinstance(message, ResultMessage):
471 print(message.result)
472
473
474 asyncio.run(main())
475 ```
476
477 ```typescript TypeScript theme={null}
478 import { query } from "@anthropic-ai/claude-agent-sdk";
479
480 let sessionId: string | undefined;
481
482 // First query: capture the session ID
483 for await (const message of query({
484 prompt: "Read the authentication module",
485 options: { allowedTools: ["Read", "Glob"] }
486 })) {
487 if (message.type === "system" && message.subtype === "init") {
488 sessionId = message.session_id;
489 }
490 }
491
492 // Resume with full context from the first query
493 for await (const message of query({
494 prompt: "Now find all places that call it", // "it" = auth module
495 options: { resume: sessionId }
496 })) {
497 if ("result" in message) console.log(message.result);
498 }
499 ```
500 </CodeGroup>
501
502 [Pelajari lebih lanjut tentang sesi →](/id/agent-sdk/sessions)
503 </Tab>
504</Tabs>
505
506<h3 id="claude-code-features">
507 Fitur Claude Code
508</h3>
509
510SDK juga mendukung konfigurasi berbasis filesystem Claude Code. Dengan opsi default, SDK memuat ini dari `.claude/` di direktori kerja Anda dan `~/.claude/`. Untuk membatasi sumber mana yang dimuat, atur `setting_sources` (Python) atau `settingSources` (TypeScript) dalam opsi Anda.
511
512| Fitur | Deskripsi | Lokasi |
513| ------------------------------------------------ | --------------------------------------------------------------------------------------- | ------------------------------------ |
514| [Skills](/id/agent-sdk/skills) | Kemampuan khusus yang digunakan Claude secara otomatis atau Anda panggil dengan `/name` | `.claude/skills/*/SKILL.md` |
515| [Commands](/id/agent-sdk/slash-commands) | Perintah khusus dalam format legacy. Gunakan skills untuk perintah khusus baru | `.claude/commands/*.md` |
516| [Memory](/id/agent-sdk/modifying-system-prompts) | Konteks proyek dan instruksi | `CLAUDE.md` atau `.claude/CLAUDE.md` |
517| [Plugins](/id/agent-sdk/plugins) | Perluas dengan skills, agen, hooks, dan server MCP | Programmatic via `plugins` option |
518
519<h2 id="compare-the-agent-sdk-to-other-claude-tools">
520 Bandingkan Agent SDK dengan alat Claude lainnya
521</h2>45</h2>
522 46
523Platform Claude menawarkan berbagai cara untuk membangun dengan Claude. Berikut cara Agent SDK cocok:47Ikuti [Quickstart](/docs/id/agent-sdk/quickstart) untuk memasang SDK, mengatur kunci API Anda, dan membangun agen pertama Anda, yang menemukan dan memperbaiki bug dalam kode yang ada.
524
525<Tabs>
526 <Tab title="Agent SDK vs Client SDK">
527 [Anthropic Client SDK](https://platform.claude.com/docs/id/api/client-sdks) memberi Anda akses API langsung: Anda mengirim prompt dan mengimplementasikan eksekusi alat sendiri. **Agent SDK** memberi Anda Claude dengan eksekusi alat bawaan.
528
529 Dengan Client SDK, Anda mengimplementasikan loop alat. Dengan Agent SDK, Claude menanganinya:
530
531 <CodeGroup>
532 ```python Python theme={null}
533 # Client SDK: You implement the tool loop
534 response = client.messages.create(...)
535 while response.stop_reason == "tool_use":
536 result = your_tool_executor(response.tool_use)
537 response = client.messages.create(tool_result=result, **params)
538
539 # Agent SDK: Claude handles tools autonomously
540 async for message in query(prompt="Fix the bug in auth.py"):
541 print(message)
542 ```
543
544 ```typescript TypeScript theme={null}
545 // Client SDK: You implement the tool loop
546 let response = await client.messages.create({ ...params });
547 while (response.stop_reason === "tool_use") {
548 const result = yourToolExecutor(response.tool_use);
549 response = await client.messages.create({ tool_result: result, ...params });
550 }
551
552 // Agent SDK: Claude handles tools autonomously
553 for await (const message of query({ prompt: "Fix the bug in auth.ts" })) {
554 console.log(message);
555 }
556 ```
557 </CodeGroup>
558 </Tab>
559 48
560 <Tab title="Agent SDK vs Claude Code CLI">49<Note>
561 Kemampuan yang sama, antarmuka berbeda:50 Kecuali telah disetujui sebelumnya, Anthropic tidak mengizinkan pengembang pihak ketiga untuk menawarkan login claude.ai atau batas laju untuk produk mereka, termasuk agen yang dibangun di Agent SDK Claude. Gunakan metode autentikasi kunci API yang dijelaskan dalam [Quickstart](/docs/id/agent-sdk/quickstart) sebagai gantinya.
562 51</Note>
563 | Kasus penggunaan | Pilihan terbaik |
564 | ----------------------- | --------------- |
565 | Pengembangan interaktif | CLI |
566 | Pipeline CI/CD | SDK |
567 | Aplikasi khusus | SDK |
568 | Tugas sekali jalan | CLI |
569 | Otomasi produksi | SDK |
570
571 Banyak tim menggunakan keduanya: CLI untuk pengembangan harian, SDK untuk produksi. Alur kerja diterjemahkan langsung di antara keduanya.
572 </Tab>
573
574 <Tab title="Agent SDK vs Managed Agents">
575 [Managed Agents](https://platform.claude.com/docs/id/managed-agents/overview) adalah REST API yang dihosting: Anthropic menjalankan agen dan sandbox, dan aplikasi Anda mengirim acara dan streaming kembali hasil. **Agent SDK** adalah perpustakaan yang menjalankan loop agen di dalam proses Anda sendiri.
576
577 | | Agent SDK | Managed Agents |
578 | --------------------- | ------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- |
579 | **Berjalan di** | Proses Anda, infrastruktur Anda | Infrastruktur yang dikelola Anthropic |
580 | **Antarmuka** | Perpustakaan Python atau TypeScript | REST API |
581 | **Agen bekerja pada** | File di infrastruktur Anda | Sandbox yang dikelola per sesi |
582 | **Status sesi** | JSONL di sistem file Anda | Log acara yang dihosting Anthropic |
583 | **Alat khusus** | Fungsi Python atau TypeScript dalam proses | Claude memicu alat; Anda menjalankan dan mengembalikan hasil |
584 | **Terbaik untuk** | Prototyping lokal, agen yang bekerja langsung pada sistem file dan layanan Anda | Agen produksi tanpa mengoperasikan infrastruktur sandbox atau sesi, sesi yang berjalan lama dan asinkron |
585
586 Jalur umum adalah membuat prototipe dengan Agent SDK secara lokal, kemudian pindah ke Managed Agents untuk produksi.
587 </Tab>
588</Tabs>
589 52
590<h2 id="changelog">53<h2 id="changelog">
591 Changelog54 Changelog
596* **TypeScript SDK**: [lihat CHANGELOG.md](https://github.com/anthropics/claude-agent-sdk-typescript/blob/main/CHANGELOG.md)59* **TypeScript SDK**: [lihat CHANGELOG.md](https://github.com/anthropics/claude-agent-sdk-typescript/blob/main/CHANGELOG.md)
597* **Python SDK**: [lihat CHANGELOG.md](https://github.com/anthropics/claude-agent-sdk-python/blob/main/CHANGELOG.md)60* **Python SDK**: [lihat CHANGELOG.md](https://github.com/anthropics/claude-agent-sdk-python/blob/main/CHANGELOG.md)
598 61
599<h2 id="reporting-bugs">62<h2 id="report-bugs">
600 Melaporkan bug63 Melaporkan bug
601</h2>64</h2>
602 65
613 76
614**Diizinkan:**77**Diizinkan:**
615 78
616* "Claude Agent" (lebih disukai untuk menu dropdown)79* "Claude Agent", lebih disukai untuk menu dropdown
617* "Claude" (ketika sudah dalam menu berlabel "Agents")80* "Claude", ketika sudah dalam menu berlabel "Agents"
618* "{YourAgentName} Powered by Claude" (jika Anda memiliki nama agen yang ada)81* "{YourAgentName} Powered by Claude", jika Anda memiliki nama agen yang ada
619 82
620**Tidak diizinkan:**83**Tidak diizinkan:**
621 84
634 Langkah berikutnya97 Langkah berikutnya
635</h2>98</h2>
636 99
637<CardGroup cols={2}>100Sumber daya ini mencakup detail teknis yang lebih mendalam dan proyek contoh untuk membangun dengan Agent SDK.
638 <Card title="Panduan Cepat" icon="play" href="/id/agent-sdk/quickstart">
639 Bangun agen yang menemukan dan memperbaiki bug dalam hitungan menit
640 </Card>
641
642 <Card title="Agen contoh" icon="star" href="https://github.com/anthropics/claude-agent-sdk-demos">
643 Asisten email, agen penelitian, dan banyak lagi
644 </Card>
645
646 <Card title="TypeScript SDK" icon="code" href="/id/agent-sdk/typescript">
647 Referensi API TypeScript lengkap dan contoh
648 </Card>
649 101
650 <Card title="Python SDK" icon="code" href="/id/agent-sdk/python">102* [Panduan Cepat](/docs/id/agent-sdk/quickstart): bangun agen pertama Anda yang menemukan dan memperbaiki bug
651 Referensi API Python lengkap dan contoh103* [Panduan migrasi](/docs/id/agent-sdk/migration-guide): migrasi dari paket Claude Code SDK ke Agent SDK
652 </Card>104* [Loop agen](/docs/id/agent-sdk/agent-loop): bagaimana Claude merencanakan, memanggil alat, dan memutuskan kapan tugas selesai
653</CardGroup>105* [Agen contoh](https://github.com/anthropics/claude-agent-sdk-demos): aplikasi demo untuk pengembangan lokal
106* [TypeScript SDK](/docs/id/agent-sdk/typescript): referensi API TypeScript lengkap dan contoh
107* [Python SDK](/docs/id/agent-sdk/python): referensi API Python lengkap dan contoh
108* [Desain harness agen](https://claude.com/blog/a-harness-for-every-task-dynamic-workflows-in-claude-code): bagaimana tim Claude Code menggunakan alur kerja dinamis untuk mengorkestrasi banyak subagen sekaligus