AI Engineering Academy · Pelajaran

Arsitektur LangChain dan Abstraksi Inti

Pahami model komponen LangChain, termasuk LLM, ChatModels, PromptTemplates, OutputParsers, dan Runnable, serta cara komponen tersebut disusun menjadi alur pemrosesan.

Pelajaran 1 dari 413 langkah

Arsitektur LangChain dan Abstraksi Inti adalah pelajaran AI Engineering Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar AI Engineering Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus AI Engineering Academy mencakup 4 pelajaran total.

Apa Sebenarnya LangChain Itu

LangChain adalah kerangka kerja untuk membangun aplikasi yang didukung model bahasa. Alih-alih menulis sendiri pemanggilan API mentah dan kode penghubung, LangChain menyediakan komponen yang dapat digunakan kembali dan dirangkai menjadi alur kerja. LangChain mendukung beberapa penyedia LLM (OpenAI, Anthropic, Cohere, model lokal) melalui antarmuka terpadu, sehingga perpindahan penyedia hanya memerlukan sedikit perubahan kode.

Gambaran Umum Model Komponen

LangChain mengatur blok pembangunnya ke dalam beberapa kategori komponen yang berbeda. LLM dan ChatModels membungkus penyedia model. PromptTemplates mengelola pembuatan perintah dinamis. OutputParsers mengubah teks model mentah menjadi objek Python terstruktur. Runnables adalah antarmuka universal yang menghubungkan semuanya menjadi alur kerja yang dapat disusun.

LLM vs ChatModels

LangChain membedakan dua antarmuka model. LLM menerima prompt berupa string dan mengembalikan penyelesaian berupa string—gaya penyelesaian teks yang lebih lama. ChatModel menerima daftar pesan (sistem, manusia, AI) dan mengembalikan objek pesan. Model OpenAI, Anthropic, dan Gemini modern semuanya merupakan ChatModel. Sebaiknya gunakan ChatModel untuk aplikasi baru.

from langchain_openai import ChatOpenAI
from langchain_core.messages import HumanMessage, SystemMessage

llm = ChatOpenAI(model='gpt-4o-mini')
response = llm.invoke([
    SystemMessage(content='You are a helpful assistant.'),
    HumanMessage(content='What is LangChain?')
])
print(response.content)

PromptTemplates: Prompt Dinamis

PromptTemplate memungkinkan Anda menentukan prompt dengan variabel placeholder yang diisi saat runtime. ChatPromptTemplate melakukan hal yang sama untuk prompt bergaya percakapan dengan beberapa pesan. Template memisahkan struktur prompt dari nilai runtime, sehingga prompt dapat digunakan kembali, diuji, dan dikelola versinya dengan mudah.

from langchain_core.prompts import ChatPromptTemplate

template = ChatPromptTemplate.from_messages([
    ('system', 'You are an expert in {domain}.'),
    ('human', 'Explain {concept} in simple terms.')
])

# Fill in variables at runtime
messages = template.invoke({'domain': 'machine learning', 'concept': 'embeddings'})
print(messages)

OutputParsers: Membentuk Output Model

OutputParsers mengubah output string mentah dari model menjadi tipe Python terstruktur. StrOutputParser hanya mengekstrak string konten. JsonOutputParser mengurai JSON. PydanticOutputParser memvalidasi berdasarkan skema Pydantic. Parser juga menghasilkan instruksi format yang dapat Anda sisipkan ke dalam prompt untuk mengarahkan model agar menggunakan format yang diharapkan.

from langchain_core.output_parsers import StrOutputParser, JsonOutputParser
from pydantic import BaseModel

class MovieReview(BaseModel):
    title: str
    rating: int
    summary: str

parser = JsonOutputParser(pydantic_object=MovieReview)
# parser.get_format_instructions() returns JSON schema instructions
print(parser.get_format_instructions()[:200])

Antarmuka Runnable

Setiap komponen LangChain mengimplementasikan antarmuka Runnable, yang mendefinisikan tiga metode utama: invoke() untuk pemanggilan tunggal secara sinkron, stream() untuk streaming token satu per satu, dan batch() untuk memproses beberapa input secara paralel. Karena setiap komponen merupakan Runnable, semuanya dapat dikomposisikan secara seragam menggunakan operator pipa.

from langchain_openai import ChatOpenAI

llm = ChatOpenAI(model='gpt-4o-mini')

# Single call
result = llm.invoke('What is 2+2?')

# Streaming tokens
for chunk in llm.stream('Tell me a joke.'):
    print(chunk.content, end='', flush=True)

# Batch processing
results = llm.batch(['What is Paris?', 'What is Rome?'])

Komposisi dengan Operator Pipa

operator pipa (|) adalah sintaks ringkas untuk membuat objek RunnableSequence. Saat Anda menulis prompt | llm | parser, LangChain membuat rantai yang mengalirkan output setiap langkah ke input langkah berikutnya. Inilah inti LCEL—LangChain Expression Language—dan ini menggantikan kelas rantai lama yang lebih panjang.

from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser

prompt = ChatPromptTemplate.from_template('Summarize this in one sentence: {text}')
llm = ChatOpenAI(model='gpt-4o-mini')
parser = StrOutputParser()

# Chain composed with pipe operator
chain = prompt | llm | parser

result = chain.invoke({'text': 'LangChain is a framework for LLM applications...'})
print(result)

Pemuat Dokumen dan Pemisah Teks

Untuk aplikasi RAG, LangChain menyediakan Pemuatan Dokumen yang membaca file dalam berbagai format (PDF, Word, HTML, CSV) dan mengembalikan daftar objek Document dengan bidang page_content dan metadata. Pemisah Teks kemudian membagi dokumen panjang menjadi bagian-bagian yang lebih kecil agar sesuai untuk embedding dan pengambilan.

from langchain_community.document_loaders import PyPDFLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter

loader = PyPDFLoader('report.pdf')
docs = loader.load()  # List of Document objects

splitter = RecursiveCharacterTextSplitter(
    chunk_size=500,
    chunk_overlap=50
)
chunks = splitter.split_documents(docs)
print(f'Split {len(docs)} pages into {len(chunks)} chunks')

Vector Stores sebagai Runnable

LangChain membungkus basis data vektor (Chroma, Pinecone, pgvector) sebagai objek VectorStore yang menyediakan metode similarity_search(). Anda dapat mengubah VectorStore apa pun menjadi Runnable Pengambil dengan .as_retriever(), sehingga dapat dikomposisikan dalam rantai LCEL. Pengambil menerima string kueri dan mengembalikan dokumen paling relevan sebanyak k teratas.

from langchain_openai import OpenAIEmbeddings
from langchain_community.vectorstores import Chroma

embeddings = OpenAIEmbeddings()
vectorstore = Chroma.from_documents(chunks, embeddings)

# Convert to Retriever Runnable
retriever = vectorstore.as_retriever(
    search_type='similarity',
    search_kwargs={'k': 5}
)

results = retriever.invoke('How does LangChain work?')
for doc in results:
    print(doc.page_content[:100])

Callback dan Observabilitas

sistem callback LangChain memungkinkan Anda terhubung ke setiap peristiwa dalam eksekusi rantai: saat LLM dimulai, saat token dialirkan, saat rantai selesai, dan saat alat dipanggil. Callback bawaan mencakup StdOutCallbackHandler untuk pencatatan ke konsol. Integrasi pihak ketiga seperti LangSmith terhubung secara otomatis melalui variabel lingkungan, dan merekam jejak eksekusi lengkap tanpa perubahan kode.

from langchain.callbacks import StdOutCallbackHandler
from langchain_openai import ChatOpenAI

llm = ChatOpenAI(
    model='gpt-4o-mini',
    callbacks=[StdOutCallbackHandler()]
)
# Now every call logs input/output automatically

# Or enable LangSmith tracing globally:
import os
os.environ['LANGCHAIN_TRACING_V2'] = 'true'
os.environ['LANGCHAIN_API_KEY'] = 'your-key'

Memori dan Status dalam Rantai

Secara default, rantai LangChain bersifat tanpa status—setiap pemanggilan berdiri sendiri. Untuk menambahkan memori percakapan, Anda membungkus rantai dengan komponen memori yang menyimpan dan menyisipkan riwayat percakapan. RunnableWithMessageHistory adalah cara native LCEL untuk menambahkan memori, dengan menerima fungsi get_session_history yang memuat riwayat berdasarkan ID sesi.

from langchain_core.runnables.history import RunnableWithMessageHistory
from langchain_community.chat_message_histories import ChatMessageHistory

store = {}  # session_id -> ChatMessageHistory

def get_session_history(session_id: str):
    if session_id not in store:
        store[session_id] = ChatMessageHistory()
    return store[session_id]

with_history = RunnableWithMessageHistory(chain, get_session_history)
response = with_history.invoke(
    {'input': 'Hi, my name is Alice'},
    config={'configurable': {'session_id': 'user-1'}}
)

Pemeriksaan Singkat

Uji pemahaman Anda tentang Arsitektur LangChain dan Abstraksi Intinya.

Rangkuman Pelajaran

Dalam pelajaran ini Anda telah mempelajari: model komponen LangChain mengatur LLM, PromptTemplates, OutputParsers, dan Pengambil sebagai Runnable dengan antarmuka terpadu; operator pipa (|) mengomposisikan Runnable menjadi rantai berurutan melalui LCEL; dan callback memungkinkan observabilitas di setiap langkah tanpa mengubah logika bisnis. Selanjutnya, kita akan mempelajari pembuatan rantai dengan LCEL secara mendalam.

Gratis untuk memulai

Belajar Python dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
30
Pelajaran
120

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Arsitektur LangChain dan Abstraksi Inti” gratis?

Ya — teks lengkap “Arsitektur LangChain dan Abstraksi Inti” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus AI Engineering Academy, upgrade ke CoddyKit PRO. Kursus AI Engineering Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Arsitektur LangChain dan Abstraksi Inti”?

Pahami model komponen LangChain, termasuk LLM, ChatModels, PromptTemplates, OutputParsers, dan Runnable, serta cara komponen tersebut disusun menjadi alur pemrosesan. Kamu berlatih AI Engineering Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai AI Engineering Academy?

Tidak diperlukan pengalaman sebelumnya. AI Engineering Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.

Berapa lama pelajaran “Arsitektur LangChain dan Abstraksi Inti” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran AI Engineering Academy ini?

Ya. Setiap pelajaran AI Engineering Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Arsitektur LangChain dan Abstraksi Inti
  2. Membangun Rantai dengan LCEL
  3. Rantai Bercabang dan Paralel
  4. Mengalirkan Keluaran di LangChain
← Kembali ke AI Engineering Academy