尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
03_Agent智能体与LangGraph
03 — Agent 智能体与 LangGraph 知识点总结面向人群:AI 初学者 / 大模型应用开发岗位候选人学习目标:从零理解 Agent 的原理、实现方式和企业落地实践前置知识:了解 LLM 基本调用、Prompt 工程目录Agent 基础概念Tool 工具定义Agent 实现方式Agent Memory(智能体记忆)中间件(Middleware)人在回路(Human-in-the-Loop)LangGraph 状态图LangGraph 工作流模式综合实战:智能问答 AgentAgent 面试重点一、Agent 基础概念1.1 什么是 AgentAgent(智能体)是"LLM + 工具 + 决策循环"的组合体。它不止会"说话",还会"行动"。对比维度普通 LLMAgent能力范围只能生成文本能调用工具、访问数据库、执行代码决策方式一次回答结束多轮思考-行动循环对外交互无(纯文本输出)有(通过工具操作外部系统)典型输出“北京今天可能会下雨”调用天气API获取实时数据后回答Agent 的核心三要素:┌─────────────┐ │ LLM (大脑) │ ← 推理决策 └──────┬──────┘ │ 决策 ┌────────┴────────┐ │ │ ┌────▼────┐ ┌────▼────┐ │ Tool (手) │ │ Memory │ ← 记忆 └──────────┘ └─────────┘1.2 ReAct 模式:Reason → Act → Observe 循环ReAct = Reasoning(推理) + Acting(行动),是 Agent 最核心的工作模式。用户提问 "北京今天天气怎么样?" │ ▼ ┌─ 步骤1: 推理 (Reason) ─────────────────────┐ │ LLM 思考:"用户想知道北京天气, │ │ 我需要调用 get_weather 工具" │ └────────────────────────────────────────────┘ │ ▼ ┌─ 步骤2: 行动 (Act) ────────────────────────┐ │ 调用工具 get_weather(city="北京") │ │ 返回结果:"晴,25°C" │ └────────────────────────────────────────────┘ │ ▼ ┌─ 步骤3: 观察 (Observe) ────────────────────┐ │ LLM 看到工具返回的数据 │ │ 思考:"北京是晴天,25度" │ └────────────────────────────────────────────┘ │ ▼ ┌─ 步骤4: 最终回答 ──────────────────────────┐ │ "北京今天天气晴朗,气温25°C,适合外出活动" │ └────────────────────────────────────────────┘循环的关键:如果 LLM 认为还需要更多信息,它会再次调用工具(循环),直到所有信息足够回答用户为止。1.3 Agent vs 普通 LLM 的代码对比# ===== 普通 LLM =====model.invoke("北京今天天气怎么样?")# 输出: "我无法获取实时天气数据,建议你查看天气预报APP"# ===== Agent =====@tooldefget_weather(city:str)-str:"""查询指定城市的天气。"""return{"北京":"晴,25°C","上海":"多云,28°C"}.get(city,"暂无数据")agent=create_agent(model=model,tools=[get_weather],system_prompt="你是一个有用的助手")agent.invoke({"messages":[HumanMessage("北京今天天气怎么样?")]})# 输出: "北京今天天气晴朗,气温25°C,适合外出活动"1.4 生活化比喻Agent = 餐厅服务员顾客点餐(用户输入)服务员判断需要什么(LLM 推理)去厨房/吧台取餐(调用工具)端给顾客(输出答案)复杂订单多跑几趟(多次循环)普通 LLM = 只会说话的顾问能给出建议,但无法实际操作说"你应该查一下天气预报",但自己不会查二、Tool 工具定义2.1 什么是 ToolTool(工具)是 Agent 与外部世界交互的桥梁。纯 LLM 只能"说"——生成文字;有了 Tool 就能"做"——调用外部函数。Tool = 给 AI 配的工具箱。2.2 @tool 装饰器基础LangChain 提供了最简洁的工具定义方式——@tool装饰器:fromlangchain_core.toolsimporttool@tooldefget_weather(city:str)-str:"""查询指定城市的天气信息。 Args: city: 城市名称,如"北京"、"上海" """weather_db={"北京":"晴,25°C","上海":"多云,28°C","广州":"小雨,30°C"}returnweather_db.get(city,f"暂无{city}的天气数据")# 查看工具元信息print(f"工具名:{get_weather.name}")# get_weatherprint(f"描述:{get_weather.description}")# 查询指定城市的天气信息print(f"参数:{get_weather.args}")# {'city': {'title': 'City', 'type': 'string'}}# 直接调用(不需要LLM)result=get_weather.invoke({"city":"北京"})关键点:函数的文档字符串(docstring)会被 LLM 读取,帮助 LLM 决定何时调用该工具函数的类型注解会被自动提取为参数 Schema@tool装饰器自动将函数转换为 LLM 可调用的工具对象2.3 工具描述的重要性LLM 通过工具的描述来决定是否调用它。描述写得越清楚,LLM 就越能正确地使用工具。# ❌ 不好的描述@tooldefcalc(x:str)-str:"""计算"""returnstr(eval(x))# ✅ 好的描述@tooldefcalculate(expression:str)-str:"""执行数学计算。 当你需要做加减乘除、幂运算、三角函数等数学计算时使用。 Args: expression: 数学表达式,如 "3 + 5 * 2", "sqrt(16)", "2 ** 10" """try:returnstr(eval(expression,{"__builtins__":{}},{}))exceptExceptionase:returnf"计算错误:{e}"面试重点:工具描述是 Agent 正确性的关键。描述模糊 = LLM 不会用该工具 = 工具形同虚设。2.4 bind_tools() 工具注册工具定义好后,需要通过bind_tools()注册到模型:# 1. 定义工具@tooldefget_weather(city:str)-str:"""查询天气"""...@tooldefcalculator(expression:str)-str:"""计算数学表达式"""...# 2. 注册到模型model=ChatOllama(model="qwen3.5:2b")model_with_tools=model.bind_tools([get_weather,calculator])# 3. 现在模型知道有哪些工具可用# 当用户问"北京天气怎么样",model_with_tools 会返回 tool_callsresponse=model_with_tools.invoke("北京天气怎么样?")print(response.tool_calls)# [{'name': 'get_weather', 'args': {'city': '北京'}, 'id': '...'}]2.5 复杂参数与 Pydantic Schema当工具参数比较复杂时,可以用 Pydantic 模型定义参数 Schema,自带类型验证:frompydanticimportBaseModel,FieldfromtypingimportLiteralclassWeatherInput(BaseModel):"""天气查询参数。"""city:str=Field(description="城市名称")units:Literal["celsius","fahrenheit"]=Field(default="celsius",description="温度单位")@tool(args_schema=WeatherInput)defget_weather(city:str,units:str="celsius")-str:"""查询指定城市的天气。"""temp=22ifunits=="celsius"else72unit="°C"ifunits=="celsius"else"°F"returnf"{city}当前温度:{temp}{unit}"2.6 企业实践:客服 Agent 的多工具设计在实际企业中,一个客服 Agent 可能需要多个工具协同工作:@tooldefquery_order(order_id:str)-str:"""查询订单状态。"""# 调用订单系统 APIreturnf"订单{order_id}状态: 已发货"@tooldefquery_logistics(express_no:str)-str:"""查询物流信息。"""# 调用物流平台 APIreturnf"快递{express_no}当前位置: 北京分拣中心"@tooldefinitiate_return(order_id:str,reason:str)-str:"""发起退换货申请。"""# 调用售后系统 APIreturnf"退换货申请已提交,订单{order_id}"@tooldefget_support_hours()-str:"""查询客服工作时间。"""return"人工客服工作时间: 周一至周日 9:00-21:00"# 注册所有工具tools=[query_order,query_logistics,initiate_return,get_support_hours]企业中 Agent 工具的设计原则:单一职责:每个工具只做一件事清晰的描述:让 LLM 知道何时调用错误处理:工具内部做好异常捕获安全防护:敏感操作需要权限校验三、Agent 实现方式3.1 方式1:model.bind_tools() + 手动循环最底层的方式,手动控制思考-行动循环:fromlangchain_core.toolsimporttoolfromlangchain_core.messagesimportHumanMessage,ToolMessage@tooldefadd(a:int,b:int)-int:"""计算两个数的和"""returna+b@tooldefmultiply(a:int,b:int)-int:"""计算两个数的乘积"""returna*b tools=[add,multiply]tools_by_name={t.name:tfortintools}model=ChatOllama(model="qwen3.5:2b")model_with_tools=model.bind_tools(tools)# 手动 ReAct 循环messages=[HumanMessage(content="(3 + 4) × 5 等于多少?")]whileTrue:response=model_with_tools.invoke(messages)messages.append(response)# 检查是否需要调用工具ifnothasattr(response,'tool_calls')or
RELATED

相关推荐

RAD与XRAY联动:实现无感漏洞扫描的实战配置与优化策略

RAD与XRAY联动:实现无感漏洞扫描的实战配置与优化策略

1. 项目概述:当RAD遇上XRAY,一种更“聪明”的漏洞扫描方式在渗透测试和信息安全评估的日常工作中,漏洞扫描是绕不开的一环。传统的扫描方式,无论是直接丢给AWVS、Nessus一个URL,还是用Burp Suite的爬虫被动抓取&#x…

📅 2026/11/9 20:26:48
如何快速掌握Blender的Unreal PSK/PSA插件:3D游戏资产导入导出终极指南

如何快速掌握Blender的Unreal PSK/PSA插件:3D游戏资产导入导出终极指南

如何快速掌握Blender的Unreal PSK/PSA插件:3D游戏资产导入导出终极指南 【免费下载链接】io_scene_psk_psa A Blender extension for importing and exporting Unreal PSK and PSA files 项目地址: https://gitcode.com/gh_mirrors/io/io_scene_psk_psa 想要…

📅 2026/11/10 17:31:44
精密高速模具机打刀缸选型指南:高端台系工艺如何重塑国产标杆

精密高速模具机打刀缸选型指南:高端台系工艺如何重塑国产标杆

在2026年智能制造全面升级的背景下,精密高速模具机作为3C电子、新能源零部件及精密五金冲压的核心装备,其性能直接决定了产品的良率与生产效率。随着终端市场对加工节拍的极致追求,机床主轴的换刀速度不断攀升,这对机床内部核心动…

📅 2026/11/11 13:29:33
MORE NEWS

更多资讯

📰

阜南有办理电工证的吗网上查询别踩坑,这几点必须知道

阜南有办理电工证的吗网上查询别踩坑,这几点必须知道 怕考不过白交培训费?阜南有办理电工证的吗?很多人跑遍本地培训机构,结果发现内容杂乱、培训不系统,最终还是考不过,钱花了不说,还浪费了时间。其实,只要搞懂几个关键点,网上查询就能帮你避开大多…

📰

宝鸡电工证培训学习在哪考才不白交钱

宝鸡电工证培训学习在哪考才不白交钱 怕考不过白交培训费?宝鸡电工证培训学习在哪考才不踩坑?这事儿你必须搞清楚,不然花大钱也拿不到证,耽误工作还丢人。…

📰

诸城报考电工证多少钱?全国通用证件到底值不值?

诸城报考电工证多少钱?全国通用证件到底值不值? 你正为找工作发愁,可偏偏缺个特种作业证,尤其是 诸城报考电工证多少钱 这个问题,直接关系到你能不能上岗。现在各行各业对特种作业证的要求越来越严格,尤其是电工证, 全国通用…

📰

凯里哪里考电工证真实经历:外省证怎么转,我亲测的流程和避坑指南

凯里哪里考电工证真实经历:外省证怎么转,我亲测的流程和避坑指南 之前考的证在外省能不能转过来?这个问题我问过好几个人,答案五花八门,直到我自己去办了,才知道流程和细节。今天我就把【凯里哪里考电工证】的真实经历、转证流程、报考避坑干货和职业发…

📰

茶山电工证办理多久拿证?证书过期了不知道怎么复审延期

茶山电工证办理多久拿证?证书过期了不知道怎么复审延期 证书过期了不知道怎么复审延期,你不是一个人。去年年底我帮许昌一位市政工程的老电工处理证书复审,结果因为错过了复审窗口,直接被暂停了上岗资格,项目停工还赔了公司一笔钱。这就是为什么现在…

📰

电工作业考哪些证网上查询全攻略,学历不高也能报!

电工作业考哪些证网上查询全攻略,学历不高也能报! 你是不是也觉得学历不高,怕报不了电工证?别担心,现在只要你想干电工这一行, 电工作业考哪些证网上查询…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬