Dasar API LLM
Large Language Model (LLM) API memungkinkan kita mengakses kemampuan AI tanpa harus melatih model sendiri. Ini adalah cara paling praktis untuk menambahkan fitur AI ke aplikasi.
Apa itu LLM API?
LLM API adalah interface yang disediakan oleh provider AI (OpenAI, Anthropic, Google, dll.) yang menerima input teks dan menghasilkan output dari model bahasa. Kita mengirim request HTTP dan menerima response JSON.
Provider Utama
- OpenAI — GPT-4o, o3 →
api.openai.com - Anthropic — Claude Sonnet 4 →
api.anthropic.com - Google — Gemini 2.5 →
generativelanguage.googleapis.com - Meta (via hosted) — Llama 4 → Berbagai hosted API
Anatomie Request
{
"model": "gpt-4o",
"messages": [
{"role": "system", "content": "Kamu adalah asisten yang membantu."},
{"role": "user", "content": "Jelaskan apa itu blockchain."}
],
"temperature": 0.7,
"max_tokens": 1000
}
Parameter Penting
- model: Model yang digunakan (menentukan kemampuan dan biaya)
- messages: Array percakapan (system, user, assistant)
- temperature: Randomness (0.0 = deterministik, 1.0 = kreatif)
- max_tokens: Batas output dalam token
- stream: Boolean untuk streaming response
Implementasi dengan TypeScript
const response = await fetch("https://api.openai.com/v1/chat/completions", {
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer " + process.env.OPENAI_API_KEY,
},
body: JSON.stringify({
model: "gpt-4o",
messages: [
{ role: "system", content: "Kamu adalah asisten Web3." },
{ role: "user", content: prompt },
],
temperature: 0.7,
}),
});
const data = await response.json();
const reply = data.choices[0].message.content;
OpenAI SDK (Recommended)
import OpenAI from "openai";
const openai = new OpenAI();
const completion = await openai.chat.completions.create({
model: "gpt-4o",
messages: [
{ role: "system", content: "Kamu adalah asisten yang membantu." },
{ role: "user", content: "Apa itu smart contract?" },
],
});
console.log(completion.choices[0].message.content);
Error Handling Dasar
try {
const completion = await openai.chat.completions.create({...});
} catch (error) {
if (error.status === 429) {
// Rate limit — tunggu dan retry
await sleep(error.headers["retry-after"] * 1000);
} else if (error.status === 500) {
// Server error — retry dengan backoff
} else {
// Client error — log dan report
}
}
Tips Praktis
- Selalu gunakan environment variables untuk API key
- Set timeout untuk request (30-60 detik untuk LLM)
- Implementasi retry dengan exponential backoff
- Monitor penggunaan token untuk kontrol biaya
- Cache response untuk query yang sering diulang
Latihan
Buat fungsi sederhana yang menerima prompt dan mengembalikan response dari LLM. Tambahkan error handling dan logging.