探索Chat模型的工具调用:新手到专家的必备指南

83 阅读3分钟

引言

工具调用是现代AI聊天模型中的一个重要功能。它不仅能增强模型的功能扩展性,还是将生成的结构化输出转化为实际应用的关键。本文将深入探讨如何使用工具调用,让你的聊天模型更智能、更高效。

主要内容

什么是工具调用?

工具调用是一种技术,它允许聊天模型在响应提示时生成工具所需的参数。然而,注意工具本身的执行并不在模型的职责范围内。通过工具调用,模型生成结构化输出,这在需要从非结构化文本中提取信息时尤为有用。

支持工具调用的模型

工具调用并非所有大语言模型(LLM)都支持,但许多流行的LLM提供商如OpenAI、Anthropic等均支持此功能。LangChain实现了绑定工具、传递工具给LLM、和表示工具调用的标准接口。

定义工具模式

要让模型调用工具,我们需要定义工具模式。这些模式描述了工具的功能及其参数。工具模式可以通过Python函数、Pydantic模型、TypedDict类或LangChain工具对象来定义。

使用Python函数定义工具模式

def add(a: int, b: int) -> int:
    """Add two integers."""
    return a + b

def multiply(a: int, b: int) -> int:
    """Multiply two integers."""
    return a * b

使用Pydantic定义工具模式

from pydantic import BaseModel, Field

class Add(BaseModel):
    """Add two integers."""
    a: int = Field(..., description="First integer")
    b: int = Field(..., description="Second integer")

class Multiply(BaseModel):
    """Multiply two integers."""
    a: int = Field(..., description="First integer")
    b: int = Field(..., description="Second integer")

将工具绑定到聊天模型

利用bind_tools()方法可以将工具模式绑定到聊天模型中。这是调用工具的先决条件。

代码示例

以下是如何实际使用LangChain和支持的模型来实现工具调用的示例。

from langchain_openai import ChatOpenAI
from pydantic import BaseModel, Field

# 定义API密钥
import os
os.environ["OPENAI_API_KEY"] = 'your_openai_api_key_here'  # 请使用适当的API代理服务提高访问稳定性

# 定义工具模式
class Add(BaseModel):
    """Add two integers."""
    a: int = Field(..., description="First integer")
    b: int = Field(..., description="Second integer")

class Multiply(BaseModel):
    """Multiply two integers."""
    a: int = Field(..., description="First integer")
    b: int = Field(..., description="Second integer")

# 初始化聊天模型
llm = ChatOpenAI(model="gpt-4o-mini")

# 绑定工具
llm_with_tools = llm.bind_tools([Add, Multiply])

# 执行查询并调用工具
query = "What is 3 * 12?"
response = llm_with_tools.invoke(query)
print(response.tool_calls)

常见问题和解决方案

  1. 工具调用失败或无效调用:如果模型输出的工具调用参数格式不正确,可使用InvalidToolCall对象来捕获。这通常是参数格式错误,比如非JSON格式。

  2. 网络访问问题:由于地区性的网络限制,开发者可能需要考虑使用API代理服务来确保调用的稳定性。

总结和进一步学习资源

通过工具调用功能的学习和实现,你可以极大的扩展聊天模型的实际应用能力。接下来,可以参考以下资源深入学习:

参考资料

  1. LangChain 官方文档
  2. Pydantic 文档

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

---END---