Catatan Belajar · · 3 menit baca
Belajar OpenAI GPT API: Responses API dan output terstruktur
Tutorial GPT API dengan SDK openai: setup billing + API key, Responses API, instruksi & percakapan, streaming, dan output JSON terstruktur untuk pipeline ekstraksi data.
GPT dari OpenAI adalah LLM API yang paling banyak dipakai di industri — memahaminya penting sekalipun (seperti aku) kamu lebih sering memakai Claude atau Gemini, karena banyak codebase klien sudah terlanjur memakainya. Tutorial ini memakai SDK resmi openai dengan Responses API (antarmuka yang lebih baru dan direkomendasikan).
1. Persiapan
- Buat akun di platform.openai.com, buat API key, dan isi billing (tanpa saldo, request akan ditolak).
- Simpan sebagai environment variable:
export OPENAI_API_KEY="sk-..."
- Install SDK:
npm install openai
2. Panggilan pertama (Responses API)
import OpenAI from "openai";
const client = new OpenAI(); // otomatis membaca OPENAI_API_KEY
const response = await client.responses.create({
model: "gpt-5.1",
input: "Jelaskan apa itu conversion rate untuk pemilik toko online, 3 kalimat.",
});
console.log(response.output_text);
output_text adalah shortcut teks gabungan. Kalau kamu menemukan kode lama dengan client.chat.completions.create({ messages: [...] }) — itu Chat Completions API, masih jalan, tapi Responses API adalah arah barunya.
3. Instruksi & percakapan
const response = await client.responses.create({
model: "gpt-5.1",
instructions: "Kamu asisten CS toko online. Jawab ringkas dalam Bahasa Indonesia, jangan mengarang kebijakan.",
input: [
{ role: "user", content: "Halo, aku Budi." },
{ role: "assistant", content: "Halo Budi! Ada yang bisa dibantu?" },
{ role: "user", content: "Bisa retur barang sampai berapa hari?" },
],
});
instructions = system prompt-nya Responses API; input menerima string tunggal atau array percakapan.
4. Streaming
const stream = await client.responses.create({
model: "gpt-5.1",
input: "Tulis deskripsi produk untuk tas rotan handmade.",
stream: true,
});
for await (const event of stream) {
if (event.type === "response.output_text.delta") {
process.stdout.write(event.delta);
}
}
5. Output terstruktur (JSON)
Untuk pipeline (ekstraksi data, klasifikasi), paksa output mengikuti skema:
const response = await client.responses.create({
model: "gpt-5.1",
input: "Ekstrak: 'Budi pesan 2 kopi Gayo 250g, kirim ke Bandung'",
text: {
format: {
type: "json_schema",
name: "pesanan",
schema: {
type: "object",
properties: {
nama: { type: "string" },
produk: { type: "string" },
jumlah: { type: "integer" },
kota: { type: "string" },
},
required: ["nama", "produk", "jumlah", "kota"],
additionalProperties: false,
},
},
},
});
const pesanan = JSON.parse(response.output_text); // dijamin sesuai skema
Tips dari pengalaman
- Nama model berubah cepat (gpt-5.x, o-series untuk reasoning, mini/nano untuk hemat) — selalu cek halaman model resmi sebelum memilih; jangan hafalkan dari tutorial.
- Pasang usage limit di dashboard billing sejak hari pertama — kesalahan loop tak berujung di development bisa jadi tagihan nyata.
- Ketiga provider (Claude, Gemini, GPT) berbagi konsep yang sama: system prompt, riwayat stateless, streaming, dan penetapan harga per token. Kuasai konsepnya sekali — berpindah provider tinggal mengganti sintaks.
Mau fitur seperti ini dibangun untuk bisnismu?