将其他tools集成到聊天机器人中可以显著增强其功能并改善用户交互。在LangGraph(通常用于开发聊天机器人的框架)的上下文中,这种集成可以通过合并web搜索功能等工具来实现。本教程旨在逐步指导用户如何通过集成工具来增强他们的聊天机器人,特别是关注Python编程语言。
总体概述
在开发聊天机器人时,必须认识到,可能存在仅基于其现有知识无法回答的问题。通过集成外部tools,聊天机器人可以搜索网页或访问外部api来检索实时信息或相关数据,从而提升用户体验。本教程将主要关注如何利用LangGraph预构建的ToolNode进行工具调用,它允许聊天机器人调用这些附加功能。
搭建环境
在深入研究工具集成之前,第一步是设置必要的环境。这包括安装基本包和配置API密钥,以允许聊天机器人访问外部服务。
步骤1:安装所需的Packages
首先,用户应该安装所需的软件包。这可以使用Python中的pip命令来完成:
%pip install --quiet -U langgraph langchain_anthropic
步骤2:设置环境变量
接下来,为API键设置环境变量是很重要的。这些密钥对于对外部服务的请求进行身份验证至关重要。下面的Python函数用于提示用户输入他们的API密钥:
import getpass
import os
def _set_env(var: str):
if not os.environ.get(var):
os.environ[var] = getpass.getpass(f"{var}: ")
_set_env("ANTHROPIC_API_KEY")
_set_env函数检查指定的环境变量是否已经设置。如果不是,它会提示用户安全地输入他们的API密钥。
定义Tools
设置好环境后,下一步是定义聊天机器人将用于处理特定查询的工具。在此上下文中,工具可以定义为聊天机器人可以调用的函数,以检索信息或执行操作。
步骤3:实现工具功能
这里演示了两个示例工具函数:一个用于检索当前天气,另一个用于列出最冷的城市。
from langchain_core.messages import AIMessage
from langchain_core.tools import tool
from langgraph.prebuilt import ToolNode
@tool
def get_weather(location: str):
"""Call to get the current weather."""
if location.lower() in ["sf", "san francisco"]:
return "It's 60 degrees and foggy."
else:
return "It's 90 degrees and sunny."
@tool
def get_coolest_cities():
"""Get a list of coolest cities"""
return "nyc, sf"
- get_weather(location: str):该函数接受一个位置作为输入,并根据预定义的条件返回当前天气。它识别“sf”或“san francisco”并返回特定的天气状况,而其他位置则产生不同的响应。
- get_coolest_cities():这个函数只是返回一个包含“最冷”城市名称的字符串。
步骤4:创建工具Node
在定义工具之后,用户可以创建一个ToolNode实例,它将管理这些工具函数的调用。
tools = [get_weather, get_coolest_cities]
tool_node