
从架构设计侧剖析: MCP vs A2A 是朋友还是对手?
在大语言模型(LLM)持续爆发的时代,如何将复杂的多步骤任务高效地组合起来,打造具备强大推理、检索和交互能力的智能应用,成为开发者和企业的核心需求。作为目前最热门的开源框架之一,LangChain 凭借“链式调用”与“模块化组件”理念,极大简化了 LLM 应用的开发复杂度,推动了大模型从研究走向产品。
本文将围绕 LangChain 的核心设计,结合前沿的向量检索技术,为你深入解析 2025 年最新的开发方法和实战技巧,帮助你快速构建具备上下文记忆、工具调用及知识检索能力的智能系统。
虽然 GPT-4、ChatGPT 等大模型拥有惊人的生成能力,但在实际应用中常常遇到诸多限制:
LangChain 的出现,就是为了构建“链式调用”机制,将模型输出与多种工具和数据源串联起来,解决以上痛点。它支持多种 LLM,配合模块化链条,极大提高 LLM 应用的灵活性和实用性。
了解 LangChain,需先掌握以下几个核心模块:
链是 LangChain 的核心设计单位,代表一个任务的步骤集合。可以将多个链以串联、并联方式组合,支持条件分支和动态调用。
用于动态构造 LLM 输入提示,支持参数填充和格式化。
帮助模型在对话或多轮任务中保持上下文,支持短期与长期记忆。
外部能力封装,如调用搜索引擎、计算器、数据库等。
帮助加载文本或结构化数据,将信息转成向量用于语义检索。
pip install langchain openai faiss-cpu
前往 OpenAI 控制台 创建 API Key,导出环境变量:
export OPENAI_API_KEY='你的API密钥'
假设我们要打造一个基于上下文多轮对话、集成搜索与计算功能的智能助理。
from langchain.prompts import PromptTemplate
template = """
你是一个智能助理。用户的问题是:{question}
请给出详细、准确的回答。
"""
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发展趋势如何?")
print(response)
大模型知识库有限,集成向量检索是解决方案。以下演示如何用 FAISS 向量数据库搭建语义搜索。
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 = "什么是链式调用?"
result = qa.run(query)
print(result)
LangChain 支持接入自定义工具,比如天气查询、计算器、数据库接口等,实现“模型+工具”的闭环。
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="执行数学表达式的计算"
)
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 的结果是多少?")
print(response)
2025 年,LLM 正与图像、音频等多模态技术深度融合。LangChain 社区不断扩展,支持:
多模态链条可助力智能客服、内容生成、教育辅导等多领域突破。
2025 年,借助 LangChain 灵活的链式调用和向量检索,开发者可以更快速地搭建出功能丰富、交互自然的智能系统。无论是客服机器人、内容创作助手,还是知识管理平台,LangChain 都提供了强有力的底层框架和丰富组件。
如果你想深入掌握 LangChain 技术,推荐访问官方文档与社区资源: