吴恩达新课程:Agentic AI(笔记6)

作者:此番言

课程地址: learn.deeplearning.ai/courses/agentic-ai

github地址: datawhalechina/agentic-ai

3.3 、工具调用语法(Tool Use Syntax)

工具调用的本质

  • LLM(大语言模型)本身不会直接调用工具。

  • LLM 会"请求"开发者去调用某个工具,开发者负责执行该工具并将其结果返回给 LLM。

  • 在开发社区中,人们常简化说"LLM 调用了工具",但这在技术上并不准确,仅是一种便捷的说法。

  • AI Suite 库

    • 这是一个开源库,由 Andrew Ng 及其团队开发。

    • 它提供了一种统一、简便的语法来调用多个不同的 LLM 提供商(如 OpenAI)。

    • 该库的核心功能之一是自动处理工具描述,极大简化了开发流程。

一、以 get_current_time 函数为例

工具定义:

复制代码
from datetime import datetime
def get_current_time():
    """Returns the current time as a string"""
    return datetime.now().strftime("%H:%M:%S")

使用 AI Suite 库调用工具的基本代码框架:

复制代码
import aisuuite as ai

client = ai.Client()

response = client.chat.completions.create(
    model="openai:gpt-4o",     # 指定使用的模型
    messages=messages,          # 传递给 LLM 的消息数组
    tools=[get_current_time],   # 定义 LLM 可以访问的工具列表
    max_turns=5                 # 设置工具调用的最大轮次,防止无限循环
)

解析:

  • model: 选择要使用的 LLM,此处为 OpenAI 的 gpt-4o。

  • messages: 传递给模型的对话历史或提示信息。

  • tools: 这是最核心的部分。只需将你希望模型能访问的函数对象(如 get_current_time)放入一个列表中即可。

  • max_turns: 设置一个上限,防止模型在工具调用上陷入无限循环。通常设为5即可,除非你的任务异常复杂。 AI Suite 的优势: 该库的语法与 OpenAI 原生 API 非常相似,但提供了更高的抽象层,使得开发者可以专注于业务逻辑,而非繁琐的 API 细节。它还支持轻松切换多个 LLM 提供商。

二、AI Suite 如何自动化工具描述

AI Suite 的强大之处在于其自动化能力,它能将你的 Python 函数无缝转换为 LLM 可理解的格式。 当你将 get_current_time 函数传入 tools 参数后,AI Suite 会在后台自动为其生成一个 JSON Schema。这个 Schema 是传递给 LLM 的真实数据结构。

复制代码
{
  "type": "function",
  "function": {
    "name": "get_current_time",
    "description": "Returns the current time as a string",
    "parameters": {}
  }
  • 自动生成过程:
    • 函数名 (name): 直接提取 Python 函数的名称。

    • 函数描述 (description): 自动从函数的 docstring 中提取。

    • 参数 (parameters): 对于无参函数,此部分为空对象 {}。

三、AI Suite 处理带参数的函数

工具定义:

复制代码
from datetime import datetime
from zoneinfo import ZoneInfo

def get_current_time(timezone):
    """Returns current time for the given time zone"""
    timezone = ZoneInfo(timezone)
    return datetime.now(timezone).strftime("%H:%M:%S")

参数解析:

复制代码
{
  "type": "function",
  "function": {
    "name": "get_current_time",
    "description": "Returns current time for the given time zone",
    "parameters": {
      "timezone": {
        "type": "string",
        "description": "The IANA time zone string, e.g., 'America/New_York' or 'Pacific/Auckland'."
      }
    }
  }
}

AI Suite 不仅能提取函数名和描述,还能识别出 timezone 参数,并将其类型(string)和详细说明(来自 docstring)也一并纳入 Schema。这样,当 LLM 决定调用此函数时,它就知道需要提供一个类似 'America/New_York' 的字符串作为参数。

工作流程:

  1. 开发者定义函数: 编写一个带有清晰 docstring 的 Python 函数。

  2. AI Suite 自动化封装: 在调用 client.chat.completions.create 时,AI Suite 自动读取函数信息,生成标准的 JSON Schema。

  3. LLM 接收并决策: LLM 接收到包含所有可用工具描述的 Schema。它会根据当前的对话上下文和用户需求,决定是否需要调用某个工具。

  4. LLM 发出请求: 如果需要,LLM 会生成一个包含工具名称和所需参数的请求。

  5. 开发者执行工具: AI Suite 的客户端接收到 LLM 的请求后,会自动调用开发者定义的对应函数,并传入指定的参数。

  6. 结果返回与迭代: 函数执行的结果会被送回 LLM,LLM 可以基于此新信息继续思考,甚至发起下一次工具调用。整个过程最多可重复 max_turns 次。

  7. 最终响应: 当所有轮次结束或 LLM 决定不再调用工具时,它会生成最终的文本响应返回给用户。

代码执行工具:

  • 终极灵活性: 与其他工具不同,代码执行工具赋予了 LLM 几乎无限的可能性。因为代码本身可以完成任何计算、数据处理或外部交互任务。

  • 开发者赋能: 通过提供这个工具,开发者实际上是在告诉 LLM:"你可以让我为你执行任何你认为必要的代码。"这极大地扩展了 LLM 的能力和应用场景。

相关推荐
一个处女座的程序猿12 小时前
AI之Algorithms:TheAlgorithms_Python(所有用 Python 实现的算法)的简介、安装和使用方法、案例应用之详细攻略
人工智能·python·算法
西猫雷婶12 小时前
CNN计算|原始矩阵扩充后的多维度卷积核计算效果
人工智能·pytorch·深度学习·神经网络·机器学习·矩阵·cnn
大白的编程笔记12 小时前
语言模型(Language Model, LM)系统详解
人工智能·语言模型·自然语言处理
谷歌开发者12 小时前
Web 开发指向标|在来源面板中使用 Chrome 开发者工具的 AI 辅助功能
前端·人工智能·chrome
Ma04071312 小时前
【论文阅读20】MM-LLMs:多模态大语言模型的最新进展
人工智能·语言模型·多模态·综述
. . . . .12 小时前
Chrome底层及Chrome-devtools-mcp
人工智能·chrome
aneasystone本尊12 小时前
学习 LiteLLM 的防护栏机制
人工智能
szxinmai主板定制专家12 小时前
RK3588+zynq7045 ARM+FPGA+AI解决方案,支持复旦微全国产化,应用于智能机器人等领域
arm开发·人工智能·fpga开发
serve the people12 小时前
TensorFlow 中 “延迟变量创建(Deferred Variable Creation)” 机制
人工智能·python·tensorflow
MilieStone12 小时前
抢占心血管诊疗高地:引入超导心磁图仪,为医院注入增长新动能
大数据·人工智能