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

Tool和Agent

文章目录

  • Tool(工具)
    • 定义与功能
  • Agent(智能体)
    • 定义与功能
    • 工作流程
  • Tool与Agent
  • 案例
    • 案例1:
    • 案例2:

Tool(工具)

定义与功能

  • 单一功能模块:Tool是完成特定任务的独立工具,每个工具专注于一项具体操作(如搜索、计算、API调用等)。
  • 无决策能力:工具本身不决定何时被调用,仅在被触发时执行预设操作
  • 输入输出明确:每个工具需明确定义输入参数和输出格式,例如:
    • 搜索工具:输入是查询字符串,输出是搜索结果。
    • 计算工具:输入是数学表达式,输出是计算结果
      可以理解为java中的工具类或者工具包

Agent(智能体)

定义与功能

  • 任务协调者:Agent是自主决策的智能体,负责解析用户意图、规划任务步骤、调用工具并整合结果。
  • 决策逻辑:基于LLM的推理能力(如ReAct框架),动态决定使用哪些工具及执行顺序
  • 上下文管理:维护任务状态,处理工具返回的中间结果,最终生成用户友好的响应

工作流程

  • 理解意图:解析用户输入的深层需求(如“比较Python和Java的优缺点“需多步调研)
  • 规划步骤:决定调用工具的顺序(如先搜索Python特性,再搜索Java特性)
  • 执行工具:调用Tool获取数据,处理可能的错误或重试
  • 综合响应:将多个工具的结果整合为自然语言回答

可以理解为一个小项目

Tool与Agent

通过这种分工,Langchain实现了模块化与智能化的结合:Tool提供基础能力,Agent赋予系统自主决策的灵活性,两者协同完成从简单查询到复杂问题求解的多样化任务,

案例

langchain中自带的tool

在这里插入图片描述

我们以Tavily为例写一个案例。我们进入Tavily会看到要求我们进行注册、申请key才能使用这个工具。

在这里插入图片描述

点击进去后注意一个账户(可以使用QQ邮箱注册)。注册后申请一个key,复制下这个key用于后面开发使用

在这里插入图片描述

案例1:

使用 TavilySearchResults 进行搜索,将查询结果打印出来


import os

from langchain_community.tools import TavilySearchResults
"""
使用 TavilySearchResults 进行搜索,将查询结果打印出来
"""
# 设置 TAVILY  的 API key
os.environ["TAVILY_API_KEY"] = "-----"

search_tool = TavilySearchResults(max_results=3)
rest = search_tool.invoke("2025年2月16日,成都市天气怎么样?")
print(rest)

结果:


E:\learn_work_spaces\PythonProject1\.venv\Scripts\python.exe E:\learn_work_spaces\PythonProject1\tool与agent案例1.py 
[{'title': '2025年2月26日成都天气:多云,适合出行与户外活动 - 新闻- 搜狐', 'url': 'https://news.sohu.com/a/863874512_121976704', 'content': '今天是2025年2月26日,成都市的天气情况多云,温度在较为舒适的8°C左右,白天气温将升高到16°C。早晨出门时气温较低,建议在上班通勤时穿着较厚的衣物以防', 'score': 0.6058229}, {'title': '2025年2月16日天气预报 - 衢州市人民政府', 'url': 'https://www.qz.gov.cn/art/2025/2/16/art_1525280_59041005.html', 'content': '今天阴转多云,早晨局部有雾。 明天多云转阴有小雨,部分中雨。 偏西风2到3级。 今天白天最高气温17到19℃(较昨天高7℃左右),明天早晨最低气温4到6℃(较今天低', 'score': 0.38720417}, {'title': '预报- 成都 - 中国天气网', 'url': 'https://www.weather.com.cn/weather/101270101.shtml', 'content': '更多 北京 上海 成都 杭州 南京 天津 深圳 重庆 西安 广州 青岛 武汉 佘山 春城湖畔 华彬庄园 观澜湖 依必朗 旭宝 博鳌 玉龙雪山 番禺南沙 东方明珠 <<返回 全国 周边景点 全国> 四川 > 成都> 城区 10/1℃ 10/4℃ 11/5℃ 9/5℃ 5/3℃ 5/3℃ 7/3℃ 较冷 _穿衣指数_建议着厚外套加毛衣等服装。 强 _紫外线指数_涂擦SPF大于15、PA+防晒护肤品。 较易发 _感冒指数_天凉,湿度大,较易感冒。 冷 _穿衣指数_建议着棉衣加羊毛衫等冬季服装。 强 _紫外线指数_涂擦SPF大于15、PA+防晒护肤品。 较易发 _感冒指数_天凉,湿度大,较易感冒。 较冷 _穿衣指数_建议着厚外套加毛衣等服装。 较适宜 _洗车指数_无雨且风力较小,易保持清洁度。 强 _紫外线指数_涂擦SPF大于15、PA+防晒护肤品。 较易发 _感冒指数_天凉,湿度大,较易感冒。 较不宜 _运动指数_有降水,推荐您在室内进行休闲运动。 冷 _穿衣指数_建议着棉衣加羊毛衫等冬季服装。 最弱 _紫外线指数_辐射弱,涂擦SPF8-12防晒护肤品。 极易发 _感冒指数_强降温,天气寒冷,湿度大,极易感冒。 较不宜 _运动指数_有降水,推荐您在室内进行休闲运动。 冷 _穿衣指数_建议着棉衣加羊毛衫等冬季服装。 最弱 _紫外线指数_辐射弱,涂擦SPF8-12防晒护肤品。 较不宜 _运动指数_有降水,推荐您在室内进行休闲运动。 冷 _穿衣指数_建议着棉衣加羊毛衫等冬季服装。 最弱 _紫外线指数_辐射弱,涂擦SPF8-12防晒护肤品。 极易发 _感冒指数_寒冷潮湿,易发生感冒。 较不宜 _运动指数_有降水,推荐您在室内进行休闲运动。 冷 _穿衣指数_建议着棉衣加羊毛衫等冬季服装。 最弱 _紫外线指数_辐射弱,涂擦SPF8-12防晒护肤品。 河南平顶山气温低至冰点以下 植物染霜 中国天气网 2024-12-18 11:34 山东半岛今天仍有降雪 后天新一股冷空气来袭烟台威海局地或现大雪 中国天气网 2024-12-18 10:51 天寒地冻!明后天新一股冷空气来袭 河北再迎大风降温北部或飘雪 中国天气网 2024-12-18 10:14 北京今天晴冷持续北风稍大 明天云量增多山区或有降雪 中国天气网 2024-12-18 06:41 周边地区 | 周边景点 2024-12-18 11:30更新 高清图集 更多>>高清图集 桂林 晴 16/8℃ 适宜 青岛 晴转多云 2/-1℃ 一般', 'score': 0.3231563}]

进程已结束,退出代码为 0


在这里插入图片描述

案例2:


import os

from langchain_community.chat_models import ChatZhipuAI
from langchain_community.tools import TavilySearchResults
from langchain_core.messages import HumanMessage
from langchain_core.output_parsers import JsonOutputParser
from langgraph.prebuilt import create_react_agent

"""
使用agent封裝 TavilySearchResults工具,根據搜索的内容agent自行判断由AI回复还是调用工具进行查询,然后AI整合进行回复
如果出现  {'tools': {'messages': [ToolMessage(content='[{"title": "。。。"   那么表示调用了工具
"""
# 设置 TAVILY  的 API key
os.environ["TAVILY_API_KEY"] = "t--------7"
# 设置智普 AI 的 API key
os.environ["ZHIPUAI_API_KEY"] = "5-------XhLNRdKxlr"
# 初始化智普 AI 模型
llm = ChatZhipuAI()
# 创建单个tool
search_tool = TavilySearchResults(max_results=3)
# 创建tool数组
tools = [search_tool]
# 创建agent
agent = create_react_agent(llm,tools)
# agent流式调用
rest = agent.stream({'messages':[HumanMessage(content="2025年2月16日,成都市天气怎么样?")]})

for chunk in rest:
    print(chunk)
    print('--------------------------------')

结果:

E:\learn_work_spaces\PythonProject1\.venv\Scripts\python.exe E:\learn_work_spaces\PythonProject1\tool与agent案例2.py 
{'agent': {'messages': [AIMessage(content='', additional_kwargs={'tool_calls': [{'function': {'arguments': '{"query":"2025年2月16日成都市天气"}', 'name': 'tavily_search_results_json'}, 'id': 'call_-8891223729123853731', 'index': 0, 'type': 'function'}]}, response_metadata={'token_usage': {'completion_tokens': 26, 'prompt_tokens': 149, 'total_tokens': 175}, 'model_name': 'glm-4', 'finish_reason': 'tool_calls'}, id='run-53fe42f3-a52e-4934-8314-f1914c8d0204-0', tool_calls=[{'name': 'tavily_search_results_json', 'args': {'query': '2025年2月16日成都市天气'}, 'id': 'call_-8891223729123853731', 'type': 'tool_call'}])]}}
--------------------------------
{'tools': {'messages': [ToolMessage(content='[{"title": "2025年2月16日天气预报 - 衢州市人民政府", "url": "https://www.qz.gov.cn/art/2025/2/16/art_1525280_59041005.html", "content": "今天阴转多云,早晨局部有雾。明天多云转阴有小雨,部分中雨。偏西风2到3级。今天白天最高气温17到19℃(较昨天高7℃左右),明天早晨最低气温4到6℃(较今天", "score": 0.37236878}, {"title": "预报- 成都 - 中国天气网", "url": "https://www.weather.com.cn/weather/101270101.shtml", "content": "更多 北京 上海 成都 杭州 南京 天津 深圳 重庆 西安 广州 青岛 武汉 佘山 春城湖畔 华彬庄园 观澜湖 依必朗 旭宝 博鳌 玉龙雪山 番禺南沙 东方明珠 <<返回 全国 周边景点 全国> 四川 > 成都> 城区 10/1℃ 10/4℃ 11/5℃ 9/5℃ 5/3℃ 5/3℃ 7/3℃ 较冷 _穿衣指数_建议着厚外套加毛衣等服装。 强 _紫外线指数_涂擦SPF大于15、PA+防晒护肤品。 较易发 _感冒指数_天凉,湿度大,较易感冒。 冷 _穿衣指数_建议着棉衣加羊毛衫等冬季服装。 强 _紫外线指数_涂擦SPF大于15、PA+防晒护肤品。 较易发 _感冒指数_天凉,湿度大,较易感冒。 较冷 _穿衣指数_建议着厚外套加毛衣等服装。 较适宜 _洗车指数_无雨且风力较小,易保持清洁度。 强 _紫外线指数_涂擦SPF大于15、PA+防晒护肤品。 较易发 _感冒指数_天凉,湿度大,较易感冒。 较不宜 _运动指数_有降水,推荐您在室内进行休闲运动。 冷 _穿衣指数_建议着棉衣加羊毛衫等冬季服装。 最弱 _紫外线指数_辐射弱,涂擦SPF8-12防晒护肤品。 极易发 _感冒指数_强降温,天气寒冷,湿度大,极易感冒。 较不宜 _运动指数_有降水,推荐您在室内进行休闲运动。 冷 _穿衣指数_建议着棉衣加羊毛衫等冬季服装。 最弱 _紫外线指数_辐射弱,涂擦SPF8-12防晒护肤品。 较不宜 _运动指数_有降水,推荐您在室内进行休闲运动。 冷 _穿衣指数_建议着棉衣加羊毛衫等冬季服装。 最弱 _紫外线指数_辐射弱,涂擦SPF8-12防晒护肤品。 极易发 _感冒指数_寒冷潮湿,易发生感冒。 较不宜 _运动指数_有降水,推荐您在室内进行休闲运动。 冷 _穿衣指数_建议着棉衣加羊毛衫等冬季服装。 最弱 _紫外线指数_辐射弱,涂擦SPF8-12防晒护肤品。 河南平顶山气温低至冰点以下 植物染霜 中国天气网 2024-12-18 11:34 山东半岛今天仍有降雪 后天新一股冷空气来袭烟台威海局地或现大雪 中国天气网 2024-12-18 10:51 天寒地冻!明后天新一股冷空气来袭 河北再迎大风降温北部或飘雪 中国天气网 2024-12-18 10:14 北京今天晴冷持续北风稍大 明天云量增多山区或有降雪 中国天气网 2024-12-18 06:41 周边地区 | 周边景点 2024-12-18 11:30更新 高清图集 更多>>高清图集 桂林 晴 16/8℃ 适宜 青岛 晴转多云 2/-1℃ 一般", "score": 0.32293206}, {"title": "天气预报: 中国气象局", "url": "https://weather.cma.cn/", "content": "排名 城市 省份 最高温度1 西沙 海南 22.5℃2 元谋 云南 20℃3 三亚 海南 19.2℃4 保亭 海南 19.1℃5 景洪 云南 18.5℃6 乐东 海南 17.8℃7 五指山 海南 17.5℃8 陵水 海南 17.4℃9 文昌 海南 17.1℃10 昌江 海南 17℃ 排名 城市 省份 最低温度1 漠河 黑龙江 -35.1℃2 巴音布鲁克 新疆 -34.4℃3 阿尔山 内蒙古 -34.2℃4 康保 河北 -34.2℃5 根河 内蒙古 -33.2℃6 呼中 黑龙江 -33.1℃7 那仁宝力格 内蒙古 -33℃8 图里河 内蒙古 -33℃9 正镶白旗 内蒙古 -32℃10 新巴尔虎左旗 内蒙古 -31.9℃ 排名 城市 省份 温差1 仲巴 西藏 24.3℃2 塔中 新疆 22.3℃3 林周 西藏 22.1℃4 吉隆 西藏 21.8℃5 新龙 四川 21.8℃6 尼勒克 新疆 21.7℃7 塔什库尔干 新疆 21.4℃8 隆子 西藏 21.3℃9 尼木 西藏 21.2℃10 朗县 西藏 21℃ 天气预报 更多", "score": 0.20784147}]', name='tavily_search_results_json', id='0fa10c54-a5d8-41a0-9913-0010127a398c', tool_call_id='call_-8891223729123853731', artifact={'query': '2025年2月16日成都市天气', 'follow_up_questions': None, 'answer': None, 'images': [], 'results': [{'url': 'https://www.qz.gov.cn/art/2025/2/16/art_1525280_59041005.html', 'title': '2025年2月16日天气预报 - 衢州市人民政府', 'content': '今天阴转多云,早晨局部有雾。明天多云转阴有小雨,部分中雨。偏西风2到3级。今天白天最高气温17到19℃(较昨天高7℃左右),明天早晨最低气温4到6℃(较今天', 'score': 0.37236878, 'raw_content': None}, {'url': 'https://www.weather.com.cn/weather/101270101.shtml', 'title': '预报- 成都 - 中国天气网', 'content': '更多 北京 上海 成都 杭州 南京 天津 深圳 重庆 西安 广州 青岛 武汉 佘山 春城湖畔 华彬庄园 观澜湖 依必朗 旭宝 博鳌 玉龙雪山 番禺南沙 东方明珠 <<返回 全国 周边景点 全国> 四川 > 成都> 城区 10/1℃ 10/4℃ 11/5℃ 9/5℃ 5/3℃ 5/3℃ 7/3℃ 较冷 _穿衣指数_建议着厚外套加毛衣等服装。 强 _紫外线指数_涂擦SPF大于15、PA+防晒护肤品。 较易发 _感冒指数_天凉,湿度大,较易感冒。 冷 _穿衣指数_建议着棉衣加羊毛衫等冬季服装。 强 _紫外线指数_涂擦SPF大于15、PA+防晒护肤品。 较易发 _感冒指数_天凉,湿度大,较易感冒。 较冷 _穿衣指数_建议着厚外套加毛衣等服装。 较适宜 _洗车指数_无雨且风力较小,易保持清洁度。 强 _紫外线指数_涂擦SPF大于15、PA+防晒护肤品。 较易发 _感冒指数_天凉,湿度大,较易感冒。 较不宜 _运动指数_有降水,推荐您在室内进行休闲运动。 冷 _穿衣指数_建议着棉衣加羊毛衫等冬季服装。 最弱 _紫外线指数_辐射弱,涂擦SPF8-12防晒护肤品。 极易发 _感冒指数_强降温,天气寒冷,湿度大,极易感冒。 较不宜 _运动指数_有降水,推荐您在室内进行休闲运动。 冷 _穿衣指数_建议着棉衣加羊毛衫等冬季服装。 最弱 _紫外线指数_辐射弱,涂擦SPF8-12防晒护肤品。 较不宜 _运动指数_有降水,推荐您在室内进行休闲运动。 冷 _穿衣指数_建议着棉衣加羊毛衫等冬季服装。 最弱 _紫外线指数_辐射弱,涂擦SPF8-12防晒护肤品。 极易发 _感冒指数_寒冷潮湿,易发生感冒。 较不宜 _运动指数_有降水,推荐您在室内进行休闲运动。 冷 _穿衣指数_建议着棉衣加羊毛衫等冬季服装。 最弱 _紫外线指数_辐射弱,涂擦SPF8-12防晒护肤品。 河南平顶山气温低至冰点以下 植物染霜 中国天气网 2024-12-18 11:34 山东半岛今天仍有降雪 后天新一股冷空气来袭烟台威海局地或现大雪 中国天气网 2024-12-18 10:51 天寒地冻!明后天新一股冷空气来袭 河北再迎大风降温北部或飘雪 中国天气网 2024-12-18 10:14 北京今天晴冷持续北风稍大 明天云量增多山区或有降雪 中国天气网 2024-12-18 06:41 周边地区 | 周边景点 2024-12-18 11:30更新 高清图集 更多>>高清图集 桂林 晴 16/8℃ 适宜 青岛 晴转多云 2/-1℃ 一般', 'score': 0.32293206, 'raw_content': None}, {'url': 'https://weather.cma.cn/', 'title': '天气预报: 中国气象局', 'content': '排名 城市 省份 最高温度1 西沙 海南 22.5℃2 元谋 云南 20℃3 三亚 海南 19.2℃4 保亭 海南 19.1℃5 景洪 云南 18.5℃6 乐东 海南 17.8℃7 五指山 海南 17.5℃8 陵水 海南 17.4℃9 文昌 海南 17.1℃10 昌江 海南 17℃ 排名 城市 省份 最低温度1 漠河 黑龙江 -35.1℃2 巴音布鲁克 新疆 -34.4℃3 阿尔山 内蒙古 -34.2℃4 康保 河北 -34.2℃5 根河 内蒙古 -33.2℃6 呼中 黑龙江 -33.1℃7 那仁宝力格 内蒙古 -33℃8 图里河 内蒙古 -33℃9 正镶白旗 内蒙古 -32℃10 新巴尔虎左旗 内蒙古 -31.9℃ 排名 城市 省份 温差1 仲巴 西藏 24.3℃2 塔中 新疆 22.3℃3 林周 西藏 22.1℃4 吉隆 西藏 21.8℃5 新龙 四川 21.8℃6 尼勒克 新疆 21.7℃7 塔什库尔干 新疆 21.4℃8 隆子 西藏 21.3℃9 尼木 西藏 21.2℃10 朗县 西藏 21℃ 天气预报 更多', 'score': 0.20784147, 'raw_content': None}], 'response_time': 1.68})]}}
--------------------------------
{'agent': {'messages': [AIMessage(content='很抱歉,我无法提供2025年2月16日成都市的天气情况,因为目前无法获取未来的天气预报信息。如果您需要其他帮助,请告诉我。', additional_kwargs={}, response_metadata={'token_usage': {'completion_tokens': 36, 'prompt_tokens': 1420, 'total_tokens': 1456}, 'model_name': 'glm-4', 'finish_reason': 'stop'}, id='run-475c0f13-4c06-4826-ad58-1c3280531b70-0')]}}
--------------------------------

进程已结束,退出代码为 0

在这里插入图片描述


http://www.kler.cn/a/583827.html

相关文章:

  • 如何重置 MySQL root 用户的登录密码?
  • 项目型公司如何规避项目风险
  • Mysql表的查询
  • python如何非阻塞的监听按键(win linux亲测)
  • 【存储中间件】Redis核心技术与实战(一):Redis入门与应用(常用数据结构:集合set、有序集合ZSET)
  • 【从零开始学习计算机科学】数据库系统(八)数据库的备份和恢复
  • 制造执行系统(MES)系统基本流程
  • 22 - 天 TCPIP 四层模型是什么?Cookie、Session、Token 之间有什么区别?从网络角度来看,用户从输入网址到网页显示,期间发生了什么?
  • 大白话在 React 中,如何处理表单的复杂验证逻辑?
  • Java中的Logback:高效日志管理解析
  • 如何设计微服务及其设计原则?
  • 【21】单片机编程核心技巧:if语句逻辑与真假判断
  • MCP服务协议详细介绍
  • 【春招笔试】2025.03.13-携程春招笔试
  • CCF CSP 第30次(2023.09)(1_坐标变换_C++)(先输入再计算;边输入边计算)
  • Docker配置代理,以保证可以快速拉取镜像
  • 基于ESP32的桌面小屏幕实战[8]:任务创建
  • 图的存储--十字链表与邻接多重表
  • 2020年SCI1区TOP:自适应粒子群算法MPSO,深度解析+性能实测
  • 【GPT入门】第18课 langchain介绍与API初步体验