首页 > 人工智能 > 人工智能 > LangChain框架简介
LangChain 是用于开发由语言模型驱动的应用程序的框架,用于开发由大语言模型驱动的应用程序,特别是AI 智能体系统。
的框架架构
LangChain 提供了一系列工具和接口,帮助开发者更高效地构建与大型语言模型交互的应用。 LangChain 生态可概括为“三层主结构 + 一个辅助平台”,包括架构层 (Architecture ) 、组件层(Components ) 、部署层(Deployment ) 、辅助平台。
1. 架构层
(1 ) LangChain Core :提供 Chain 、 Prompt 、 Memory 、 Tool 等基础抽象,用于快速拼装 LLM 应用。
(2 )LangGraph :基于“图”的状态机引擎,支持循环、分支、子流程等复杂编排。
2. 组件层
(1 )Integrations :官方与社区维护的大量模型、工具、向量库插件,如OpenAI 、Anthropic 、Pinecone 、Google Search 等。
(2 )langchain-community :第三方扩展包集市。
3. 部署层
LangGraph Platform (商业):托管 LangGraph 工作流,提供 UI 、运行管理、 API 网关等企业级能力。
4. 辅助平台
LangSmith :覆盖开发、测试、部署、监控全生命周期的LLMOps 平台,可视化追踪每一步Chain 与Agent 执行。
的基本模块
1. 模型抽象层
(1 )LLM & Chat Model :支持与OpenAI 、Hugging Face 、Azure 等多种LLM 提供商集成,提供统一接口。
(2 )Embedding :支持文本向量化模型,用于语义搜索和相似度计算。
模型接口示例:
from langchain.llms import OpenAI, HuggingFaceHub
# OpenAI 接口
openai _ llm = OpenAI(
model _ name="text-davinci-003",
temperature=0.7,
max _ tokens=256
)
# HuggingFace 接口
hf _ llm = HuggingFaceHub(
repo _ id="google/flan-t5-large",
model _ kwargs={"temperature":0.6}
)
2. 数据连接层
(1 )Document Loaders :从各种来源(PDF 、网页、数据库等)加载和解析文档。
(2 )Text Splitters :将长文本分割成适合模型处理的小块。
(3 )Vector Stores :向量数据库(如Chroma 、Pinecone ),用于存储和检索嵌入向量。
(4 )Indexes :索引结构,优化文档检索效率。
处理外部知识源示例:
from langchain.document _ loaders import WebBaseLoader
from langchain.indexes import VectorstoreIndexCreator
loader = WebBaseLoader("https://example.com/article")
index = VectorstoreIndexCreator().from _ loaders([loader])
query = " 这篇文章的主要内容是什么? "
answer = index.query(query)
3. 调用链
(1 )基础链:将多个组件(如模型、提示模板、文档检索器)组合成工作流。
(2 )检索增强生成(RAG ):结合外部知识源(如文档)和LLM 生成答案。
(3 )LLMChain :最基本的链类型,将提示模板和LLM 结合。
调用链示例:
from langchain.chains import LLMChain, SimpleSequentialChain
# 创建单个 LLM 链
qa _ chain = LLMChain(llm=openai _ llm, prompt=prompt)
# 创建顺序链
overall _ chain = SimpleSequentialChain(
chains=[qa _ chain, summary _ chain],
verbose=True
)
result = overall _ chain.run(" 输入问题 ")
4. 代理系统
(1 )工具(Tool ):预定义的功能(如搜索引擎、计算器、API 调用)。
(2 )代理执行器:根据用户输入动态决定使用哪些工具和链,实现复杂决策逻辑。
代理系统示例:
from langchain.agents import load _ tools, initialize _ agent
tools = load _ tools(["serpapi", "llm-math"], llm=openai _ llm)
agent = initialize _ agent(
tools,
openai _ llm,
agent="zero-shot-react-description",
verbose=True
)
agent.run("2023 年北京的平均气温是多少?比上海高多少度? ")
5. 记忆系统
支持会话历史存储,使应用能够保持对话上下文,实现有状态的交互。记忆管理示例:
from langchain.memory import ConversationBufferMemory
memory = ConversationBufferMemory()
memory.chat _ memory.add _ user _ message(" 你好! ")
memory.chat _ memory.add _ ai _ message(" 你好!有什么可以帮你的? ")
# 获取历史对话
history = memory.load _ memory _ variables({})
6. 回调系统
监控和记录链或代理的执行过程,支持自定义日志、追踪和调试。回调系统示例:
from langchain.callbacks import FileCallbackHandler
handler = FileCallbackHandler('log.json')
chain.run(input _ text, callbacks=[handler])
8.1.3 LangChain 的 基本应用场景
8.1.3 LangChain 基本应用场景
LangChain 是一个用于构建基于大型语言模型应用的框架,它通过模块化设计简化了与大语言模型交互的流程。以下是LangChain 的基本应用场景。
1. 智能问答系统(QA )
基于特定知识库回答用户问题,避免LLM 幻觉(生成错误信息),适用于企业文档、知识库查询等场景。
1 )实现方式
通过“文档加载→文本分割→嵌入向量→存储到向量数据库”流程,将知识转换为可检索的向量。用户提问时,先从数据库中匹配相关文档片段,再让LLM 基于这些片段生成答案。
2 )示例
(1 )企业内部:员工查询公司规章制度、产品手册(如通过LangChain 连接Confluence 文档)。
(2 )客服领域:自动回复用户关于产品功能、售后政策的问题(如结合客服历史对话库)。
2. 聊天机器人
构建具备上下文理解、多轮对话能力的聊天机器人(Chatbots ),支持个性化交互。
1 )核心能力
(1 )维护对话历史(通过ConversationBufferMemory 等组件存储上下文)。
(2 )结合外部工具(如查询实时天气、预订服务)。
2 )示例
(1 )电商客服机器人:根据用户历史订单推荐商品,解答物流问题(连接订单数据库)。
(2 )教育助手:辅导学生做题,结合教材内容解释知识点(检索教材向量库)。
3. 数据处理与分析
让LLM 与结构化/ 非结构化数据交互,实现数据提取、分析、可视化等功能。
典型场景如下。
(1 )数据提取:从PDF 合同中自动提取甲方、乙方、金额等关键信息(结合UnstructuredFileLoader 和LLM 解析)。
(2 )SQL 生成与查询:用户用自然语言提问(如“本月销售额前5 的产品”),LangChain 将其转换为SQL 语句,查询数据库后返回结果(通过SQLDatabaseChain 实现)。
(3 )数据分析报告:基于Excel 表格数据,让LLM 生成趋势分析、异常值说明(连接Pandas 数 据框)。
4. 自动化工作流
构建具备自主决策能力的智能代理(Agent ),自动规划步骤并调用工具完成复杂任务。
1 )工作原理
Agent 会根据用户目标判断是否需要调用工具(如搜索引擎、计算器、API ),并根据工具返回结果调整下一步行动,直至完成任务。
2 )示例
(1 )旅行规划:用户输入“规划从北京到上海的3 天行程”,Agent 会依次调用“航班查询API →酒店预订接口→景点推荐数据库”,生成完整行程。
(2 )市场调研:自动搜索某行业最新报告、统计数据,汇总后生成分析简报(调用搜索引擎+ 文档解析工具)。
5. 文档生成与自动化写作
批量生成结构化文档(如报告、邮件、合同),或基于模板和数据自动填充内容。
1 )实现方式
结合LLM 的文本生成能力与LangChain 的模板工具(PromptTemplate ),输入变量(如用户信息、数据指标)后生成定制化内容。
2 )示例
(1 )周报/ 月报自动生成:从业务系统提取本周数据(如销售额、用户增长),按固定格式生成报告(搭配jinja2 模板)。
(2 )法律文书生成:输入合同双方信息、条款细节,自动生成符合规范的合同文本(确保格式和法律术语准确)。
6. 代码开发辅助
辅助开发者编写、解释、调试代码,或连接代码库实现自动化任务。
功能如下。
(1 )生成代码:根据自然语言需求(如“写一个Python 爬虫爬取豆瓣电影”)生成代码片段。
(2 )代码解释:解析复杂函数或框架逻辑(如解释LangChain 中Chain 的工作原理)。
(3 )自动化部署:调用云服务API (如AWS 、Docker ),实现代码部署、容器管理等操作(通过Tool 组件连接API )。
7. 多模态应用(文本+ 图像/ 语音)
结合图像、语音等模态数据,扩展LLM 的处理能力(需搭配多模态模型或工具)。
示例如下。
(1 )图像分析:用户上传图片,LangChain 调用图像识别API (如CLIP )生成描述,再让LLM 基于描述回答问题(如“这幅图片中的建筑是什么风格?”)。
(2 )语音交互:将用户语音转换为文本(如调用Whisper API ),处理后再将答案转换为语音输出(连接TTS 工具)。
LangChain 的核心价值是“连接LLM 与外部世界”,通过模块化组件(Chains 、Agents 、Memory 、Tools 等)降低开发门槛,让LLM 从“通用对话模型”升级为“能解决实际问题的工具”。其应用场景覆盖客服、教育、企业办公、开发等多个领域,且可通过自定义组件扩展至更复杂的业务需求。
本文节选自《AI Agent智能体开发实践》,获出版社和作者授权发布。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/18841117/viewspace-3105820/ ,如需转载,请注明出处,否则将追究法律责任。