Seni Bina LangChain dan Abstraksi Teras
Fahami model komponen LangChain termasuk LLM, ChatModels, PromptTemplates, OutputParsers dan Runnables, serta cara komponen tersebut digubah menjadi saluran paip.
Seni Bina LangChain dan Abstraksi Teras ialah pelajaran AI Engineering Academy percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran AI Engineering Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus AI Engineering Academy merangkumi sejumlah 4 pelajaran.
Apakah Sebenarnya LangChain
LangChain ialah rangka kerja untuk membina aplikasi yang dikuasakan oleh model bahasa. Daripada menulis panggilan API mentah dan kod penghubung sendiri, LangChain menyediakan komponen boleh guna semula yang boleh disambungkan menjadi alur kerja. Ia menyokong berbilang penyedia LLM (OpenAI, Anthropic, Cohere, model setempat) melalui antara muka bersatu, jadi pertukaran penyedia memerlukan perubahan kod yang minimum.
Gambaran Keseluruhan Model Komponen
LangChain menyusun blok binaannya ke dalam kategori komponen yang berbeza. LLM dan ChatModels membungkus penyedia model. PromptTemplates mengurus pembinaan gesaan dinamik. OutputParsers menukarkan teks model mentah kepada objek Python berstruktur. Runnables ialah antara muka sejagat yang menghubungkan semuanya menjadi alur kerja yang boleh digubah.
LLM berbanding ChatModels
LangChain membezakan antara dua antara muka model. LLM menerima gesaan dalam bentuk rentetan dan mengembalikan pelengkapan dalam bentuk rentetan — gaya pelengkapan teks yang lebih lama. ChatModel menerima senarai mesej (sistem, manusia, AI) dan mengembalikan objek mesej. Model OpenAI, Anthropic dan Gemini moden semuanya ialah ChatModels. Anda hendaklah mengutamakan ChatModel untuk aplikasi baharu.
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: Gesaan Dinamik
PromptTemplate membolehkan anda mentakrifkan gesaan dengan pemboleh ubah ruang letak yang diisi semasa masa jalan. ChatPromptTemplate melakukan perkara yang sama untuk gesaan gaya perbualan yang mengandungi berbilang mesej. Templat memisahkan struktur gesaan daripada nilai masa jalan, lalu menjadikan gesaan boleh digunakan semula, mudah diuji dan mudah diurus versinya.
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 menukar output rentetan mentah daripada model kepada jenis Python berstruktur. StrOutputParser hanya mengekstrak rentetan kandungan. JsonOutputParser menghuraikan JSON. PydanticOutputParser mengesahkan data berdasarkan skema Pydantic. Penghurai juga menjana arahan format yang boleh anda masukkan ke dalam gesaan untuk membimbing model menghasilkan format yang dijangkakan.
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])Antara Muka Boleh Dijalankan
Setiap komponen LangChain melaksanakan antara muka boleh dijalankan, yang mentakrifkan tiga kaedah utama: invoke() untuk panggilan tunggal segerak, stream() untuk penstriman token satu demi satu dan batch() untuk memproses berbilang input secara selari. Oleh sebab setiap komponen boleh dijalankan, semuanya boleh digabungkan secara seragam menggunakan operator paip.
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?'])Menggabungkan dengan Operator Paip
Operator paip (|) ialah sintaks ringkas untuk mencipta objek RunnableSequence. Apabila anda menulis prompt | llm | parser, LangChain mencipta rantaian yang mengalirkan output setiap langkah ke dalam input langkah seterusnya. Inilah teras LCEL — Bahasa Ungkapan LangChain — dan ia menggantikan kelas rantaian 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 pemuat dokumen yang membaca fail dalam pelbagai format (PDF, Word, HTML, CSV) dan mengembalikan senarai objek Document dengan medan page_content dan metadata. Pemisah teks kemudian membahagikan dokumen panjang kepada bahagian kecil yang sesuai untuk pembenaman dan pencarian.
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')Gedung Vektor sebagai Komponen Boleh Dijalankan
LangChain membungkus pangkalan data vektor (Chroma, Pinecone, pgvector) sebagai objek VectorStore yang mendedahkan kaedah similarity_search(). Anda boleh menukar mana-mana VectorStore kepada komponen pencari yang boleh dijalankan dengan .as_retriever(), lalu membolehkannya digabungkan dalam rantaian LCEL. Pencari menerima rentetan pertanyaan dan mengembalikan dokumen paling relevan 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])Panggilan Balik dan Kebolehlihatan
Sistem panggilan balik LangChain membolehkan anda menyambungkan fungsi kepada setiap peristiwa dalam pelaksanaan rantaian: apabila LLM bermula, apabila token distrim, apabila rantaian selesai dan apabila alat dipanggil. Panggilan balik terbina dalam termasuk StdOutCallbackHandler untuk pengelogan konsol. Penyepaduan pihak ketiga seperti LangSmith disambungkan secara automatik melalui pemboleh ubah persekitaran, lalu merakam jejak pelaksanaan penuh tanpa perubahan kod.
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 Keadaan dalam Rantaian
Secara lalai, rantaian LangChain adalah tanpa keadaan — setiap panggilan adalah bebas. Untuk menambah memori perbualan, anda membungkus rantaian dengan komponen memori yang menyimpan dan memasukkan sejarah perbualan. RunnableWithMessageHistory ialah cara asli LCEL untuk menambah memori, dengan menerima fungsi get_session_history yang memuatkan sejarah 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'}}
)Semakan Pantas
Uji pemahaman anda tentang Seni Bina LangChain dan Abstraksi Teras.
Imbas Kembali Pelajaran
Dalam pelajaran ini, anda mempelajari bahawa: model komponen LangChain menyusun LLM, PromptTemplates, OutputParsers dan pencari sebagai komponen boleh dijalankan dengan antara muka seragam, operator paip (|) menggabungkan komponen boleh dijalankan menjadi rantaian berjujukan melalui LCEL, dan panggilan balik membolehkan kebolehlihatan pada setiap langkah tanpa mengubah logik perniagaan. Seterusnya, kita akan meneroka pembinaan rantaian dengan LCEL secara mendalam.
Pelajari Python dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 30
- Pelajaran
- 120
Soalan Lazim
Adakah pelajaran “Seni Bina LangChain dan Abstraksi Teras” percuma?
Ya — teks penuh “Seni Bina LangChain dan Abstraksi Teras” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus AI Engineering Academy, tingkat taraf kepada CoddyKit PRO. Kursus AI Engineering Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Seni Bina LangChain dan Abstraksi Teras”?
Fahami model komponen LangChain termasuk LLM, ChatModels, PromptTemplates, OutputParsers dan Runnables, serta cara komponen tersebut digubah menjadi saluran paip. Anda berlatih AI Engineering Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan AI Engineering Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran AI Engineering Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 4.
Berapa lamakah pelajaran “Seni Bina LangChain dan Abstraksi Teras” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran AI Engineering Academy ini?
Ya. Setiap pelajaran AI Engineering Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Seni Bina LangChain dan Abstraksi Teras
- Membina Rantaian dengan LCEL
- Rantaian Bercabang dan Selari
- Menstrim Keluaran dalam LangChain