如何为聊天机器人添加工具:提升交互能力的指南

69 阅读2分钟

引言

随着人工智能的发展,聊天机器人不仅可以进行基本的对话,还可以通过调用外部工具或API获取更复杂的信息。在本文中,我们将探讨如何为聊天机器人添加工具,使其能够与其他系统交互,提升对话能力。

主要内容

前置条件

在开始之前,您需要了解以下概念:

  • 聊天机器人
  • 智能代理
  • 聊天记录

设置

本文将使用工具调用代理(agent)和一个用于网页搜索的工具——Tavily。首先,您需要在Tavily官网注册账号,并安装以下Python包:

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

然后,您需要设置环境变量OPENAI_API_KEYTAVILY_API_KEY。可以通过.env文件加载:

import dotenv

dotenv.load_dotenv()

创建代理

我们将创建一个能够回应用户问题,并根据需要查询信息的代理。首先,初始化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)

运行代理

现在可以与代理进行交互:

from langchain_core.messages import HumanMessage

response = agent_executor.invoke({"messages": [HumanMessage(content="I'm Nemo!")]})
print(response['output'])

代理还可以使用搜索工具获取最新信息:

response = agent_executor.invoke(
    {
        "messages": [
            HumanMessage(content="What is the current conservation status of the Great Barrier Reef?")
        ],
    }
)
print(response['output'])

常见问题和解决方案

  1. 访问API时遇到限制:

    • 解决方案:如在某些地区访问Tavily或OpenAI API遇到网络限制,可以考虑使用API代理服务以提高访问稳定性。
  2. 调试对话历史问题:

    • 解决方案:使用ChatMessageHistoryRunnableWithMessageHistory管理对话历史,确保代理能正确记住用户交互。

总结和进一步学习资源

添加工具使聊天机器人更具交互能力。您可以探索更多不同类型的代理和用例,以进一步提升聊天机器人的智能水平。

参考资料

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

---END---