引言
在数字化时代,聊天机器人(Chatbots)已经成为人们日常生活的一部分,从客户服务到个人助手,它们无处不在。为了提高这些机器人的实用性,我们可以为其添加额外的工具,使它们能够与其他系统和API进行交互。本文将介绍如何使用这些工具来增强聊天机器人的功能。
主要内容
1. 先决条件
在开始之前,我们假设您对以下概念有所了解:
- 聊天机器人(Chatbots)
- 代理(Agents)
- 聊天记录(Chat history)
本指南将介绍如何创建能够使用各种工具进行交互的对话代理。
2. 环境设置
在本指南中,我们将使用叫做Tavily的工具调用代理来执行网页搜索。首先,您需要在Tavily网站上注册一个账户,并安装以下软件包:
%pip install --upgrade --quiet langchain-community langchain-openai tavily-python
此外,您需要设置您的OpenAI密钥为OPENAI_API_KEY以及Tavily API密钥为TAVILY_API_KEY。
import dotenv
dotenv.load_dotenv() # 从.env文件加载环境变量
3. 创建代理
我们的目标是创建一个能够根据用户问题进行信息查找并以对话方式回应的代理。首先,初始化Tavily和一个OpenAI聊天模型:
from langchain_community.tools.tavily_search import TavilySearchResults
from langchain_openai import ChatOpenAI
tools = [TavilySearchResults(max_results=1)] # 使用API代理服务提高访问稳定性
chat = ChatOpenAI(model="gpt-3.5-turbo-1106", temperature=0)
我们也需要为聊天选择一个包含聊天历史占位符的提示:
from langchain_core.prompts import ChatPromptTemplate
prompt = ChatPromptTemplate.from_messages(
[
(
"system",
"You are a helpful assistant. You may not need to use tools for every query - the user may just want to chat!",
),
("placeholder", "{messages}"),
("placeholder", "{agent_scratchpad}"),
]
)
现在,我们来组装代理:
from langchain.agents import AgentExecutor, create_tool_calling_agent
agent = create_tool_calling_agent(chat, tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
代码示例
下面是一个完整的示例,展示了如何运行我们的代理:
from langchain_core.messages import HumanMessage
response = agent_executor.invoke({"messages": [HumanMessage(content="I'm Nemo!")]})
print(response['output']) # 输出: Hello Nemo! It's great to meet you. How can I assist you today?
代理也可以使用传递的搜索工具进行信息查找:
response = agent_executor.invoke(
{
"messages": [
HumanMessage(content="What is the current conservation status of the Great Barrier Reef?")
],
}
)
print(response['output'])
常见问题和解决方案
在使用代理和API进行交互时,可能会遇到的常见问题包括:
- 网络访问问题:由于某些地区的网络限制,开发者可能需要考虑使用API代理服务来提高访问稳定性。
- API调用限制:不同的API对调用次数可能有不同的限制,需要合理使用。
- 工具兼容性问题:确保您使用的工具版本与支持的API版本兼容。
总结和进一步学习资源
本文介绍了如何通过添加工具来提升聊天机器人的功能,使其能够执行更复杂的任务。例如,Tavily工具可以帮助机器人查找互联网信息。要了解更多关于工具使用和代理的细节,您可以参考以下资源:
参考资料
- Langchain API Reference
- Tavily官方文档
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力! ---END---