Python列表与元组:可变性、内存机制与实战选型指南
2026/10/14 7:24:33
大语言模型 (LLM) 开发工程师 | 中国传媒大学 · 数字媒体技术(智能交互与游戏设计)
CSDN · 个人主页 | GitHub · Follow
「让 AI 交互更智能,让技术落地更高效」
欢迎技术探讨与项目合作,解锁大模型与智能交互的无限可能!
LangChain 1.0 Agents系统实现从碎片化到标准化升级,以create_agent为核心接口,基于LangGraph构建统一Agent抽象,10行代码即可创建基础Agent,封装"模型调用→工具选择→执行→结束"闭环流程。Agent是LangChain 1.0的核心创新之一,使智能体开发变得更加简单和标准化。
核心组件:
| Agent类型 | 特点 | 适用场景 | 实现方式 | 优势 |
|---|---|---|---|---|
| 基础Agent | 简单的工具调用 | 单步骤任务 | create_agent() | 开发简单,部署快 |
| 规划Agent | 多步骤规划 | 复杂任务 | create_planning_agent() | 任务分解,执行有序 |
| 协作Agent | 多Agent协作 | 复杂项目 | LangGraph多节点 | 分工明确,效率高 |
| 检索增强Agent | 结合RAG | 知识密集型任务 | create_retrieval_agent() | 知识丰富,准确性高 |
| 工具使用Agent | 复杂工具调用 | 工具密集型任务 | create_tool_agent() | 工具使用能力强 |
使用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"])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)AgentState 是智能体的核心状态结构,包含以下字段:
| 字段 | 类型 | 描述 |
|---|---|---|
| messages | List[BaseMessage] | 对话历史 |
| tool_calls | List[ToolCall] | 工具调用记录 |
| tool_results | List[ToolResult] | 工具执行结果 |
| is_finished | bool | 任务是否完成 |
| output | str | 最终输出 |
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"}})LangChain 提供了多种内置中间件,用于增强智能体的功能:
| 中间件 | 功能 | 用途 |
|---|---|---|
| HumanInTheLoop | 人工干预 | 关键决策时暂停等待人工确认 |
| RetryMiddleware | 自动重试 | 工具调用失败时自动重试 |
| TimeoutMiddleware | 超时控制 | 限制工具执行时间 |
| RateLimitMiddleware | 速率限制 | 控制API调用频率 |
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])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)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"])| 优化维度 | 策略 | 实现方法 |
|---|---|---|
| 工具选择 | 减少工具数量 | 只包含必要工具 |
| 提示词 | 优化系统提示 | 明确任务目标和约束 |
| 模型选择 | 合适的模型 | 复杂任务使用更强大的模型 |
| 执行步骤 | 限制步数 | 设置 max_steps |
| 错误处理 | 增加重试机制 | 使用 RetryMiddleware |
使用 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":"测试任务"}]})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)importrequests# 调用部署的 Agentresponse=requests.post("http://localhost:8000/agent/invoke",json={"input":{"messages":[{"role":"user","content":"345乘以678等于多少?"}]}})print(response.json())LangChain 1.0 的 Agent 系统通过 create_agent API 和 LangGraph 运行时,为开发者提供了构建智能体应用的强大工具。通过本文的介绍,开发者可以掌握 Agent 的创建、配置、状态管理和部署等核心功能,实现复杂任务的自动执行与决策。
在后续的博客中,我们将介绍如何通过 LangGraph 实现更复杂的工作流,以及如何构建完整的智能体应用系统。