鍵.png)
從架構(gòu)設(shè)計側(cè)剖析: MCP vs A2A 是朋友還是對手?
雖然 GPT-4、ChatGPT 等大模型擁有驚人的生成能力,但在實際應(yīng)用中常常遇到諸多限制:
LangChain 的出現(xiàn),就是為了構(gòu)建“鏈?zhǔn)秸{(diào)用”機制,將模型輸出與多種工具和數(shù)據(jù)源串聯(lián)起來,解決以上痛點。它支持多種 LLM,配合模塊化鏈條,極大提高 LLM 應(yīng)用的靈活性和實用性。
了解 LangChain,需先掌握以下幾個核心模塊:
鏈?zhǔn)?LangChain 的核心設(shè)計單位,代表一個任務(wù)的步驟集合。可以將多個鏈以串聯(lián)、并聯(lián)方式組合,支持條件分支和動態(tài)調(diào)用。
用于動態(tài)構(gòu)造 LLM 輸入提示,支持參數(shù)填充和格式化。
幫助模型在對話或多輪任務(wù)中保持上下文,支持短期與長期記憶。
外部能力封裝,如調(diào)用搜索引擎、計算器、數(shù)據(jù)庫等。
幫助加載文本或結(jié)構(gòu)化數(shù)據(jù),將信息轉(zhuǎn)成向量用于語義檢索。
pip install langchain openai faiss-cpu
前往 OpenAI 控制臺 創(chuàng)建 API Key,導(dǎo)出環(huán)境變量:
export OPENAI_API_KEY='你的API密鑰'
假設(shè)我們要打造一個基于上下文多輪對話、集成搜索與計算功能的智能助理。
from langchain.prompts import PromptTemplate
template = """
你是一個智能助理。用戶的問題是:{question}
請給出詳細、準(zhǔn)確的回答。
"""
prompt = PromptTemplate(input_variables=["question"], template=template)
from langchain.llms import OpenAI
llm = OpenAI(temperature=0.7, model_name="gpt-4")
from langchain.chains import LLMChain
qa_chain = LLMChain(llm=llm, prompt=prompt)
response = qa_chain.run(question="2025年AI發(fā)展趨勢如何?")
print(response)
大模型知識庫有限,集成向量檢索是解決方案。以下演示如何用 FAISS 向量數(shù)據(jù)庫搭建語義搜索。
from langchain.document_loaders import TextLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
loader = TextLoader("knowledge_base.txt")
documents = loader.load()
text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50)
texts = text_splitter.split_documents(documents)
from langchain.embeddings.openai import OpenAIEmbeddings
embeddings = OpenAIEmbeddings()
from langchain.vectorstores import FAISS
vectorstore = FAISS.from_documents(texts, embeddings)
from langchain.chains import RetrievalQA
retriever = vectorstore.as_retriever(search_type="similarity", search_kwargs={"k":3})
qa = RetrievalQA.from_chain_type(llm=llm, retriever=retriever)
query = "什么是鏈?zhǔn)秸{(diào)用?"
result = qa.run(query)
print(result)
LangChain 支持接入自定義工具,比如天氣查詢、計算器、數(shù)據(jù)庫接口等,實現(xiàn)“模型+工具”的閉環(huán)。
from langchain.agents import Tool
import math
def calculator_fn(query: str) - > str:
try:
return str(eval(query))
except Exception as e:
return "無法計算:" + str(e)
calculator_tool = Tool(
name="Calculator",
func=calculator_fn,
description="執(zhí)行數(shù)學(xué)表達式的計算"
)
from langchain.agents import initialize_agent, AgentType
tools = [calculator_tool]
agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True)
response = agent.run("計算 345 * 23 的結(jié)果是多少?")
print(response)
2025 年,LLM 正與圖像、音頻等多模態(tài)技術(shù)深度融合。LangChain 社區(qū)不斷擴展,支持:
多模態(tài)鏈條可助力智能客服、內(nèi)容生成、教育輔導(dǎo)等多領(lǐng)域突破。
2025 年,借助 LangChain 靈活的鏈?zhǔn)秸{(diào)用和向量檢索,開發(fā)者可以更快速地搭建出功能豐富、交互自然的智能系統(tǒng)。無論是客服機器人、內(nèi)容創(chuàng)作助手,還是知識管理平臺,LangChain 都提供了強有力的底層框架和豐富組件。
如果你想深入掌握 LangChain 技術(shù),推薦訪問官方文檔與社區(qū)資源: