当前位置: 首页 > news >正文

LangChain 1.0 Agent开发:从创建到部署的完整指南

玄同 765

大语言模型 (LLM) 开发工程师 | 中国传媒大学 · 数字媒体技术(智能交互与游戏设计)

CSDN · 个人主页 | GitHub · Follow


关于作者

  • 深耕领域:大语言模型开发 / RAG 知识库 / AI Agent 落地 / 模型微调
  • 技术栈:Python | RAG (LangChain / Dify + Milvus) | FastAPI + Docker
  • 工程能力:专注模型工程化部署、知识库构建与优化,擅长全流程解决方案

「让 AI 交互更智能,让技术落地更高效」
欢迎技术探讨与项目合作,解锁大模型与智能交互的无限可能!


一、Agent 概述

1.1 Agent 核心概念

LangChain 1.0 Agents系统实现从碎片化到标准化升级,以create_agent为核心接口,基于LangGraph构建统一Agent抽象,10行代码即可创建基础Agent,封装"模型调用→工具选择→执行→结束"闭环流程。Agent是LangChain 1.0的核心创新之一,使智能体开发变得更加简单和标准化。

核心组件:

  • 核心API:create_agent() - 简化Agent创建
  • 执行引擎:LangGraph Runtime - 提供状态管理和持久化
  • 中间件:Middleware - 如HITL(人工干预)、压缩、路由
  • 状态管理:AgentState - 统一的状态结构

1.2 Agent 执行流程

用户输入

create_agent

模型分析

需要工具?

选择工具

执行工具

获取结果

模型总结

返回答案

1.3 Agent 类型对比

Agent类型特点适用场景实现方式优势
基础Agent简单的工具调用单步骤任务create_agent()开发简单,部署快
规划Agent多步骤规划复杂任务create_planning_agent()任务分解,执行有序
协作Agent多Agent协作复杂项目LangGraph多节点分工明确,效率高
检索增强Agent结合RAG知识密集型任务create_retrieval_agent()知识丰富,准确性高
工具使用Agent复杂工具调用工具密集型任务create_tool_agent()工具使用能力强

1.4 Agent 系统架构

用户层

Agent接口层

执行引擎层

工具层

记忆层

模型层

外部系统

二、Agent 创建与配置

2.1 基本创建方法

使用create_agentAPI 创建智能体:

fromlangchain.agentsimportcreate_agentfromlangchain_openaiimportChatOpenAIfromlangchain_core.toolsimporttool# 1. 定义工具@tooldefmultiply(a:int,b:int)->int:"""Multiplies a and b."""returna*b@tooldefdivide(a:int,b:int)->float:"""Divides a by b."""ifb==0:raiseValueError("除数不能为零")returna/b# 2. 初始化模型model=ChatOpenAI(model="gpt-4o-mini")# 3. 创建智能体agent=create_agent(model,[multiply,divide])# 4. 执行任务result=agent.invoke({"messages":[{"role":"user","content":"345乘以678等于多少?"}]})print(result["messages"][-1]["content"])

2.2 高级配置选项

create_agent支持多种高级配置选项:

fromlangchain.agentsimportcreate_agentfromlangchain.agentsimportAgentStatefromlangchain_core.runnablesimportRunnablePassthrough# 高级配置示例agent=create_agent(model,tools,# 自定义状态处理state_modifier=RunnablePassthrough.assign(extra_info=lambdax:{"user_id":"123"}),# 自定义输出解析output_parser=None,# 中间件middleware=[],# 最大步数max_steps=10,# verbose模式verbose=True)

三、Agent 状态管理

3.1 AgentState 结构

AgentState 是智能体的核心状态结构,包含以下字段:

字段类型描述
messagesList[BaseMessage]对话历史
tool_callsList[ToolCall]工具调用记录
tool_resultsList[ToolResult]工具执行结果
is_finishedbool任务是否完成
outputstr最终输出

3.2 状态持久化

LangGraph 提供了状态持久化功能,支持任务中断后恢复:

fromlanggraph.checkpoint.memoryimportMemorySaverfromlangchain.agentsimportcreate_agent# 1. 创建检查点存储checkpoint_saver=MemorySaver()# 2. 创建智能体agent=create_agent(model,tools,checkpoint_saver=checkpoint_saver,name="my_agent")# 3. 执行任务(带会话ID)result=agent.invoke({"messages":[{"role":"user","content":"345乘以678等于多少?"}]},config={"configurable":{"thread_id":"thread_1"}})# 4. 继续执行(使用相同会话ID)result=agent.invoke({"messages":[{"role":"user","content":"结果除以2是多少?"}]},config={"configurable":{"thread_id":"thread_1"}})

四、中间件与钩子

4.1 内置中间件

LangChain 提供了多种内置中间件,用于增强智能体的功能:

中间件功能用途
HumanInTheLoop人工干预关键决策时暂停等待人工确认
RetryMiddleware自动重试工具调用失败时自动重试
TimeoutMiddleware超时控制限制工具执行时间
RateLimitMiddleware速率限制控制API调用频率

4.2 自定义中间件

fromlangchain_core.runnablesimportRunnablefromlangchain_core.agentsimportAgentStateclassLoggingMiddleware(Runnable):def__init__(self,next_runnable):self.next_runnable=next_runnabledefinvoke(self,input,config=None):# 执行前日志print(f"执行前:{input}")# 执行下一个组件result=self.next_runnable.invoke(input,config)# 执行后日志print(f"执行后:{result}")returnresult# 使用中间件agent=create_agent(model,tools,middleware=[LoggingMiddleware])

五、实战案例

5.1 构建一个客服机器人

fromlangchain.agentsimportcreate_agentfromlangchain_openaiimportChatOpenAIfromlangchain_core.toolsimporttoolimportrequests# 1. 定义工具@tooldefget_product_info(product_id:str)->str:"""获取产品信息"""# 模拟API调用products={"p1":"产品名称:智能手表\n价格:1999元\n库存:100件","p2":"产品名称:无线耳机\n价格:999元\n库存:200件","p3":"产品名称:智能音箱\n价格:599元\n库存:50件"}returnproducts.get(product_id,"产品不存在")@tooldefcreate_order(product_id:str,quantity:int)->str:"""创建订单"""# 模拟创建订单returnf"订单创建成功!产品ID:{product_id}, 数量:{quantity}"# 2. 初始化模型model=ChatOpenAI(model="gpt-4o-mini")# 3. 创建智能体agent=create_agent(model,[get_product_info,create_order])# 4. 测试对话conversations=["我想了解产品p1的信息","帮我创建一个订单,购买2件产品p1","产品p3的价格是多少?"]formsginconversations:result=agent.invoke({"messages":[{"role":"user","content":msg}]})print(f"用户:{msg}")print(f"助手:{result['messages'][-1]['content']}")print("="*50)

5.2 构建一个数据分析助手

fromlangchain.agentsimportcreate_agentfromlangchain_openaiimportChatOpenAIfromlangchain.toolsimportPythonREPLToolimportpandasaspdimportnumpyasnp# 1. 初始化工具python_repl=PythonREPLTool()# 2. 初始化模型model=ChatOpenAI(model="gpt-4o-mini")# 3. 创建智能体agent=create_agent(model,[python_repl])# 4. 测试数据分析任务task="生成100个正态分布的随机数,计算均值和标准差,然后绘制直方图"result=agent.invoke({"messages":[{"role":"user","content":task}]})print(result["messages"][-1]["content"])

六、Agent 性能优化

6.1 优化策略

优化维度策略实现方法
工具选择减少工具数量只包含必要工具
提示词优化系统提示明确任务目标和约束
模型选择合适的模型复杂任务使用更强大的模型
执行步骤限制步数设置 max_steps
错误处理增加重试机制使用 RetryMiddleware

6.2 监控与评估

使用 LangSmith 监控 Agent 执行情况:

importos# 设置 LangSmith 环境变量os.environ["LANGSMITH_TRACING"]="true"os.environ["LANGSMITH_PROJECT"]="my-agent-project"os.environ["LANGSMITH_API_KEY"]="your-api-key"# 创建并执行 Agentagent=create_agent(model,tools)result=agent.invoke({"messages":[{"role":"user","content":"测试任务"}]})

七、部署与集成

7.1 使用 LangServe 部署

LangServe 可以将 Agent 部署为 REST API:

# app.pyfromfastapiimportFastAPIfromlangchain.serveimportadd_routesfromlangchain.agentsimportcreate_agentfromlangchain_openaiimportChatOpenAIfromlangchain_core.toolsimporttool# 1. 创建工具@tooldefmultiply(a:int,b:int)->int:"""Multiplies a and b."""returna*b# 2. 创建 Agentmodel=ChatOpenAI(model="gpt-4o-mini")agent=create_agent(model,[multiply])# 3. 创建 FastAPI 应用app=FastAPI()# 4. 添加路由add_routes(app,agent,path="/agent")if__name__=="__main__":importuvicorn uvicorn.run(app,host="0.0.0.0",port=8000)

7.2 客户端调用

importrequests# 调用部署的 Agentresponse=requests.post("http://localhost:8000/agent/invoke",json={"input":{"messages":[{"role":"user","content":"345乘以678等于多少?"}]}})print(response.json())

八、应用场景分析

8.1 适合使用 Agent 的场景

  • 复杂任务:需要多步骤完成的任务
  • 工具依赖:需要调用外部工具的任务
  • 决策需求:需要根据情况做出决策的任务
  • 知识密集:需要检索和整合知识的任务
  • 自动化流程:需要自动执行一系列操作的任务

8.2 Agent 系统的局限性

  • 计算成本:多次模型调用增加成本
  • 执行时间:多步骤执行可能较慢
  • 可靠性:工具调用失败可能影响整体任务
  • 复杂性:调试和监控较为复杂

九、总结

LangChain 1.0 的 Agent 系统通过 create_agent API 和 LangGraph 运行时,为开发者提供了构建智能体应用的强大工具。通过本文的介绍,开发者可以掌握 Agent 的创建、配置、状态管理和部署等核心功能,实现复杂任务的自动执行与决策。

在后续的博客中,我们将介绍如何通过 LangGraph 实现更复杂的工作流,以及如何构建完整的智能体应用系统。

http://www.jsqmd.com/news/346353/

相关文章:

  • 结论
  • LangChain 1.0 工具系统:从内置工具到自定义工具开发
  • 2026美国旅游全流程攻略:行程案例与机票预订指南 - 资讯焦点
  • 2026年早强剂外加剂供应商推荐,帮助您快速找到合适的批发商 - 睿易优选
  • 2026匠心制造:探秘高品质酒石酸氢胆碱生产商济南亚西亚药业有限公司 - 资讯焦点
  • LangChain 1.0 记忆系统:会话管理与长期记忆存储
  • 基于Java和Html的在线考试管理系统开题报告
  • Antigravity 使用 LLDB 调试 Qt6 MinGW
  • Java做人工智能:JBoltAI框架多模态与OCR技术解度
  • 在线教育互动课堂开发实战|从技术选型到高互动体验打造
  • 广州雅思封闭营哪家环境好、管理严?2026寒假机构避坑指南 - 讯息观点
  • 十大正规股票配资平台靠谱吗:从实盘交易与口碑看 - 资讯焦点
  • 静态住宅ISP代理:企业如何选择住宅代理IP?2026深度解析指南
  • 18-iptables防火墙
  • 狂飙的 165k Star:OpenClaw 开启个人 AGI 时代,让 AI 真正“接管”你的电脑
  • 长沙本地生活代运营榜:三十六行长沙分公司 9.99 分领跑 - 野榜数据排行
  • 豆瓣电影数据分析可视化系统 基于Python Flask+MySQL实现多维度电影数据洞察
  • 同程国际航班变更通知体系深度解析:技术、渠道与服务的全流程保障 - 资讯焦点
  • 用Python来学微积分23-微分中值定理 - 详解
  • 2026上海财税公司推荐|靠谱合规,口碑优选高性价比 - 品牌智鉴榜
  • PyTorch DDP官方文档学习笔记(核心干货版)
  • 2026年蚌埠蚌山区优质装修公司综合评估与推荐 - 2026年企业推荐榜
  • 2026论文通关指南:5款降重降AI工具实测,谁是Turnitin的克星? - 品牌观察员小捷
  • 2026年口碑好的FCL快速限流器/DDX1短路电流限制器厂家实力及用户口碑排行榜 - 深度智识库
  • 2026国内最新出国留/1+3/2+2/3+1/2+3/HND项目TOP5推荐:广东等地优质机构权威榜单发布,多元模式适配英澳等国留学需求 - 品牌推荐2026
  • 价格波动不踩坑,履约有保障——同程凭体系化机制,筑牢出行安心防线 - 资讯焦点
  • 权威榜单|接地电阻测试仪行业十大品牌推荐(2026排行榜) - 品牌推荐大师1
  • 四大旅行平台价格波动相关服务机制对比分析 - 资讯焦点
  • 2026年口碑优秀的FCL快速限流器/DDX1短路电流限制器厂家实力及用户口碑综合评述 - 深度智识库
  • 三家股票配资平台哪家安全靠谱?实测推荐正规实盘交易公司 - 资讯焦点