为您的聊天机器人添加工具:实现互动和智能的指南

85 阅读3分钟

引言

随着人工智能的发展,聊天机器人不再仅限于简单的问答。通过为聊天机器人添加工具,我们可以使其具备访问外部系统和API的能力,从而提升其智能程度。本篇文章旨在为您提供关于如何为聊天机器人集成工具的实用知识和见解。

主要内容

1. 创建会话代理

在本节中,我们将学习如何使用工具来创建一个智能的会话代理。我们将利用Tavily作为示例工具进行Web搜索。

1.1 设置环境

首先,您需要在Tavily网站注册账号,并安装以下必要的Python包:

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

确保您的环境变量中已设置OPENAI_API_KEYTAVILY_API_KEY。您可以使用dotenv库来加载配置:

import dotenv
dotenv.load_dotenv()

1.2 创建代理

我们的目标是创建一个能够根据需要与外部系统交互的聊天代理。首先,我们初始化Tavily和OpenAI聊天模型:

from langchain_community.tools.tavily_search import TavilySearchResults
from langchain_openai import ChatOpenAI

# 使用API代理服务提高访问稳定性
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. 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)

2. 运行代理

代理已准备就绪,现在让我们与其互动。它可以处理不需要查找的简单查询:

from langchain_core.messages import HumanMessage

response = agent_executor.invoke({"messages": [HumanMessage(content="I'm Nemo!")]})
print(response['output'])  # 期望输出:Hello Nemo! It's great to meet you. How can I assist you today?

代理也可以使用提供的搜索工具获取最新信息:

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

3. 实现会话性响应

由于我们的提示中包含聊天历史占位符,代理可以记住上下文,并对后续消息进行自然的会话响应:

from langchain_core.messages import AIMessage, HumanMessage

response = 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?"),
        ],
    }
)
print(response['output'])  # 期望输出:Your name is Nemo!

常见问题和解决方案

  • 网络访问问题:在某些地区,由于网络限制,API调用可能会不稳定。建议使用API代理服务。
  • 工具配置错误:确保您的API密钥和其他配置正确无误。

总结和进一步学习资源

通过为聊天机器人添加工具,您可以显著提升它的功能和用户体验。建议您进一步探索Langchain的文档Tavily的使用案例来丰富您的项目。

参考资料

  • Tavily API 文档
  • OpenAI API 文档
  • Langchain 官方指南

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

---END---