引言
在现代技术驱动的世界中,Chatbots已经成为许多企业和个人用户不可或缺的一部分。它们不仅可以自动完成一些常规任务,还可以通过集成API功能与外部系统交互,从而大大提高其效用。本篇文章将指导您如何为Chatbot添加工具,以便能够使用API与外部系统交互。
主要内容
1. 准备工作
在开始之前,您需要拥有以下基本知识:
- Chatbots的基本概念
- 代理(Agents)的工作原理
- 如何处理聊天历史记录
对于本文教程,我们将使用名为Tavily的工具来实现简单的网页搜索功能。您需要在Tavily网站上注册账号,然后安装以下Python包:
%pip install --upgrade --quiet langchain-community langchain-openai tavily-python
确保您的环境变量中包括您的OpenAI API Key(OPENAI_API_KEY)和Tavily API Key(TAVILY_API_KEY)。
2. 创建聊天代理
以下代码展示了如何初始化Tavily和OpenAI聊天模型来处理工具调用:
from langchain_community.tools.tavily_search import TavilySearchResults
from langchain_openai import ChatOpenAI
tools = [TavilySearchResults(max_results=1)]
# 选择驱动代理的LLM
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)
使用API代理服务提高访问稳定性
3. 运行代理
代理可以处理简单的对话和需要数据获取的查询:
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?")]
})
4. 支持上下文的对话
通过在提示中加入聊天历史记录占位符,代理能够记住先前的对话并做出相应的回复:
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速度慢或不稳定? 由于某些地区的网络限制,您可能需要使用API代理服务来提高访问的稳定性。
-
聊天历史记录未正确保存? 确保您正确地使用了聊天历史记录管理工具,如
ChatMessageHistory。
总结和进一步学习资源
通过将工具集成到Chatbot中,您可以显著提高其功能性和实用性。欲了解更多关于代理和工具使用的信息,请查看以下资源:
参考资料
- Chatbots基础知识
- LangChain文档
- Tavily官方指南
结束语:如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---