霍格沃兹测试开发学社
06-27 · 北京测吧
给大模型装上“手脚”(三)
3.2 三种定义方式方式一:@tool 装饰器(最推荐)from langchain_core.tools import tool@tooldef get_weather(city: str) -> str: """获取指定城市的当前天气。 参数: city: 城市名称,例如 '北京', '上海'。 """ # 实际场景中替换为 API 调用 weather_data = { "北京": "晴天,25°C", "上海": "多云,28°C", } return weather_data.get(city, f"{city} 暂无数据")函数的 docstring 自动成为工具的 description。这是最简洁的方式,适合 80% 的场景。方式二:继承 BaseTool(需要复杂逻辑时)适合需要复杂初始化、状态管理或错误处理的场景。方式三:Tool 类实例化(快速封装现有函数)适合快速把已有的函数包装成 Tool,不改动原函数代码。3.3 Tool 设计的两条铁律铁律一:单一职责。 一个 Tool 只做一件事。登录就是登录,查库存就是查库存。不要写一个“万能工具”试图覆盖所有场景。铁律二:输入输出都要结构化。 输入用 Pydantic BaseModel 定义 schema,输出用 JSON 或明确的字典结构。大模型不懂“随意格式”,它只认 Schema。四、Agent 机制拆解:怎么让大模型自己“决定用哪只手”有了 Tools,下一个问题是:谁来决定什么时候用哪个 Tool?这就是 Agent 的事。4.1 ReAct 循环:推理-行动-观测Agent 的核心执行模式叫 ReAct——Reasoning + Acting。具体流程是:推理(Reasoning) :面对用户的问题,Agent 先思考“我需要做什么、用什么工具”行动(Acting) :调用对应的 Tool,获取结果观测(Observation) :分析 Tool 返回的结果,判断任务是否完成如果没完成,回到步骤 1,继续循环这个循环一直持续到 Agent 认为任务完成,或者达到最大迭代次数。
发布于 北京
分享
评论
赞
未登录
友善发言
评论
加载中
下载脉脉APP,成就职业梦想
违法不良信息&未成年人有害信息举报电话/客服电话:400 065 0808
违法不良信息&未成年人有害信息举报邮箱/客服邮箱:maimai@taou.com
清朗系列专项行动相关违规信息举报电话:400 065 0808,举报邮箱:maimai@taou.com
个人/企业等被诽谤侮辱、人身权或知识产权等被侵犯、网络谣言的举报地址:maimai.cn/tousu | 涉企虚假不实信息举报投诉专区
京ICP备12005786号-1copyright©maimai.cn