Catatan Belajar · · 3 menit baca
Belajar Claude API: dari API key sampai streaming
Tutorial Claude API dengan SDK resmi TypeScript: setup API key, panggilan pertama, system prompt untuk chatbot CS, percakapan multi-giliran, streaming, dan cara memilih model.
Claude adalah model AI dari Anthropic yang kupakai di hampir semua fitur AI project klien — chatbot CS, RAG, dan agen. Tutorial ini dari mendapatkan API key sampai streaming, dengan SDK resmi TypeScript/JavaScript.
1. Persiapan
- Buat akun di platform.claude.com, lalu buat API key dari Console.
- Simpan sebagai environment variable — jangan pernah tulis key di kode:
export ANTHROPIC_API_KEY="sk-ant-..." # Windows (PowerShell): $env:ANTHROPIC_API_KEY="sk-ant-..."
- Install SDK resmi:
npm install @anthropic-ai/sdk
2. Panggilan pertama
import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic(); // otomatis membaca ANTHROPIC_API_KEY
const response = await client.messages.create({
model: "claude-opus-4-8",
max_tokens: 16000,
messages: [{ role: "user", content: "Jelaskan RAG dalam 3 kalimat, untuk pemilik toko online." }],
});
// content adalah array blok — saring blok teks sebelum membaca .text
for (const block of response.content) {
if (block.type === "text") console.log(block.text);
}
Dua hal penting: max_tokens adalah batas atas output (bukan target), dan response.content adalah array blok bertipe — selalu cek block.type dulu.
3. System prompt: kepribadian & aturan
const response = await client.messages.create({
model: "claude-opus-4-8",
max_tokens: 16000,
system:
"Kamu adalah CS toko kopi 'Gayo Store'. Jawab ramah dan ringkas dalam Bahasa Indonesia. " +
"Kalau ditanya di luar topik toko, arahkan kembali dengan sopan. Jangan mengarang stok atau harga.",
messages: [{ role: "user", content: "Kak, kopi arabika yang paling laris apa?" }],
});
System prompt adalah tempat aturan bisnis hidup — inilah 80% pekerjaan membangun chatbot yang baik.
4. Percakapan multi-giliran
API-nya stateless: kirim seluruh riwayat setiap kali.
const messages: Anthropic.MessageParam[] = [
{ role: "user", content: "Namaku Budi, aku jualan kopi." },
{ role: "assistant", content: "Halo Budi! Senang berkenalan." },
{ role: "user", content: "Siapa namaku dan apa jualanku?" },
];
const response = await client.messages.create({
model: "claude-opus-4-8", max_tokens: 16000, messages,
});
5. Streaming — wajib untuk chat UI
Tanpa streaming, user menatap layar kosong sampai jawaban selesai. Dengan streaming, teks mengalir kata per kata:
const stream = client.messages.stream({
model: "claude-opus-4-8",
max_tokens: 16000,
messages: [{ role: "user", content: "Tulis deskripsi produk untuk kopi Gayo 250g." }],
});
stream.on("text", (delta) => process.stdout.write(delta));
const final = await stream.finalMessage(); // pesan lengkap + info token
console.log("\nToken output:", final.usage.output_tokens);
6. Memilih model
| Model | ID | Kapan dipakai |
|---|---|---|
| Claude Opus 4.8 | claude-opus-4-8 |
Default-ku — penalaran terkuat untuk agen & tugas kompleks |
| Claude Sonnet 5 | claude-sonnet-5 |
Keseimbangan kecepatan/biaya untuk coding & chatbot |
| Claude Haiku 4.5 | claude-haiku-4-5 |
Tugas ringan bervolume tinggi: klasifikasi, routing |
Harga per token berbeda per model — cek halaman pricing resmi; biaya nyata baru terasa terkendali kalau kamu memantau response.usage sejak awal.
Tips dari pengalaman
- Tangani error dengan kelas exception SDK (
Anthropic.RateLimitError, dll.) — jangan string-matching pesan error. - Untuk chatbot toko, jawaban harus berpijak pada data (RAG) — model apa pun akan mengarang kalau disuruh menjawab stok dari ingatan. Lihat docs studi kasus NexaMart di situs ini.
- Simpan API key di secret manager saat production (di Cloudflare Workers:
wrangler secret put), bukan di file.envyang ikut ter-commit.
Mau fitur seperti ini dibangun untuk bisnismu?