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

相关推荐
下午见。2 小时前
【C语言学习笔记】动态内存分配:malloc/free的正确打开方式
c语言·笔记·学习
2401_841495642 小时前
【自然语言处理】基于统计基的句子边界检测算法
人工智能·python·算法·机器学习·自然语言处理·统计学习·句子边界检测算法
我怎么又饿了呀2 小时前
DataWhale-HelloAgents(第二部分:大语言模型基础)
人工智能·语言模型·自然语言处理
软泡芙2 小时前
【.NET10】正式发布!微软开启智能开发生态新纪元
人工智能·microsoft·.net
欧阳码农2 小时前
盘点这两年我接触过的副业赚钱赛道,对于你来说可能是信息差
前端·人工智能·后端
亚马逊云开发者3 小时前
Agentic AI基础设施实践经验系列(七):可观测性在Agent应用的挑战与实践
人工智能
cwh_rs_giser3 小时前
如何高效设置机器学习超参数?——借鉴成熟AutoML框架的实践
人工智能·python·机器学习
逻极3 小时前
Scikit-learn 入门指南:从零到一掌握机器学习经典库(2025 最新版)
人工智能·python·机器学习·ai·scikit-learn·agent
01100001乄夵3 小时前
FPGA零基础入门教程——揭开可编程芯片的神秘面纱
经验分享·笔记·学习方法·fpga入门·fpga学习之路