Menu docs

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 APIAnthropic SDKTypeScript

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

  1. Buat akun di platform.claude.com, lalu buat API key dari Console.
  2. Simpan sebagai environment variable — jangan pernah tulis key di kode:
export ANTHROPIC_API_KEY="sk-ant-..."   # Windows (PowerShell): $env:ANTHROPIC_API_KEY="sk-ant-..."
  1. 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 .env yang ikut ter-commit.

Mau fitur seperti ini dibangun untuk bisnismu?