(五)智能体与工具协同——打造智能对话的超级助手
上一篇:(四)数据检索与增强生成——让对话系统更智能、更高效
在前四个阶段,我们已经搭建了一个功能强大的智能对话,并深入探讨了输入输出处理、链式工作流构建和数据检索与增强生成的细节。现在,我们将进入智能对话的终极阶段——智能体与工具协同。这一阶段的目标是通过智能体与工具的协同工作,让对话能够处理更加复杂的任务,成为真正的“超级助手”。
(建议从第一篇食用)
一、工具创建:赋予系统实用能力
工具是智能体与外部世界交互的桥梁。通过创建各种工具,我们可以让对话系统具备实际的实用能力。
导入相关库
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"])
在执行查询时,智能体会自动进行以下步骤:
- 思考任务:分析用户的需求,确定需要完成的任务。
- 选择工具:根据任务选择合适的工具。
- 调用工具:执行工具并获取结果。
- 整合结果:将工具的结果整合成最终的回答。
执行过程详解
通过这个过程,我们可以看到智能体如何一步步完成复杂任务。它不仅能够理解用户的需求,还能自动选择和调用合适的工具,最终给出准确的回答。
四、总结
智能体与工具协同是智能对话的终极能力,它能够处理更加复杂的任务,成为真正的“超级助手”。通过工具创建、智能体初始化和执行查询等技术,我们可以让对话具备实际的实用能力。
未来,我们可以进一步探索以下方向:
- 更多实用工具:接入更多外部API,扩展系统的功能边界。
- 复杂任务处理:通过多步骤决策,处理更加复杂的任务。
- 实时数据支持:接入实时数据源,让系统能够处理动态变化的信息。
祝我们学习愉快 😊