玄同 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的核心创新之一使智能体开发变得更加简单和标准化。核心组件核心APIcreate_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*btooldefdivide(a:int,b:int)-float:Divides a by b.ifb0:raiseValueError(除数不能为零)returna/b# 2. 初始化模型modelChatOpenAI(modelgpt-4o-mini)# 3. 创建智能体agentcreate_agent(model,[multiply,divide])# 4. 执行任务resultagent.invoke({messages:[{role:user,content:345乘以678等于多少}]})print(result[messages][-1][content])2.2 高级配置选项create_agent支持多种高级配置选项fromlangchain.agentsimportcreate_agentfromlangchain.agentsimportAgentStatefromlangchain_core.runnablesimportRunnablePassthrough# 高级配置示例agentcreate_agent(model,tools,# 自定义状态处理state_modifierRunnablePassthrough.assign(extra_infolambdax:{user_id:123}),# 自定义输出解析output_parserNone,# 中间件middleware[],# 最大步数max_steps10,# verbose模式verboseTrue)三、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_saverMemorySaver()# 2. 创建智能体agentcreate_agent(model,tools,checkpoint_savercheckpoint_saver,namemy_agent)# 3. 执行任务带会话IDresultagent.invoke({messages:[{role:user,content:345乘以678等于多少}]},config{configurable:{thread_id:thread_1}})# 4. 继续执行使用相同会话IDresultagent.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_runnablenext_runnabledefinvoke(self,input,configNone):# 执行前日志print(f执行前:{input})# 执行下一个组件resultself.next_runnable.invoke(input,config)# 执行后日志print(f执行后:{result})returnresult# 使用中间件agentcreate_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. 初始化模型modelChatOpenAI(modelgpt-4o-mini)# 3. 创建智能体agentcreate_agent(model,[get_product_info,create_order])# 4. 测试对话conversations[我想了解产品p1的信息,帮我创建一个订单购买2件产品p1,产品p3的价格是多少]formsginconversations:resultagent.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_replPythonREPLTool()# 2. 初始化模型modelChatOpenAI(modelgpt-4o-mini)# 3. 创建智能体agentcreate_agent(model,[python_repl])# 4. 测试数据分析任务task生成100个正态分布的随机数计算均值和标准差然后绘制直方图resultagent.invoke({messages:[{role:user,content:task}]})print(result[messages][-1][content])六、Agent 性能优化6.1 优化策略优化维度策略实现方法工具选择减少工具数量只包含必要工具提示词优化系统提示明确任务目标和约束模型选择合适的模型复杂任务使用更强大的模型执行步骤限制步数设置 max_steps错误处理增加重试机制使用 RetryMiddleware6.2 监控与评估使用 LangSmith 监控 Agent 执行情况importos# 设置 LangSmith 环境变量os.environ[LANGSMITH_TRACING]trueos.environ[LANGSMITH_PROJECT]my-agent-projectos.environ[LANGSMITH_API_KEY]your-api-key# 创建并执行 Agentagentcreate_agent(model,tools)resultagent.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. 创建 AgentmodelChatOpenAI(modelgpt-4o-mini)agentcreate_agent(model,[multiply])# 3. 创建 FastAPI 应用appFastAPI()# 4. 添加路由add_routes(app,agent,path/agent)if__name____main__:importuvicorn uvicorn.run(app,host0.0.0.0,port8000)7.2 客户端调用importrequests# 调用部署的 Agentresponserequests.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 实现更复杂的工作流以及如何构建完整的智能体应用系统。