为聊天机器人添加工具:创建可调用工具的智能代理

在AI技术不断发展的今天,聊天机器人已经超越了简单的问答功能,成为可以与其他系统和API交互的强大工具。在本文中,我们将介绍如何为聊天机器人添加工具,使其能够使用外部资源,如网络搜索工具来增强其功能。

技术背景介绍

随着AI能力的增强,开发人员希望聊天机器人不仅能够与用户进行对话,还能够实时地从互联网或其他数据源获取信息。这种能力通常是通过集成各种工具实现的。我们将使用一个工具调用代理来演示这个过程,其核心是一个用于网页搜索的工具。

核心原理解析

工具调用代理的核心思想是通过聊天模型与工具协作,以处理用户查询,只有在必要时使用工具。我们将使用 Tavily,一个强大的搜索工具,通过集成 OpenAI API 提供智能对话能力。

代码实现演示

环境设置

要开始,首先需要安装相关的Python包:

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

然后,设置环境变量或从 .env 文件加载API密钥:

import dotenv

dotenv.load_dotenv()

确保设置了 OPENAI_API_KEYTAVILY_API_KEY

创建代理

我们的目标是创建一个可以根据需要查找信息的智能代理。首先,我们初始化Tavily工具和OpenAI聊天模型:

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

tools = [TavilySearchResults(max_results=1)]  # 设置最大搜索结果数为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)

运行代理

我们的代理现在可以处理简单和复杂的查询,下面是一个简单对话的示例:

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?"
            )
        ],
    }
)

支持会话响应

我们的代理可以基于历史对话进行响应:

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?"),
        ],
    }
)

如果需要管理消息历史:

from langchain_community.chat_message_histories import ChatMessageHistory
from langchain_core.runnables.history import RunnableWithMessageHistory

demo_ephemeral_chat_history_for_chain = ChatMessageHistory()

conversational_agent_executor = RunnableWithMessageHistory(
    agent_executor,
    lambda session_id: demo_ephemeral_chat_history_for_chain,
    input_messages_key="messages",
    output_messages_key="output",
)

应用场景分析

这种可调用工具的智能代理特别适用于需要实时信息检索的场景,例如客户支持、个人助理和教育机器人等。

实践建议

在实际使用中,要确保代理的工具调用适当且在性能和安全性上得到优化。此外,定期更新和维护工具的API接口也很重要。

如果遇到问题欢迎在评论区交流。

—END—

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值