引言
随着人工智能的快速发展,聊天机器人已经成为改善用户体验的重要工具。在这篇文章中,我们将探讨如何为聊天机器人添加工具,使其能够与其他系统和API进行交互。本文的目标是帮助你创建能够根据需要查找信息的智能对话代理。
主要内容
1. 环境搭建
在本教程中,我们将使用一个工具调用代理,该代理具有一个用于网络搜索的工具。我们将使用Tavily作为默认工具。首先,在Tavily网站上注册一个账户,并安装以下软件包:
%pip install --upgrade --quiet langchain-community langchain-openai tavily-python
还需要设置环境变量OPENAI_API_KEY和TAVILY_API_KEY,以下是一个简单的示例:
import dotenv
dotenv.load_dotenv()
2. 创建聊天代理
我们的目标是创建一个代理,可以对用户问题进行对话式响应,并根据需要查找信息。首先,初始化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)
3. 运行代理
现在代理已经设置好,让我们尝试与之交互:
from langchain_core.messages import HumanMessage
response = agent_executor.invoke({"messages": [HumanMessage(content="I'm Nemo!")]})
print(response)
代理可以处理不需要查找的查询,也可以使用传递的搜索工具获取最新信息。
4. 对话式响应
由于提示包含聊天历史占位符,代理可以考虑之前的互动进行对话式响应:
from langchain_core.messages import AIMessage, HumanMessage
response = agent_executor.invoke(
{
"messages": [
HumanMessage(content="I'm Nemo!"),
AIMessage(content="Hello Nemo! How can I assist you today?"),
HumanMessage(content="What is my name?"),
],
}
)
print(response)
常见问题和解决方案
- 网络限制:由于某些地区的网络限制,开发者可能需要考虑使用API代理服务来提高访问稳定性。
- API密钥管理:确保你的API密钥安全保管,并不要在代码中直接硬编码。
总结和进一步学习资源
通过为聊天机器人添加工具,我们可以显著提升其功能和用户体验。要深入了解其他类型的代理和工具使用,可以参考以下资源:
参考资料
结束语:如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---