为您的聊天机器人添加工具:从初学者到精通者的指南

65 阅读3分钟

引言

在当今的数字化时代,聊天机器人不仅仅是自动回答工具,它们还能够与其他系统和API进行交互,以提供更智能的服务。本指南旨在帮助开发者为他们的聊天机器人添加强大的工具,使其能够在用户对话中有效地调用外部API资源。

主要内容

1. 前置要求

在开始之前,您需要熟悉一些基本概念:

  • 聊天机器人: 自动回答用户查询的程序。
  • 代理: 能够在用户和API之间调节交互的中间件。
  • 聊天历史记录: 用于跟踪用户和聊天机器人之间的对话。

2. 设置环境

在这个指南中,我们将使用一个工具调用代理,它使用一个名为Tavily的搜索工具。

注册和安装

首先,请在Tavily网站注册一个账号,然后安装以下Python包:

%pip install --upgrade --quiet langchain-community langchain-openai tavily-python

配置API密钥

确保您的环境变量中设置了OPENAI_API_KEYTAVILY_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上的相关文档来深入了解。

参考资料

  1. LangChain 官方文档
  2. Tavily API 文档

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---