Panduan Cepat
Mulai dengan Agent SDK Python atau TypeScript untuk membangun agen AI yang bekerja secara mandiri
Gunakan Agent SDK untuk membangun agen AI yang membaca kode Anda, menemukan bug, dan memperbaikinya, semuanya tanpa intervensi manual.
Yang akan Anda lakukan:
- Menyiapkan proyek dengan Agent SDK
- Membuat file dengan beberapa kode yang berisi bug
- Menjalankan agen yang menemukan dan memperbaiki bug secara otomatis
Prasyarat
- Node.js 18+ atau Python 3.10+
- Akun Anthropic (daftar di sini)
Penyiapan
Buat folder proyek
Buat direktori baru untuk panduan cepat ini:
mkdir my-agent
cd my-agent
Untuk 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:
npm install @anthropic-ai/claude-agent-sdk
uv adalah pengelola paket Python yang cepat yang menangani lingkungan virtual secara otomatis:
uv init
uv add claude-agent-sdk
Buat dan aktifkan lingkungan virtual, kemudian instal paket.
Di macOS atau Linux:
python3 -m venv .venv
source .venv/bin/activate
pip install claude-agent-sdk
Di Windows:
py -m venv .venv
.venv\Scripts\Activate.ps1
pip install claude-agent-sdk
Jika PowerShell memblokir Activate.ps1 dengan kesalahan kebijakan eksekusi, jalankan Set-ExecutionPolicy -Scope Process RemoteSigned terlebih dahulu.
TypeScript SDK menggabungkan biner Claude Code asli untuk platform Anda sebagai dependensi opsional, jadi Anda tidak perlu menginstal Claude Code secara terpisah.
Atur kunci API Anda
Dapatkan kunci API dari Claude Console, kemudian buat file .env di direktori proyek Anda:
ANTHROPIC_API_KEY=your-api-key
SDK juga mendukung autentikasi melalui penyedia API pihak ketiga:
- Amazon Bedrock: atur variabel lingkungan
CLAUDE_CODE_USE_BEDROCK=1dan konfigurasikan kredensial AWS - Claude Platform on AWS: atur
CLAUDE_CODE_USE_ANTHROPIC_AWS=1danANTHROPIC_AWS_WORKSPACE_ID, kemudian konfigurasikan kredensial AWS - Google Vertex AI: atur variabel lingkungan
CLAUDE_CODE_USE_VERTEX=1dan konfigurasikan kredensial Google Cloud - Microsoft Azure: atur variabel lingkungan
CLAUDE_CODE_USE_FOUNDRY=1dan konfigurasikan kredensial Azure
Lihat panduan penyiapan untuk Bedrock, Claude Platform on AWS, Vertex AI, atau Azure AI Foundry untuk detail selengkapnya.
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. Silakan gunakan metode autentikasi kunci API yang dijelaskan dalam dokumen ini.
Buat file dengan bug
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 TypeError
Bangun agen yang menemukan dan memperbaiki bug
Buat 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"], # Auto-approve these tools
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())
import { query } from "@anthropic-ai/claude-agent-sdk";
// Agentic loop: streams messages as Claude works
for await (const message of query({
prompt: "Review utils.py for bugs that would cause crashes. Fix any issues you find.",
options: {
allowedTools: ["Read", "Edit", "Glob"], // Auto-approve these tools
permissionMode: "acceptEdits" // Auto-approve file edits
}
})) {
// Print human-readable output
if (message.type === "assistant" && message.message?.content) {
for (const block of message.message.content) {
if ("text" in block) {
console.log(block.text); // Claude's reasoning
} else if ("name" in block) {
console.log(`Tool: ${block.name}`); // Tool being called
}
}
} else if (message.type === "result") {
console.log(`Done: ${message.subtype}`); // Final result
}
}
Kode ini memiliki tiga bagian utama:
-
query: titik masuk utama yang membuat loop agentic. Ini mengembalikan iterator async, jadi Anda menggunakanasync foruntuk 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 digunakan berdasarkan tugas. -
options: konfigurasi untuk agen. Contoh ini menggunakanallowedToolsuntuk pra-persetujuanRead,Edit, danGlob, danpermissionMode: "acceptEdits"untuk auto-persetujuan perubahan file. Opsi lainnya termasuksystemPrompt,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 output yang dapat dibaca manusia. Tanpa penyaringan, 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. single-turn mode untuk detail selengkapnya.
Jalankan agen Anda
Agen Anda siap. Jalankan dengan perintah berikut:
npx tsx agent.ts
uv run agent.py
Dengan lingkungan virtual Anda masih diaktifkan:
python agent.py
Setelah menjalankan, periksa utils.py. Anda akan melihat kode defensif yang menangani daftar kosong dan pengguna null. Agen Anda secara mandiri:
- Membaca
utils.pyuntuk memahami kode - Menganalisis logika dan mengidentifikasi kasus tepi yang akan mogok
- Mengedit file untuk menambahkan penanganan kesalahan yang tepat
Inilah yang membuat Agent SDK berbeda: Claude menjalankan alat secara langsung alih-alih meminta Anda untuk mengimplementasikannya.
Jika Anda melihat "API key not found", pastikan Anda telah menetapkan variabel lingkungan ANTHROPIC_API_KEY di file .env atau lingkungan shell Anda. Lihat panduan pemecahan masalah lengkap untuk bantuan lebih lanjut.
Coba prompt lain
Sekarang agen Anda sudah diatur, 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"
Sesuaikan agen Anda
Anda dapat mengubah perilaku agen dengan mengubah opsi. Berikut adalah beberapa contoh:
Tambahkan kemampuan pencarian web:
options = ClaudeAgentOptions(
allowed_tools=["Read", "Edit", "Glob", "WebSearch"], permission_mode="acceptEdits"
)
const _ = {
options: {
allowedTools: ["Read", "Edit", "Glob", "WebSearch"],
permissionMode: "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.",
)
const _ = {
options: {
allowedTools: ["Read", "Edit", "Glob"],
permissionMode: "acceptEdits",
systemPrompt: "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"
)
const _ = {
options: {
allowedTools: ["Read", "Edit", "Glob", "Bash"],
permissionMode: "acceptEdits"
}
};
Dengan Bash diaktifkan, coba: "Write unit tests for utils.py, run them, and fix any failures"
Konsep kunci
Tools mengontrol apa yang dapat dilakukan agen Anda:
| Tools | 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 |
Permission modes mengontrol berapa banyak pengawasan manusia yang Anda inginkan:
| Mode | Perilaku | Kasus penggunaan |
|---|---|---|
acceptEdits |
Auto-persetujuan pengeditan file dan perintah sistem file umum, meminta tindakan lain | Alur kerja pengembangan terpercaya |
dontAsk |
Menolak apa pun yang tidak ada di allowedTools |
Agen headless terkunci |
auto (TypeScript only) |
Pengklasifikasi model menyetujui atau menolak setiap panggilan alat | Agen otonom dengan penjaga keamanan |
bypassPermissions |
Menjalankan setiap alat tanpa prompt, kecuali aturan ask eksplisit cocok |
CI sandboxed, lingkungan yang sepenuhnya terpercaya |
default |
Memerlukan callback canUseTool untuk menangani persetujuan |
Alur persetujuan kustom |
Contoh di atas menggunakan mode acceptEdits, yang auto-persetujuan 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 lanjut, lihat Permissions.
Pemecahan masalah
Kesalahan API `thinking.type.enabled` tidak didukung untuk model ini
Claude Opus 4.7 menggantikan thinking.type.enabled dengan thinking.type.adaptive. Versi Agent SDK yang lebih lama gagal dengan kesalahan API berikut ketika Anda memilih claude-opus-4-7:
API Error: 400 {"type":"invalid_request_error","message":"\"thinking.type.enabled\" is not supported for this model. Use \"thinking.type.adaptive\" and \"output_config.effort\" to control thinking behavior."}
Tingkatkan ke Agent SDK v0.2.111 atau lebih baru untuk menggunakan Opus 4.7.
Langkah berikutnya
Sekarang Anda telah membuat agen pertama Anda, pelajari cara memperluas kemampuannya dan menyesuaikannya dengan kasus penggunaan Anda:
- Permissions: kontrol apa yang dapat dilakukan agen Anda dan kapan memerlukan persetujuan
- Hooks: jalankan kode kustom sebelum atau sesudah panggilan alat
- Sessions: bangun agen multi-turn yang mempertahankan konteks
- MCP servers: terhubung ke database, browser, API, dan sistem eksternal lainnya
- Hosting: sebarkan agen ke Docker, cloud, dan CI/CD
- Example agents: lihat contoh lengkap: asisten email, agen penelitian, dan lainnya