5 skrip Node.js kecil, masing-masing membuktikan 1 konsep dengan cara kamu lihat sendiri hasilnya di terminal. Bukan project, cuma skrip lepas — jalanin satu-satu, baca hasilnya, jawab refleksinya pakai kata-katamu sendiri.
- Butuh Node.js 18+ (pakai
fetchbawaan, tanpanpm installapa pun). - Ambil API key gratis di aistudio.google.com/apikey (login pakai akun Google, klik "Create API key").
- Set sebagai environment variable sebelum menjalankan skrip apa pun:
export GEMINI_API_KEY=AIzaSy...xxxxnode exp1-temperature.js # temperature 0 vs 1
node exp2-token-counting.js # token vs karakter (GRATIS, pakai countTokens)
node exp3-context-window.js # history makin panjang + sengaja kena limit
node exp4-system-vs-user.js # systemInstruction vs user prompt + prompt injection
node exp5-structured-output.js # free-form vs JSON mode (structured output)Tiap skrip:
- ngirim request beneran ke Gemini API (kecuali eksperimen 2 dan Bagian A
eksperimen 3, yang pakai endpoint
countTokens— gratis, gak generate apa-apa, dan kuotanya terpisah/lebih longgar darigenerateContent), - nge-print hasil yang bisa langsung kamu bandingkan,
- diakhiri blok
--- Refleksi ---berisi 1 (atau 2) pertanyaan. Jangan langsung dibaca sebagai soal buat dijawab Gemini — jalankan dulu skripnya, lihat hasilnya, baru coba jawab sendiri di kepala atau tulis di catatan kamu.
Model default di sini gemini-2.5-flash. Free tier-nya dibatasi per menit
(RPM) dan per hari (RPD) — angka pastinya bisa berubah, cek halaman resmi
kalau perlu: https://ai.google.dev/gemini-api/docs/rate-limits. Semua skrip
di sini cuma butuh beberapa request (3–8 kali generateContent), jadi
harusnya aman di free tier. Kalau kamu kena error 429 (rate limit):
- tunggu sebentar (satu menit) lalu run ulang, atau
- ganti
MODELdi_helper.jsjadi"gemini-2.5-flash-lite"(kuota harian gratisnya jauh lebih longgar, kualitas jawaban sedikit di bawah flash).
Eksperimen 3 Bagian B sengaja dibuat GAGAL (400 error) sebelum model sempat generate apa pun, jadi request itu sendiri gak makan kuota generate yang berarti.
Gemini pakai role "user" dan "model" di array contents (BUKAN
"assistant" seperti provider lain) — udah disesuaikan di semua skrip di sini.
| File | Konsep |
|---|---|
_helper.js |
helper bersama (jangan dijalankan langsung) |
exp1-temperature.js |
temperature |
exp2-token-counting.js |
token vs karakter |
exp3-context-window.js |
context window & stateless-ness API |
exp4-system-vs-user.js |
systemInstruction vs user prompt, prompt injection |
exp5-structured-output.js |
free-form vs structured output (JSON mode) |