Handbook AI Engineering
Referensi

Glosarium

Daftar istilah teknis yang paling sering muncul sepanjang program, didefinisikan secara operasional berdasarkan penggunaannya dalam praktik.

Daftar istilah teknis yang paling sering muncul sepanjang program. Setiap istilah didefinisikan secara operasional, artinya definisi ditulis berdasarkan bagaimana istilah tersebut digunakan dalam praktik, bukan sekadar terjemahan harfiah atau definisi akademik yang abstrak.

Model & Inferensi

LLM

Large Language Model, model bahasa besar yang dilatih untuk memahami dan menghasilkan teks

Penjelasan Mendalam

Model yang dilatih dengan miliaran parameter pada dataset teks skala besar untuk memprediksi token berikutnya dalam sebuah urutan. Kemampuan yang muncul dari skala ini (pemahaman bahasa, penalaran, pengkodean) bukan diprogram secara eksplisit, tapi muncul dari proses training. Contoh: Gemini, GPT-4, Claude, Llama.

Cara Digunakan dalam Praktik

Dipanggil via API dengan menyertakan prompt yang berisi instruksi dan konteks. Parameter seperti temperature dan max_tokens mengontrol karakteristik output. Sebagai AI Engineer, kamu jarang melatih LLM, kamu menggunakannya sebagai komponen dalam sistem yang kamu bangun.

Token

Unit terkecil yang diproses LLM, bukan selalu sama dengan kata

Penjelasan Mendalam

LLM tidak memproses karakter atau kata, mereka memproses token, potongan teks berdasarkan algoritma tokenisasi tertentu. Satu kata bahasa Inggris umum biasanya satu token; kata yang jarang atau kata dalam bahasa lain bisa menjadi beberapa token. "bootcamp" mungkin 2 token: "boot" + "camp".

Mengapa Ini Penting

Biaya API dihitung per token. Context window diukur dalam token. Chunking dokumen untuk RAG juga diukur dalam token. Memahami token membantu estimasi biaya, mencegah context overflow, dan merancang strategi chunking yang tepat.

Context Window

Batas maksimum token yang bisa diproses LLM dalam satu request

Penjelasan Mendalam

Setiap LLM memiliki batas berapa banyak token yang bisa "dilihat" sekaligus, ini disebut context window. Gemini 1.5 Flash memiliki context window 1 juta token; GPT-4o sekitar 128 ribu token. Semua teks yang dikirim dalam satu request (System Prompt, riwayat percakapan, dokumen konteks, dan pertanyaan pengguna) harus muat dalam batas ini.

Implikasi Praktis

Context window yang penuh bisa menyebabkan error atau pemotongan input secara diam-diam. Dalam sistem RAG, ini menentukan berapa banyak chunk dokumen yang bisa disertakan. Dalam sistem percakapan, ini menentukan berapa panjang riwayat yang bisa disimpan sebelum perlu di-trim atau di-summarize.

Temperature

Parameter yang mengontrol seberapa "kreatif" atau "deterministik" output LLM

Cara Kerjanya

Temperature mengontrol distribusi probabilitas token berikutnya. Temperature 0.0 membuat model selalu memilih token dengan probabilitas tertinggi, output cenderung konsisten dan deterministik. Temperature 1.0 ke atas membuat distribusi lebih merata sehingga token yang kurang probable juga bisa terpilih, output lebih bervariasi dan "kreatif".

Panduan Penggunaan

0.0 sampai 0.1 untuk sistem RAG, customer service, dan task yang butuh konsistensi dan akurasi faktual. 0.7 sampai 1.0 untuk generasi konten kreatif, brainstorming, dan variasi yang diinginkan. Sebagian besar sistem produksi menggunakan temperature rendah.

Hallucination

Output LLM yang terdengar meyakinkan tapi faktanya salah atau tidak berdasar

Mengapa Ini Terjadi

LLM dilatih untuk menghasilkan teks yang plausibel secara statistik, bukan teks yang akurat secara faktual. Ketika diminta informasi yang tidak ada di training data atau di luar kemampuannya, model tidak mengatakan "saya tidak tahu", ia menghasilkan teks yang terlihat meyakinkan meski isinya salah. Ini adalah sifat inheren dari cara LLM bekerja.

Cara Mitigasi

RAG adalah mitigasi utama, dengan menyediakan dokumen sumber yang relevan, model tidak perlu "menebak" dari training data. Instruksi eksplisit di System Prompt ("jika jawaban tidak ada di konteks, katakan tidak tahu") juga membantu. Tapi tidak ada cara menghilangkan hallucination sepenuhnya, evaluasi berkelanjutan tetap diperlukan.

Prompt Engineering

Praktik merancang input ke LLM secara sistematis untuk menghasilkan output yang diinginkan

Penjelasan Mendalam

Cara sebuah prompt ditulis, strukturnya, contoh yang disertakan, instruksi yang diberikan, sangat mempengaruhi kualitas output. Prompt engineering adalah disiplin untuk memahami dan memanfaatkan pola ini secara sistematis: bukan trial and error, tapi pendekatan berbasis pemahaman tentang cara LLM memproses instruksi.

Teknik Utama

Zero-shot: instruksi langsung tanpa contoh. Few-shot: sertakan 2-5 contoh input-output. Chain-of-thought: minta model menjelaskan langkah penalarannya sebelum menjawab. System Prompt: instruksi permanen yang mendefinisikan peran dan batasan model.

Fine-tuning

Melatih ulang LLM pada dataset spesifik untuk mengadaptasi perilakunya ke domain tertentu

Perbedaan dengan RAG

RAG menyuntikkan pengetahuan spesifik ke dalam prompt saat runtime, model tidak berubah, hanya konteksnya yang berbeda. Fine-tuning mengubah bobot model itu sendiri melalui proses training tambahan. Fine-tuning berguna untuk mengubah gaya atau format output, bukan untuk menyuntikkan pengetahuan baru yang akurat.

Kapan Digunakan

Sebagian besar use case produksi lebih baik diselesaikan dengan RAG + prompt engineering yang baik daripada fine-tuning. Fine-tuning baru dipertimbangkan ketika ada kebutuhan format output yang sangat spesifik, gaya bahasa yang konsisten, atau domain yang sangat sempit dengan data training yang cukup.

Data & Representasi

Embedding

Representasi numerik (vektor) dari teks yang menangkap makna semantiknya

Cara Kerjanya

Model embedding mengubah teks menjadi array angka dengan dimensi tetap, misalnya 768 atau 1536 dimensi. Teks yang bermakna serupa akan menghasilkan vektor yang "berdekatan" dalam ruang dimensi tinggi ini. "Cara mengajukan cuti" dan "prosedur pengambilan hari libur" akan memiliki vektor yang dekat, meski tidak ada kata yang sama.

Mengapa Penting untuk RAG

Embedding adalah yang memungkinkan semantic search, mencari berdasarkan makna, bukan kata kunci. Ketika pengguna mengajukan pertanyaan, pertanyaan tersebut di-embed menjadi vektor, lalu dicari chunk dokumen mana yang vektornya paling dekat. Ini jauh lebih efektif dari pencarian kata kunci konvensional untuk teks alami.

Vector Database

Database yang dioptimalkan untuk menyimpan dan mencari vektor berdasarkan kesamaan

Perbedaan dengan Database Biasa

Database relasional (PostgreSQL, MySQL) mencari berdasarkan kecocokan nilai yang tepat: WHERE nama = 'Budi'. Vector database mencari berdasarkan kedekatan: "temukan 5 vektor yang paling mirip dengan vektor ini". Operasi ini membutuhkan algoritma khusus (ANN) dan struktur data yang berbeda dari index konvensional.

Contoh yang Digunakan

Pinecone: managed cloud service, tidak perlu mengelola infrastruktur sendiri, cocok untuk produksi. FAISS: library open-source dari Meta, berjalan lokal, cocok untuk pengembangan atau ketika data tidak boleh keluar dari infrastruktur sendiri. Weaviate, Qdrant, Chroma: alternatif lain dengan fitur berbeda.

Chunking

Proses memecah dokumen panjang menjadi potongan-potongan yang lebih kecil sebelum diindeks

Mengapa Diperlukan

Model embedding menghasilkan satu vektor per teks. Jika dokumen 50 halaman direpresentasikan sebagai satu vektor, informasi spesifik di halaman 37 akan "tenggelam" dalam representasi agregat seluruh dokumen. Dengan memecah dokumen menjadi chunk yang lebih kecil, setiap chunk mendapat vektor yang merepresentasikannya lebih akurat.

Implikasi Praktis

chunk_size: berapa banyak token per chunk, terlalu kecil kehilangan konteks, terlalu besar mengurangi presisi. chunk_overlap: berapa token yang tumpang tindih antar chunk, mencegah informasi terpotong di batas chunk. Nilai default yang sering dipakai: chunk_size=700, chunk_overlap=100.

RAG

Retrieval-Augmented Generation, pola arsitektur untuk menjawab pertanyaan berdasarkan dokumen spesifik

Cara Kerjanya

Tiga tahap berurutan: (1) Retrieve, pertanyaan pengguna di-embed dan digunakan untuk mencari chunk dokumen yang relevan di vector database. (2) Augment, chunk yang ditemukan disertakan sebagai konteks dalam prompt ke LLM. (3) Generate, LLM menjawab berdasarkan konteks yang diberikan, bukan dari training data-nya yang mungkin usang atau tidak akurat.

Keunggulan Utama

RAG menyelesaikan dua masalah sekaligus: LLM tidak perlu "menghafal" semua informasi domain (yang tidak mungkin dan mahal), dan pengguna mendapat jawaban berdasarkan dokumen terpercaya yang bisa diverifikasi, bukan opini model. Ini menjadikannya standar de facto untuk sistem knowledge base dan customer service berbasis AI.

Cosine Similarity

Metrik untuk mengukur kemiripan dua vektor berdasarkan sudut di antara keduanya

Intuisi Matematis

Cosine similarity mengukur kosinus sudut antara dua vektor, bukan jarak antar ujungnya. Nilainya berkisar dari -1 (berlawanan arah) hingga 1 (arah identik). Nilai mendekati 1 berarti kedua teks memiliki makna yang sangat mirip. Digunakan karena tidak terpengaruh oleh panjang teks, dokumen panjang dan pendek dengan topik sama akan tetap memiliki similarity tinggi.

Penggunaan dalam Praktik

Sebagian besar vector database menggunakan cosine similarity (atau dot product yang ekuivalen untuk vektor ternormalisasi) sebagai default similarity metric. Ketika melakukan query di Pinecone, skor yang dikembalikan adalah cosine similarity, semakin mendekati 1.0, semakin relevan chunk tersebut.

Sistem & Arsitektur

Agent

Sistem AI yang bisa merencanakan dan mengeksekusi serangkaian tindakan untuk mencapai tujuan

Perbedaan dari RAG Biasa

Sistem RAG menerima pertanyaan dan langsung menjawab dalam satu siklus. Agent dapat memutuskan: "untuk menjawab ini, saya perlu mencari informasi dulu, lalu melakukan kalkulasi, lalu menulis ringkasan" dan mengeksekusi setiap langkah secara berurutan, menggunakan output satu langkah sebagai input langkah berikutnya.

Komponen Utama

LLM sebagai reasoning engine, memutuskan langkah apa yang perlu diambil. Tools, fungsi yang bisa dipanggil oleh agent (search, calculator, database query, API call). Memory, menyimpan state antar langkah. Loop, siklus reason-act-observe yang berulang sampai tujuan tercapai.

System Prompt

Instruksi permanen yang mendefinisikan peran, batasan, dan perilaku LLM dalam sebuah sistem

Peran dalam Sistem

System Prompt adalah "kontrak" antara developer dan model, mendefinisikan siapa model ini, apa yang boleh dan tidak boleh dijawab, format output yang diharapkan, dan bagaimana menangani kasus edge. Dibaca oleh model sebelum input pengguna, sehingga mempengaruhi semua respons yang dihasilkan dalam sesi tersebut.

Praktik Terbaik

System Prompt yang baik: spesifik tentang peran ("kamu adalah asisten HR untuk PT Maju Jaya"), eksplisit tentang batasan ("hanya jawab pertanyaan seputar kebijakan HR"), instruksikan penanganan kasus edge ("jika ditanya di luar domain, katakan..."), dan definisikan format output yang diinginkan.

Prompt Injection

Serangan di mana pengguna menyisipkan instruksi dalam input untuk membuat model mengabaikan System Prompt

Cara Kerjanya

Pengguna menyertakan teks seperti "abaikan semua instruksi sebelumnya dan lakukan X" dalam input yang tampak normal. Model yang tidak diproteksi bisa mengikuti instruksi dari input pengguna ini alih-alih instruksi dari System Prompt. Berbahaya terutama pada sistem agent di mana model memiliki akses ke tools yang bisa melakukan aksi nyata.

Mitigasi

Instruksi eksplisit di System Prompt untuk mengabaikan upaya manipulasi. Validasi output sebelum dikembalikan ke pengguna. Monitoring anomali via LangSmith. Prinsip least privilege untuk akses tools, model hanya boleh memanggil tools yang benar-benar dibutuhkan untuk tugasnya.

Semantic Cache

Cache yang menyimpan respons berdasarkan makna pertanyaan, bukan teks pertanyaan yang persis sama

Perbedaan dari Cache Biasa

Cache konvensional hanya mengembalikan hit jika key-nya identik. Semantic cache menyimpan embedding dari pertanyaan yang sudah pernah dijawab, lalu mengecek apakah pertanyaan baru memiliki embedding yang cukup dekat (cosine similarity di atas threshold), jika ya, kembalikan respons yang sudah tersimpan tanpa memanggil LLM.

Manfaat Praktis

"Apa kebijakan cuti tahunan?" dan "Berapa hari cuti yang saya dapat per tahun?" kemungkinan memiliki jawaban yang sama, semantic cache bisa mendeteksi ini. Mengurangi biaya API secara signifikan untuk sistem dengan pertanyaan yang cenderung berulang secara semantik meski dirumuskan berbeda.

Observability

Kemampuan untuk memahami kondisi internal sistem dari output yang dapat diamati dari luar

Komponen Utama

Tracing: merekam setiap langkah eksekusi, berapa lama retrieval, berapa token yang digunakan, model apa yang dipanggil. Logging: mencatat event penting dan error. Metrics: angka agregat seperti latency P95, error rate, biaya per hari. Evaluasi: mengukur kualitas output AI secara sistematis.

Mengapa Kritis untuk Sistem AI

Sistem AI memiliki perilaku yang tidak deterministik, output yang sama untuk input yang sama tidak dijamin. Tanpa observability, tidak ada cara mengetahui apakah kualitas output memburuk seiring waktu, komponen mana yang menjadi bottleneck, atau apakah ada pola pertanyaan yang selalu menghasilkan jawaban buruk.

Model Routing

Strategi mengarahkan request ke model yang berbeda berdasarkan kompleksitas atau jenis pertanyaan

Logika Dasar

Tidak semua pertanyaan butuh model paling canggih dan mahal. "Apa jam operasional toko?" bisa dijawab dengan model ringan. "Analisis kontrak ini dan identifikasi klausul yang berpotensi merugikan" butuh model yang lebih kapabel. Model routing mengklasifikasikan pertanyaan dan mengarahkannya ke model yang tepat.

Manfaat

Bisa mengurangi biaya API 40 sampai 60% tanpa mengorbankan kualitas yang signifikan pada mayoritas pertanyaan. Contoh implementasi: gunakan model classifier ringan untuk menentukan apakah pertanyaan "sederhana" (menuju model murah) atau "kompleks" (menuju model lebih mahal). Dibahas detail di Bab 19.

Infrastruktur

Container

Paket software yang berisi aplikasi beserta semua dependensinya dalam unit yang bisa dijalankan di mana saja

Mengapa Container Menyelesaikan Masalah Nyata

Masalah klasik: "berjalan di laptopku tapi tidak di server". Ini terjadi karena perbedaan versi Python, library, atau konfigurasi sistem operasi. Container mengisolasi aplikasi beserta semua dependensinya dalam satu unit yang berjalan identik di laptop developer, server staging, maupun cloud production.

Docker sebagai Standar

Docker adalah platform containerization yang paling banyak digunakan. Dockerfile adalah instruksi untuk membangun container image. Image adalah blueprint yang bisa dijalankan. Container adalah instance image yang sedang berjalan. Analoginya: image adalah resep, container adalah masakan yang sudah jadi.

Environment Variable

Variabel konfigurasi yang disimpan di luar kode aplikasi, biasanya untuk menyimpan credentials dan konfigurasi per environment

Mengapa Tidak di Dalam Kode

API key yang hardcode di dalam kode akan ikut ter-commit ke Git dan bisa terekspos ke siapapun yang mengakses repository. Environment variable memisahkan konfigurasi dari kode, nilai yang berbeda untuk development, staging, dan production bisa diset tanpa mengubah kode apapun.

Cara Penggunaan

Lokal: simpan di file .env (yang masuk .gitignore), baca dengan python-dotenv. Production di cloud: set via dashboard Railway/Cloud Run atau Secret Manager. Di kode: akses dengan os.getenv('NAMA_VAR'). File .env.example di-commit sebagai dokumentasi variabel apa saja yang dibutuhkan.

API Endpoint

URL spesifik yang menerima request dan mengembalikan respons dalam sistem berbasis HTTP

Struktur Dasar

Endpoint didefinisikan oleh: URL (misal /chat), HTTP method (GET untuk mengambil data, POST untuk mengirim data), dan skema request/response yang mendefinisikan format data yang diterima dan dikembalikan. Di FastAPI, endpoint didefinisikan sebagai fungsi Python dengan dekorator @app.post('/chat').

Peran dalam Sistem AI

Backend FastAPI mengekspos sistem AI melalui endpoint. Frontend atau aplikasi lain mengirim pertanyaan ke POST /chat dan menerima jawaban dalam format JSON. Ini adalah interface yang membuat sistem AI bisa diintegrasikan ke mana saja: web app, mobile app, atau bahkan sistem lain via API to API call.

Virtual Environment

Isolasi lingkungan Python per proyek agar dependensi antar proyek tidak saling konflik

Masalah yang Diselesaikan

Proyek A membutuhkan langchain==0.1.0, proyek B membutuhkan langchain==0.2.0. Tanpa isolasi, menginstall versi untuk satu proyek akan merusak proyek lain. Virtual environment membuat setiap proyek memiliki salinan Python dan package-nya sendiri yang terisolasi.

Penggunaan Dasar

Buat: python -m venv venv. Aktifkan: source venv/bin/activate (Mac/Linux) atau venv\\Scripts\\activate (Windows). Setelah aktif, semua pip install hanya mempengaruhi environment ini. Nonaktifkan: deactivate. Folder venv/ tidak di-commit ke Git.

CI/CD

Continuous Integration / Continuous Deployment, otomatisasi proses testing dan deployment setiap kali kode diperbarui

Cara Kerjanya

CI (Continuous Integration): setiap kali kode di-push ke repository, sistem otomatis menjalankan test untuk memastikan tidak ada yang rusak. CD (Continuous Deployment): jika test lolos, sistem otomatis men-deploy versi baru ke server. Dengan ini, proses dari commit kode ke berjalan di produksi bisa berlangsung dalam hitungan menit tanpa intervensi manual.

Implementasi Sederhana

Railway dan Google Cloud Run sudah mengintegrasikan CD, ketika branch tertentu di GitHub diperbarui, deployment baru otomatis berjalan. GitHub Actions bisa digunakan untuk menambahkan CI, menjalankan test, linting, atau validasi sebelum deployment dilanjutkan.

Rate Limiting

Mekanisme untuk membatasi jumlah request yang bisa dilakukan dalam periode waktu tertentu

Dua Konteks yang Berbeda

Rate limit dari provider: Gemini, OpenAI, dan Pinecone membatasi berapa banyak request yang bisa dibuat per menit atau per hari. Melampaui batas ini menghasilkan error HTTP 429. Rate limit di sistem kamu sendiri: membatasi berapa banyak request yang bisa dibuat oleh satu pengguna ke API-mu untuk mencegah abuse dan mengontrol biaya.

Penanganan Error 429

Implementasikan exponential backoff: ketika menerima 429, tunggu beberapa detik, coba lagi, jika masih gagal tunggu lebih lama, dan seterusnya. Library seperti tenacity memudahkan implementasi ini. Caching juga membantu mengurangi jumlah request ke provider.