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

(五)智能体与工具协同——打造智能对话的超级助手

上一篇:(四)数据检索与增强生成——让对话系统更智能、更高效

在前四个阶段,我们已经搭建了一个功能强大的智能对话,并深入探讨了输入输出处理、链式工作流构建和数据检索与增强生成的细节。现在,我们将进入智能对话的终极阶段——智能体与工具协同。这一阶段的目标是通过智能体与工具的协同工作,让对话能够处理更加复杂的任务,成为真正的“超级助手”。
(建议从第一篇食用)

一、工具创建:赋予系统实用能力

工具是智能体与外部世界交互的桥梁。通过创建各种工具,我们可以让对话系统具备实际的实用能力。

导入相关库

from langchain_community.chat_models import ChatZhipuAI
from langchain_core.tools import tool
from datetime import datetime
import pytz
from langchain.agents import initialize_agent, AgentType

获取当前时间

@tool
def get_current_time(timezone: str = "America/New_York") -> str:"""获取指定时区的当前时间(默认北京时间)"""now = datetime.now().astimezone(pytz.timezone(timezone))return f"当前时间:{now.strftime('%Y-%m-%d %H:%M:%S %Z')}"

通过这个工具,我们可以获取指定时区的当前时间。这对于需要处理时区相关问题的场景非常有用。

货币汇率转换

@tool
def currency_converter(amount: float, from_cur: str, to_cur: str) -> str:"""货币汇率转换(示例工具,实际需接入API)"""rates = {"USD-CNY": 7.25, "EUR-CNY": 7.88}  # 模拟汇率数据key = f"{from_cur}-{to_cur}"return f"{amount} {from_cur} = {amount * rates.get(key, 1)} {to_cur}"

这个工具可以将一种货币转换为另一种货币。虽然示例中使用了模拟数据,但在实际应用中可以接入真实的汇率API。

二、智能体创建:构建决策与执行的核心

智能体是对话系统的大脑,它负责根据用户的需求选择合适的工具并执行相应的操作。

初始化智能体

tools = [get_current_time, currency_converter]agent = initialize_agent(tools, # 调用工具chat,  # GLM-4-Flash模型agent=AgentType.STRUCTURED_CHAT_ZERO_SHOT_REACT_DESCRIPTION,  # 结构化决策verbose=True  # 显示详细思考过程
)

通过初始化智能体,我们可以将工具与模型绑定在一起,让智能体具备决策和执行的能力。

三、执行查询:让智能体处理复杂任务

智能体的强大之处在于它能够处理复杂的多步骤任务。通过简单的查询,智能体可以自动选择和调用合适的工具。

response = agent.invoke("现在纽约时间几点?换算100美元对应多少人民币?")
print(response["output"])

在执行查询时,智能体会自动进行以下步骤:

  1. 思考任务:分析用户的需求,确定需要完成的任务。
  2. 选择工具:根据任务选择合适的工具。
  3. 调用工具:执行工具并获取结果。
  4. 整合结果:将工具的结果整合成最终的回答。

执行过程详解

在这里插入图片描述

通过这个过程,我们可以看到智能体如何一步步完成复杂任务。它不仅能够理解用户的需求,还能自动选择和调用合适的工具,最终给出准确的回答。

四、总结

智能体与工具协同是智能对话的终极能力,它能够处理更加复杂的任务,成为真正的“超级助手”。通过工具创建、智能体初始化和执行查询等技术,我们可以让对话具备实际的实用能力。

未来,我们可以进一步探索以下方向:

  • 更多实用工具:接入更多外部API,扩展系统的功能边界。
  • 复杂任务处理:通过多步骤决策,处理更加复杂的任务。
  • 实时数据支持:接入实时数据源,让系统能够处理动态变化的信息。

祝我们学习愉快 😊


http://www.mrgr.cn/news/97272.html

相关文章:

  • (四)数据检索与增强生成——让对话系统更智能、更高效
  • (三)链式工作流构建——打造智能对话的强大引擎
  • Nginx介绍及使用
  • Java 类型转换和泛型原理(JVM 层面)
  • 19.go日志包log
  • MessageQueue --- RabbitMQ WorkQueue and Prefetch
  • (二)RestAPI 毛子(Tags——子实体/异常处理/验证/Search/Sort功能)
  • ROS Master多设备连接
  • 【计算机网络】Linux配置SNAT策略
  • Kubernetes 集群搭建(一):k8s 从环境准备到 Calico 网络插件部署(1.16版本)
  • T113s3远程部署Qt应用(dropbear)
  • 通过枚举、AOP、注解、反射填充公共字段
  • 在线记事本——支持Markdown
  • JavaScript基础--01-JS简介
  • 数据蒸馏:Dataset Distillation by Matching Training Trajectories 论文翻译和理解
  • 【Python基础】循环语句(2215字)
  • DDPM 做了什么
  • Go语言-初学者日记(七):用 Go 写一个 RESTful API 服务!
  • JavaScript基础--09-流程控制语句:选择结构(if和switch)
  • Windows 安装和使用 ElasticSearch