☀️Siang
AI & Data Science

LangChain & AI Agent untuk Developer

Tutorial lengkap membangun AI Agent dengan LangChain — dari dasar LLM, chains, agents, memory, tools, hingga Retrieval Augmented Generation (RAG)

Artikel: Langchain Ai Agent Artikel: Langchain Ai Agent


1. Dasar-dasar LLM (Large Language Model)

Large Language Model (LLM) adalah model AI yang dilatih dengan data teks dalam skala sangat besar sehingga mampu memahami dan menghasilkan teks yang koheren. LLM seperti GPT-4, Claude, dan LLaMA telah mengubah cara kita berinteraksi dengan teknologi.

LangChain adalah framework open-source Python yang menyediakan abstraksi dan tools untuk membangun aplikasi berbasis LLM. Dengan LangChain, Anda bisa dengan mudah menggabungkan LLM dengan data eksternal, memori percakapan, dan tools untuk membuat AI Agent yang cerdas.

Mengapa LangChain?

Fitur Penjelasan
Model AgnosticBisa digunakan dengan OpenAI, Anthropic, Google, Ollama, dan lainnya
Chain CompositionMenggabungkan beberapa langkah LLM menjadi pipeline yang kompleks
Agent FrameworkMembuat agent yang bisa memilih tools dan mengambil keputusan sendiri
MemoryMenyimpan dan mengelola konteks percakapan
RAG SupportIntegrasi dengan vector database untuk retrieval dokumen
Ekosistem LuasRatusan integrasi dengan database, API, dan layanan cloud

Cara Kerja LLM

Diagram: Cara Kerja LLM
Cara Kerja LLM

📝 Input\n(Prompt)

🔤 Tokenize\n(text → tokens)

🧠 Transformer\n(attention layers)

📊 Predict\nNext Token

📝 Decode\n(tokens → text)

📤 Output\n(Response)

💡 Tips

Untuk tutorial ini, Anda memerlukan API key dari salah satu provider LLM. OpenAI adalah yang paling mudah untuk mulai, tetapi Anda juga bisa menggunakan Ollama (gratis, lokal) atau model lain yang didukung LangChain.



2. Setup LangChain

LangChain memiliki ekosistem modular yang terdiri dari beberapa package. Di tutorial ini kita akan menggunakan langchain (core), langchain-openai (integrasi OpenAI), dan beberapa tools tambahan.

Instalasi

Diagram

context

tool calls

📝 Prompt\nTemplate

🧠 LLM\n(GPT-4)

🔧 Output\nParser

📤 Structured\nOutput

💾 Memory

🔧 Tools\n(Search, DB)



5. Memory: Konteks Percakapan

Secara default, LLM tidak memiliki memori — setiap panggilan bersifat independen. Memory di LangChain memungkinkan kita menyimpan riwayat percakapan sehingga model bisa merujuk ke pesan sebelumnya dan menjaga konteks.

Diagram

Use tool

Direct answer

Result

👤 User Query

🧠 Think\n(Analyze)

Choose Action

🔧 Tool Call\n(Search/DB/API)

📤 Answer

✅ Response



8. RAG: Retrieval Augmented Generation

RAG (Retrieval Augmented Generation) adalah teknik yang menggabungkan kemampuan LLM dengan basis pengetahuan eksternal. Alih-alih hanya mengandalkan data pelatihan, RAG mengambil dokumen yang relevan dari database dan memberikannya sebagai konteks kepada LLM.

Mengapa RAG Penting?

Tanpa RAG Dengan RAG
Pengetahuan terbatas pada data trainingBisa mengakses data terbaru dan spesifik
Bisa "mengarang" fakta (hallucination)Jawaban berdasarkan dokumen nyata
Tidak bisa mengakses data perusahaanBisa mengakses dokumen internal
Sulit memberikan sumber referensiBisa menunjukkan sumber jawaban

Implementasi RAG

Python — RAG dengan LangChain
from langchain_openai import ChatOpenAI, OpenAIEmbeddings
from langchain_community.vectorstores import Chroma
from langchain_community.document_loaders import PyPDFLoader, TextLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.runnables import RunnablePassthrough
from langchain_core.output_parsers import StrOutputParser

# ===== STEP 1: Load Documents =====
# Dari file PDF
loader = PyPDFLoader("dokumen_perusahaan.pdf")
docs = loader.load()

# Dari file teks
loader = TextLoader("faq.txt", encoding="utf-8")
docs = loader.load()

print(f"Jumlah halaman/dokumen: {len(docs)}")

# ===== STEP 2: Split Documents =====
text_splitter = RecursiveCharacterTextSplitter(
    chunk_size=1000,      # Ukuran setiap chunk (karakter)
    chunk_overlap=200,    # Overlap antar chunk
    separators=["\n\n", "\n", ". ", " ", ""]
)
chunks = text_splitter.split_documents(docs)
print(f"Jumlah chunks: {len(chunks)}")

# ===== STEP 3: Create Embeddings & Vector Store =====
embeddings = OpenAIEmbeddings(model="text-embedding-3-small")

# Simpan ke ChromaDB (in-memory)
vectorstore = Chroma.from_documents(
    documents=chunks,
    embedding=embeddings,
    persist_directory="./chroma_db"  # Persist ke disk
)

# Buat retriever
retriever = vectorstore.as_retriever(
    search_type="similarity",
    search_kwargs={"k": 3}  # Ambil 3 dokumen paling relevan
)

# ===== STEP 4: Buat RAG Chain =====
llm = ChatOpenAI(model="gpt-4o-mini", temperature=0)

rag_prompt = ChatPromptTemplate.from_template("""
Gunakan konteks berikut untuk menjawab pertanyaan. 
Jika jawaban tidak ada dalam konteks, katakan bahwa Anda tidak tahu.

Konteks:
{context}

Pertanyaan: {question}

Jawaban:""")

def format_docs(docs):
    return "\n\n".join(doc.page_content for doc in docs)

rag_chain = (
    {"context": retriever | format_docs, "question": RunnablePassthrough()}
    | rag_prompt
    | llm
    | StrOutputParser()
)

# ===== STEP 5: Jalankan RAG =====
response = rag_chain.invoke("Apa kebijakan cuti karyawan?")
print(response)

response = rag_chain.invoke("Bagaimana cara klaim asuransi?")
print(response)
💡 Tips RAG

Untuk hasil terbaik, pastikan dokumen sudah dibersihkan dari noise (header/footer yang berulang, watermark). Gunakan chunk_overlap yang cukup (10-20% dari chunk_size) agar konteks tidak terpotong. Eksperimen dengan k (jumlah dokumen retrieved) untuk menemukan sweet spot.



9. Quiz: Uji Pemahamanmu!

Setelah membaca tutorial di atas, jawablah 5 pertanyaan berikut untuk menguji pemahamanmu tentang LangChain dan AI Agent:

Pertanyaan 1: Apa fungsi utama dari LangChain?

a) Melatih model LLM dari awal
b) Framework untuk membangun aplikasi berbasis LLM dengan integrasi tools dan data
c) Database penyimpanan model AI
d) Compiler untuk kode Python

Pertanyaan 2: Apa yang dilakukan oleh operator pipe (|) dalam LCEL?

a) Menghapus data
b) Menggabungkan output dari satu langkah ke input langkah berikutnya
c) Membuat parallel execution
d) Mengkonversi tipe data

Pertanyaan 3: Mengapa Memory penting dalam aplikasi chatbot?

a) Agar model berjalan lebih cepat
b) Agar model bisa merujuk percakapan sebelumnya dan menjaga konteks
c) Agar model tidak membutuhkan API key
d) Agar model bisa menghasilkan gambar

Pertanyaan 4: Apa yang dimaksud dengan RAG dalam konteks LLM?

a) Teknik untuk melatih ulang model LLM
b) Teknik mengambil dokumen relevan dari basis pengetahuan eksternal sebagai konteks untuk LLM
c) Metode untuk mengkompres model LLM
d) Framework untuk deployment model

Pertanyaan 5: Apa yang membedakan AI Agent dari chatbot biasa?

a) Agent menggunakan bahasa yang lebih formal
b) Agent bisa memilih dan menggunakan tools secara mandiri untuk menyelesaikan tugas
c) Agent tidak memerlukan LLM
d) Agent hanya bisa menjawab pertanyaan ya/tidak
🔍 Zoom
100%
🎨 Tema