Gunakan Agent SDK untuk membangun agen AI yang membaca kode Anda, menemukan bug, dan memperbaikinya, semuanya tanpa intervensi manual.
Yang akan Anda lakukan:
Instal Claude Code
Agent SDK menggunakan Claude Code sebagai runtime-nya. Instal untuk platform Anda:
Setelah menginstal Claude Code di mesin Anda, jalankan claude di terminal Anda dan ikuti petunjuk untuk autentikasi. SDK akan menggunakan autentikasi ini secara otomatis.
Untuk informasi lebih lanjut tentang instalasi Claude Code, lihat penyiapan Claude Code.
Buat folder proyek
Buat direktori baru untuk panduan cepat ini:
mkdir my-agent && cd my-agentUntuk proyek Anda sendiri, Anda dapat menjalankan SDK dari folder apa pun; SDK akan memiliki akses ke file di direktori tersebut dan subdirektorinya secara default.
Instal SDK
Instal paket Agent SDK untuk bahasa Anda:
Atur kunci API Anda
Jika Anda telah mengautentikasi Claude Code (dengan menjalankan claude di terminal Anda), SDK menggunakan autentikasi tersebut secara otomatis.
Jika tidak, Anda memerlukan kunci API, yang dapat Anda dapatkan dari Konsol Anthropic.
Buat file .env di direktori proyek Anda dan simpan kunci API di sana:
ANTHROPIC_API_KEY=your-api-keyMenggunakan Amazon Bedrock, Google Vertex AI, atau Microsoft Azure? Lihat panduan penyiapan untuk Bedrock, Vertex AI, atau Azure AI Foundry.
Kecuali telah disetujui sebelumnya, kami tidak mengizinkan pengembang pihak ketiga untuk menawarkan login Claude.ai atau batas laju untuk produk mereka, termasuk agen yang dibangun di atas Claude Agent SDK. Silakan gunakan metode autentikasi kunci API yang dijelaskan dalam dokumen ini.
Panduan cepat ini memandu Anda melalui pembuatan agen yang dapat menemukan dan memperbaiki bug dalam kode. Pertama, Anda memerlukan file dengan beberapa bug yang disengaja untuk diperbaiki oleh agen. Buat utils.py di direktori my-agent dan tempel kode berikut:
def calculate_average(numbers):
total = 0
for num in numbers:
total += num
return total / len(numbers)
def get_user_name(user):
return user["name"].upper()Kode ini memiliki dua bug:
calculate_average([]) mogok dengan pembagian oleh nolget_user_name(None) mogok dengan TypeErrorBuat agent.py jika Anda menggunakan Python SDK, atau agent.ts untuk TypeScript:
import asyncio
from claude_agent_sdk import query, ClaudeAgentOptions, AssistantMessage, ResultMessage
async def main():
# Agentic loop: streams messages as Claude works
async for message in query(
prompt="Review utils.py for bugs that would cause crashes. Fix any issues you find.",
options=ClaudeAgentOptions(
allowed_tools=["Read", "Edit", "Glob"], # Tools Claude can use
permission_mode="acceptEdits" # Auto-approve file edits
)
):
# Print human-readable output
if isinstance(message, AssistantMessage):
for block in message.content:
if hasattr(block, "text"):
print(block.text) # Claude's reasoning
elif hasattr(block, "name"):
print(f"Tool: {block.name}") # Tool being called
elif isinstance(message, ResultMessage):
print(f"Done: {message.subtype}") # Final result
asyncio.run(main())Kode ini memiliki tiga bagian utama:
query: titik masuk utama yang membuat loop agentic. Ini mengembalikan iterator async, jadi Anda menggunakan async for untuk streaming pesan saat Claude bekerja. Lihat API lengkap di referensi SDK Python atau TypeScript.
prompt: apa yang ingin Anda lakukan Claude. Claude mengetahui alat mana yang harus digunakan berdasarkan tugas.
options: konfigurasi untuk agen. Contoh ini menggunakan allowedTools untuk membatasi Claude ke Read, Edit, dan Glob, dan permissionMode: "acceptEdits" untuk auto-approve perubahan file. Opsi lainnya termasuk systemPrompt, mcpServers, dan lainnya. Lihat semua opsi untuk Python atau TypeScript.
Loop async for terus berjalan saat Claude berpikir, memanggil alat, mengamati hasil, dan memutuskan apa yang harus dilakukan selanjutnya. Setiap iterasi menghasilkan pesan: penalaran Claude, panggilan alat, hasil alat, atau hasil akhir. SDK menangani orkestrasi (eksekusi alat, manajemen konteks, percobaan ulang) sehingga Anda hanya mengonsumsi aliran. Loop berakhir ketika Claude menyelesaikan tugas atau mengalami kesalahan.
Penanganan pesan di dalam loop memfilter untuk output yang dapat dibaca manusia. Tanpa pemfilteran, Anda akan melihat objek pesan mentah termasuk inisialisasi sistem dan status internal, yang berguna untuk debugging tetapi berisik sebaliknya.
Contoh ini menggunakan streaming untuk menampilkan kemajuan secara real-time. Jika Anda tidak memerlukan output langsung (misalnya untuk pekerjaan latar belakang atau pipeline CI), Anda dapat mengumpulkan semua pesan sekaligus. Lihat Streaming vs. mode single-turn untuk detail.
Agen Anda siap. Jalankan dengan perintah berikut:
python3 agent.pySetelah menjalankan, periksa utils.py. Anda akan melihat kode defensif yang menangani daftar kosong dan pengguna null. Agen Anda secara otonom:
utils.py untuk memahami kodeInilah yang membuat Agent SDK berbeda: Claude menjalankan alat secara langsung alih-alih meminta Anda untuk mengimplementasikannya.
Jika Anda melihat "Claude Code not found", instal Claude Code dan mulai ulang terminal Anda. Untuk "API key not found", atur kunci API Anda. Lihat panduan pemecahan masalah lengkap untuk bantuan lebih lanjut.
Sekarang agen Anda sudah siap, coba beberapa prompt berbeda:
"Add docstrings to all functions in utils.py""Add type hints to all functions in utils.py""Create a README.md documenting the functions in utils.py"Anda dapat memodifikasi perilaku agen dengan mengubah opsi. Berikut adalah beberapa contoh:
Tambahkan kemampuan pencarian web:
options=ClaudeAgentOptions(
allowed_tools=["Read", "Edit", "Glob", "WebSearch"],
permission_mode="acceptEdits"
)Berikan Claude prompt sistem kustom:
options=ClaudeAgentOptions(
allowed_tools=["Read", "Edit", "Glob"],
permission_mode="acceptEdits",
system_prompt="You are a senior Python developer. Always follow PEP 8 style guidelines."
)Jalankan perintah di terminal:
options=ClaudeAgentOptions(
allowed_tools=["Read", "Edit", "Glob", "Bash"],
permission_mode="acceptEdits"
)Dengan Bash diaktifkan, coba: "Write unit tests for utils.py, run them, and fix any failures"
Alat mengontrol apa yang dapat dilakukan agen Anda:
| Alat | Apa yang dapat dilakukan agen |
|---|---|
Read, Glob, Grep | Analisis hanya-baca |
Read, Edit, Glob | Analisis dan modifikasi kode |
Read, Edit, Bash, Glob, Grep | Otomasi penuh |
Mode izin mengontrol berapa banyak pengawasan manusia yang Anda inginkan:
| Mode | Perilaku | Kasus penggunaan |
|---|---|---|
acceptEdits | Auto-approves file edits, asks for other actions | Alur kerja pengembangan terpercaya |
bypassPermissions | Berjalan tanpa prompt | Pipeline CI/CD, otomasi |
default | Memerlukan callback canUseTool untuk menangani persetujuan | Alur persetujuan kustom |
Contoh di atas menggunakan mode acceptEdits, yang auto-approves operasi file sehingga agen dapat berjalan tanpa prompt interaktif. Jika Anda ingin meminta pengguna untuk persetujuan, gunakan mode default dan sediakan callback canUseTool yang mengumpulkan input pengguna. Untuk kontrol lebih, lihat Izin.
Sekarang Anda telah membuat agen pertama Anda, pelajari cara memperluas kemampuannya dan menyesuaikannya dengan kasus penggunaan Anda: