AI_CLASSIFY

更新时间:
复制为 MD 格式

AI_CLASSIFY 是 MaxCompute 提供的 AI Function,通过调用模型从给定标签中返回与输入内容匹配度最高的标签字符串。

命令格式

STRING AI_CLASSIFY(
  STRING <model_name>,
  STRING <version_name>,
  STRING <input>,
  ARRAY<STRING> <labels>
  [, STRING <model_parameters>]
);

参数说明

  • model_name:必填。STRING 类型。待使用的模型名,请参见SQL AI Function

  • version_name:必填。STRING 类型。待使用的模型版本名。如果调用默认版本,支持直接输入 DEFAULT_VERSION

  • input:必填。STRING 类型。需要分类的文本。

  • labels:必填。ARRAY<STRING> 类型。期望输出的分类标签列表。支持常量和列输入,当为常量时标签数量范围在 [2, 20]。

  • model_parameters:选填。STRING 类型。支持指定模型调用相关参数 max_tokens、temperature、top_p,格式为

    '{"max_tokens": 500, "temperature": 0.6, "top_p": 0.95}' 。参数说明如下:

    • max_tokens:设置模型单次调用输出 token 的最大数量,对于 MaxCompute 公共模型,默认值为 4096。

    • temperature:介于 0 到 1 之间的值,用于控制模型输出的随机性强度。值越大,输出越具创意和多样性;值越低,输出越确定和保守。

    • top_p:介于 0 到 1 之间的值,用于限定模型选择的备选标签范围。值越大,备选范围越广,多样性越高;值越小,范围越窄,结果越集中。

返回值说明

返回 STRING 类型,代表 input 最匹配的单个标签字符串。返回规则如下:

  • input 非 STRING 类型,或 labels 非 ARRAY<STRING> 类型时,返回报错。

  • labels 标签为常量,且数量为 1 或超过 20 时,返回报错。

  • input、labels 若输入为 NULL 或空字符串("")时,返回 NULL。

使用示例

示例1:对常量文本进行分类

调用 MaxCompute 提供的公共模型 qwen3-max,对输入文本进行分类,从给定的标签中返回匹配度最高的结果。

-- 在SQL作业中使用模型计算服务
SET odps.task.major.version=sql_modelstudio;
SET odps.namespace.schema=true;

SELECT AI_CLASSIFY(
    bigdata_public_modelset.default.`qwen3-max`,
    DEFAULT_VERSION,
    'MaxCompute 是一个全托管的高性能大数据计算平台,提供快速、可扩展的数据仓库和分析能力。',
    ARRAY('科技', '体育', '财经', '医疗', '教育')
) AS classified_label;
-- 返回结果
+------------------+
| classified_label |
+------------------+
| 科技           |
+------------------+

示例2:对表数据进行分类

调用 MaxCompute 提供的公共模型 Qwen3-4B-GGUF,对表中的多条文本数据批量分类。

-- 示例数据
CREATE TABLE news_articles (
    content STRING
);

INSERT INTO news_articles VALUES
    ('人工智能正在用新型诊断工具改变医疗行业。'),
    ('受科技板块上涨带动,股市今日创下历史新高。'),
    ('经过激动人心的加时赛,球队最终赢得了冠军。'),
    ('云计算使企业能够按需扩展基础设施。');

-- 调用模型对表中文本进行分类
SET odps.sql.ai.treat.as.common.model=true;
SET odps.namespace.schema=true;

SELECT
    content,
    AI_CLASSIFY(
        bigdata_public_modelset.default.`Qwen3-4B-GGUF`,
        DEFAULT_VERSION,
        content,
        ARRAY('科技', '体育', '财经', '医疗')
    ) AS category
FROM news_articles;

-- 返回结果
+--------------------------------------------------+----------+
| content                                          | category |
+--------------------------------------------------+----------+
| 人工智能正在用新型诊断工具改变医疗行业。              | 医疗     |
| 受科技板块上涨带动,股市今日创下历史新高。            | 财经     |
| 经过激动人心的加时赛,球队最终赢得了冠军。            | 体育     |
| 云计算使企业能够按需扩展基础设施。                    | 科技     |
+--------------------------------------------------+----------+