Sedang mengikuti modul ini?0 daripada 17 selesai
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.

6.1

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.
6.2

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.
6.3

Jenis Chain dalam LangChain

Jenis ChainPenerangan
LLMChainChain asas dengan LLM dan prompt.
SequentialChainJalankan beberapa chain secara berurutan.
SimpleSequentialChainChain berurutan dengan I/O mudah.
RouterChainHalakan input ke chain yang berbeza.
RetrievalQA ChainGabungkan retriever dengan LLM untuk RAG.
ConversationChainKekalkan perbualan (dengan memory).
MapReduceChainProses dokumen besar secara selari.
TransformChainLogik transformasi tersuai.
6.4

Seni Bina Chain Asas

InputPertanyaan pengguna
Prompt TemplateFormat input
LLMOpenAI, Claude, etc.
Output ParserHuraikan respons
Output AkhirJawapan
6.5

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"])
6.6

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)
6.7

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"])
6.8

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.