引言
在当今的数字化时代,聊天机器人不仅仅是自动回答工具,它们还能够与其他系统和API进行交互,以提供更智能的服务。本指南旨在帮助开发者为他们的聊天机器人添加强大的工具,使其能够在用户对话中有效地调用外部API资源。
主要内容
1. 前置要求
在开始之前,您需要熟悉一些基本概念:
- 聊天机器人: 自动回答用户查询的程序。
- 代理: 能够在用户和API之间调节交互的中间件。
- 聊天历史记录: 用于跟踪用户和聊天机器人之间的对话。
2. 设置环境
在这个指南中,我们将使用一个工具调用代理,它使用一个名为Tavily的搜索工具。
注册和安装
首先,请在Tavily网站注册一个账号,然后安装以下Python包:
%pip install --upgrade --quiet langchain-community langchain-openai tavily-python
配置API密钥
确保您的环境变量中设置了OPENAI_API_KEY和TAVILY_API_KEY,或通过.env文件加载:
import dotenv
dotenv.load_dotenv()
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)
4. 运行代理并进行示例
现在,代理已经设置好了,让我们来看看它的实际运行效果。首先是处理不需要查找的简单查询:
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?")
],
}
)
5. 常见问题和解决方案
- 网络限制: 在某些地区,访问外部API可能受到限制。建议使用API代理服务提高访问稳定性。
- 聊天历史处理: 确保针对会话历史记录使用合适的模板和管理机制,以提供更佳的用户体验。
总结和进一步学习资源
通过本指南,您已经学习到如何为您的聊天机器人添加强大工具,使其能够在用户对话中灵活调用外部API资源。您可以进一步阅读LangSmith上的相关文档来深入了解。
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---