Sedang mengikuti modul ini?
Modul 06 · Halaman 7 daripada 20 · 8 bahagian
Chain dalam LangChain
Apa itu chain, jenis chain, aliran asas daripada prompt ke output serta contoh LLMChain, SequentialChain dan RetrievalQA.
Apa itu Chain?
- Chain ialah urutan langkah (komponen) yang dilaksanakan mengikut susunan logik.
- Ia memudahkan aliran kerja kompleks dengan menggabungkan beberapa komponen.
- Chain boleh merangkumi LLM, prompt, alat, retriever, memory, dsb.
- LangChain menyediakan pelbagai jenis chain untuk pelbagai kes penggunaan.
Mengapa Menggunakan Chain?
- Membantu membina aliran kerja berbilang langkah.
- Mudah menggabungkan beberapa komponen.
- Mengurangkan kod boilerplate.
- Menyokong penghuraian input/output.
- Berguna untuk RAG, ejen, pemprosesan dokumen, integrasi API, dsb.
- Menyediakan antara muka piawai untuk aplikasi LLM yang kompleks.
Jenis Chain dalam LangChain
| Jenis Chain | Penerangan |
|---|---|
| LLMChain | Chain asas dengan LLM dan prompt. |
| SequentialChain | Jalankan beberapa chain secara berurutan. |
| SimpleSequentialChain | Chain berurutan dengan I/O mudah. |
| RouterChain | Halakan input ke chain yang berbeza. |
| RetrievalQA Chain | Gabungkan retriever dengan LLM untuk RAG. |
| ConversationChain | Kekalkan perbualan (dengan memory). |
| MapReduceChain | Proses dokumen besar secara selari. |
| TransformChain | Logik transformasi tersuai. |
Seni Bina Chain Asas
InputPertanyaan pengguna
Prompt TemplateFormat input
LLMOpenAI, Claude, etc.
Output ParserHuraikan respons
Output AkhirJawapan
LLMChain
python
from langchain_openai import ChatOpenAI from langchain_core.prompts import PromptTemplate from langchain.chains import LLMChain llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0.7) prompt = PromptTemplate( input_variables=["topic"], template="Explain {topic} in simple words." ) chain = LLMChain(llm=llm, prompt=prompt) response = chain.invoke({"topic": "Microservices"}) print(response["text"])
SequentialChain
python
from langchain.chains import SequentialChain from langchain.chains import LLMChain chain1 = LLMChain(llm=llm, prompt=PromptTemplate( input_variables=["topic"], template="Give a short summary of {topic}." )) chain2 = LLMChain(llm=llm, prompt=PromptTemplate( input_variables=["summary"], template="List key points from this summary: {summary}" )) sequential_chain = SequentialChain( chains=[chain1, chain2], input_variables=["topic"], output_variables=["summary", "points"] ) result = sequential_chain.invoke({"topic": "LangChain"}) print(result)
RetrievalQA Chain (RAG)
python
from langchain_openai import ChatOpenAI from langchain.chains import RetrievalQA from langchain_community.vectorstores import FAISS from langchain_community.embeddings import OpenAIEmbeddings llm = ChatOpenAI(model="gpt-3.5-turbo") embedding = OpenAIEmbeddings() vectorstore = FAISS.load_local("./faiss_index", embedding, allow_dangerous_deserialization=True) retriever = vectorstore.as_retriever() chain = RetrievalQA.from_chain_type(llm=llm, retriever=retriever) response = chain.invoke({"query": "What is LangChain?"}) print(response["result"])
Pengajaran Utama
- Chain membantu mencipta aliran kerja berstruktur dan boleh digunakan semula.
- Pilih chain yang sesuai mengikut kes penggunaan anda.
- Gunakan RetrievalQA chain untuk aplikasi RAG.
- Chain berurutan berguna untuk tugas berbilang langkah.
- Kita juga boleh mencipta chain tersuai apabila perlu.
- Chain boleh digabungkan dengan memory, alat dan output parser.