吴恩达新课程: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 的能力和应用场景。

相关推荐
badfl12 分钟前
VSCode Claude Code插件配置教程:使用、配置中转API、常见问题
人工智能·vscode·ai
鄭郑31 分钟前
STM32学习笔记--I2C封装与OLED(2026.2.1)
笔记·stm32·学习
Faker66363aaa37 分钟前
指纹过滤器缺陷检测与分类 —— 基于MS-RCNN_X101-64x4d_FPN_1x_COCO模型的实现与分析_1
人工智能·目标跟踪·分类
金融小师妹1 小时前
基于LSTM-GARCH-EVT混合模型的贵金属极端波动解析:黄金白银双双反弹的逻辑验证
大数据·人工智能·深度学习·机器学习
代码匠心1 小时前
Trae IDE 隐藏玩法:接入即梦 AI,生成高质量大片!
人工智能·ai·trae·skills
陈天伟教授1 小时前
人工智能应用- 语言理解:01. 写作与对话
人工智能·深度学习·语音识别
铁蛋AI编程实战1 小时前
OpenClaw+Kimi K2.5开源AI助手零门槛部署教程:本地私有化+远程控制+办公自动化全实操
人工智能·开源
liliangcsdn1 小时前
文本视频音频分块工具 - Semantic Chunkers
人工智能·音视频
OPEN-Source1 小时前
大模型实战:大模型推理性能优化与成本控制实战
人工智能·性能优化·rag
雨大王5121 小时前
工业AI+如何赋能汽车供应链智能化升级?
人工智能