Sedang mengikuti modul ini?
Modul 17 · Halaman 18 daripada 20 · 9 bahagian
Chain, Agent dan Alat LangChain
Pandangan bersebelahan chain, agent dan alat, dengan LLMChain, RetrievalQA chain dan agent dengan alat carian, serta alat terbina dalam yang popular.
Apa itu Chain?
- Chain dalam LangChain ialah urutan komponen yang bekerjasama untuk melaksanakan satu tugas.
- Ia membolehkan anda menggabungkan LLM, prompt, retriever dan komponen lain dalam satu saluran paip.
- Chain memudahkan pembinaan aliran kerja kompleks seperti RAG, ringkasan dan menjawab soalan.
- LangChain menyediakan chain terbina dalam seperti LLMChain, RetrievalQA, ConversationalChain, dsb.
Apa itu Agent?
- Agent menggunakan LLM untuk memutuskan alat mana untuk digunakan, bila dan bagaimana menggunakannya.
- Ia boleh berinteraksi dengan sistem luar (API, pangkalan data, kalkulator, carian, dsb.) untuk menyiapkan tugas.
- Agent boleh merancang, bertindak, memerhati hasil dan mengulang sehingga mendapat jawapan akhir.
- Berguna untuk tugas dinamik di mana LLM perlu memilih alat yang betul berdasarkan pertanyaan pengguna.
Chain berbanding Agent berbanding Alat
| Aspek | Chains | Agents | Alat |
|---|---|---|---|
| Tujuan | Melaksanakan urutan langkah yang tetap | Memutuskan dan menggunakan alat secara dinamik | Fungsi atau API luar yang digunakan agent |
| Aliran Kawalan | Ditetapkan lebih awal | Dinamik (LLM memutuskan) | Dilaksanakan apabila dipanggil oleh agent |
| Kes Penggunaan | RAG, ringkasan, saluran paip soal jawab | Tugas kompleks, penaakulan berbilang langkah | Carian, pertanyaan pangkalan data, kalkulator, panggilan API, dsb. |
| Fleksibiliti | Kurang fleksibel | Lebih fleksibel dan autonomi | Boleh dikembangkan (alat tersuai) |
| Contoh | LLMChain, RetrievalQA | ZeroShotAgent, OpenAIAgent | SearchTool, PythonREPLTool, Custom Tools |
Contoh Chain Mudah (LLMChain)
python
from langchain.llms import OpenAI from langchain.prompts import PromptTemplate from langchain.chains import LLMChain # 1. Define LLM llm = OpenAI(model="gpt-3.5-turbo", temperature=0.7) # 2. Define prompt template prompt = PromptTemplate( input_variables=["topic"], template="Explain {topic} in simple words." ) # 3. Create chain chain = LLMChain(llm=llm, prompt=prompt) # 4. Run chain result = chain.invoke({"topic": "Microservices"}) print(result["text"])
Contoh Retrieval QA Chain
python
from langchain.chains import RetrievalQA from langchain.vectorstores import FAISS from langchain.embeddings import OpenAIEmbeddings from langchain.document_loaders import PyPDFLoader from langchain.text_splitter import RecursiveCharacterTextSplitter from langchain.llms import OpenAI # Load and split document loader = PyPDFLoader("data/tech_document.pdf") docs = loader.load() splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=200) chunks = splitter.split_documents(docs) # Create vector store embeddings = OpenAIEmbeddings() vectorstore = FAISS.from_documents(chunks, embeddings) retriever = vectorstore.as_retriever() # Create RetrievalQA chain qa_chain = RetrievalQA.from_chain_type(llm=OpenAI(), chain_type="stuff", retriever=retriever) result = qa_chain.invoke({"query": "What is the main topic of this document?"}) print(result["result"])
Seni Bina Agent
Pertanyaan PenggunaCari berita terkini dan ringkaskan
AgentLLM memutuskan alat yang digunakan
AlatCarian web, pangkalan data, alat tersuai
PemerhatianHasil alat
Output AkhirLLM menjana jawapan
Contoh Agent (Menggunakan Alat)
python
from langchain.agents import initialize_agent, Tool from langchain.tools import DuckDuckGoSearchRun from langchain.llms import OpenAI # Define tools search = DuckDuckGoSearchRun() tools = [ Tool( name="Search", func=search.run, description="Useful for searching information on the internet" ) ] # Create agent llm = OpenAI(model="gpt-3.5-turbo", temperature=0.7) agent = initialize_agent(tools, llm, agent="zero-shot-react-description", verbose=True) # Run agent response = agent.invoke({"input": "Find latest news about AU Small Finance Bank"}) print(response["output"])
Alat Terbina dalam yang Popular
| Alat | Penerangan |
|---|---|
| DuckDuckGoSearchRun | Cari maklumat daripada internet |
| SerpAPIWrapper | Cari menggunakan Google SerpAPI |
| WikipediaQueryRun | Cari daripada Wikipedia |
| PythonREPLTool | Laksanakan kod Python |
| SQLDatabaseToolkit | Buat pertanyaan pada pangkalan data menggunakan bahasa semula jadi |
| RequestsTool | Buat permintaan API HTTP |
| Custom Tool | Cipta alat anda sendiri (cth. panggil API dalaman) |
Pengajaran Utama
- Chain melaksanakan urutan langkah yang tetap.
- Agent memutuskan alat mana untuk digunakan secara dinamik.
- Alat melanjutkan keupayaan agent dengan API dan fungsi luar.
- Gunakan alat terbina dalam atau cipta alat tersuai.
- Agent berguna untuk tugas dunia sebenar yang kompleks dan berbilang langkah.
- Gabungkan Chain + Agent + Alat untuk aplikasi LLM yang berkuasa.