AI_GENERATE

更新时间:
复制为 MD 格式

AI_GENERATEMaxCompute提供的AI Function,用于调用模型结合提示词执行推理任务,支持自然语言生成、复杂逻辑分析、情感分类、多模态理解等场景。用户可通过SQL直接完成非结构化数据的智能处理,无需外部服务依赖。

命令格式

AI_GENERATE在调用LLM大语言模型和MLLM多模态大语言模型时,会有不同的函数签名。

  • model_typeLLM大语言模型时,函数签名如下:

    STRING AI_GENERATE(
      STRING <model_name> , 
      STRING <version_name>, 
      STRING <prompt> 
      [, STRING <model_parameters>]
    );
  • model_typeMLLM多模态大语言模型时,函数签名如下:

    STRING AI_GENERATE(
      STRING <model_name>, 
      STRING <version_name>, 
      STRING | BINARY <unstructured_data> ,
      STRING <prompt> 
      STRING <type>
      [, STRING <model_parameters>]
    );

参数说明

  • model_name:必填。STRING类型。待使用的模型名。支持模型的model_typeLLMMLLM。

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

  • prompt:必填。STRING类型。待输入的模型提示词。STRING类型常量、列名或表达式。

  • unstructured_data:必填(当model_typeMLLM时)。STRINGBINARY类型。

    需要处理的多模态数据,支持指定为图片/音频/视频STRING类型的URL地址,或图片BINARY类型的二进制表示。当指定为BINARY类型时,需要在创建模型时同时指定BINARY类型的输入参数。

  • typeunstructured_data为图片/音频/视频STRING类型的URL地址时,type必填。支持取值为IMAGE/AUDIO/VIDEO。例如:

    • 音频:AI_GENERATE(model, version,audio_url, prompt, 'AUDIO');

    • 视频:AI_GENERATE(model, version, video_url, prompt, 'VIDEO');

    • 图像:AI_GENERATE(model, version, image_url, prompt, 'IMAGE');

  • model_parameters:选填。STRING类型。支持指定模型调用相关参数max_tokens、temperature、top_p,格式为'{"max_tokens": 500, "temperature": 0.6, "top_p": 0.95}'。参数说明如下:

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

    • temperature:介于01之间的值,用于控制模型输出的随机性。越高的值会导致模型输出的多样化和随机性越高。

    • top_p:介于01之间的值,用于控制模型的随机性和多样性,越大的值会导致模型输出的随机性越高。

说明

使用AI Function调用公共模型推理时,需要SET odps.sql.using.public.model=true;打开使用公共模型开关。

返回值说明

返回STRING类型,模型的生成内容结果。

使用示例

示例1:调用模型生成文本摘要

调用MaxCompute提供的公共模型qwen3-max,对新闻内容生成摘要。

SET odps.namespace.schema=true;

SELECT AI_GENERATE(bigdata_public_modelset.default.`qwen3-max`,DEFAULT_VERSION,
  "请用一句话对以下新闻进行总结:很多人都知道吃得太咸会导致血压升高。
   可你有没有发现,明明少吃盐了,血压还是居高不下,甚至悄悄往上升?
   如今随着医学研究的深入,越来越多高血压的幕后推手被发现。
   日前,一项最新研究揪出了三个藏得很深的血压推手——它们看起来平常,
   却可能让血压悄悄失控。不只盐吃多了,研究揪出高血压三个幕后推手。
   2025 年 11 月,发表在国际期刊《教育与健康促进杂志》的一项研究发现:
   睡眠质量好坏、运动量的多少和体重是否健康,这三者紧密交织,共同影响着我们的血压,甚至是高血压的幕后推手。");
说明

使用公共模型如qwen3-max会产生MaxCompute AI推理费用,详见:模型计算费用(Token费用)

示例2:调用模型生成内容

调用MaxCompute提供的公共模型Qwen3-0.6B-GGUF,直接进行模型调用与内容生成。

SET odps.sql.using.public.model=true;
SET odps.namespace.schema=true;

SELECT AI_GENERATE(bigdata_public_modelset.default.Qwen3-0.6B-GGUF,DEFAULT_VERSION,'what is the capital of China');

-- 返回结果:
-- "The capital of China is **Beijing**."

示例3:调用模型进行情感分析

调用MaxCompute提供的公共模型Qwen3-1.7B-GGUF,对网络用户评论数据进行情感分析。

SET odps.sql.using.public.model=true;
SET odps.namespace.schema=true;

SELECT 
    prompt,
    AI_GENERATE(
        bigdata_public_modelset.default.Qwen3-1.7B-GGUF,
        DEFAULT_VERSION,
        concat('请对以下评论进行情感分析分类,输出结果仅限于以下三个选项之一:正面、负面、中性。待分析的评论:', prompt)
    ) AS generated_text
FROM (
    VALUES 
        ('今天天气真好,心情很不错!阳光明媚,适合出去散步。 /no_think'),
        ('今天天气真好,心情很不错!阳光明媚 /no_think'),
        ('科技发展日新月异,人工智能改变生活。 /no_think'),
        ('防控措施很到位,为医护人员点赞! /no_think'),
        ('这个商品质量很差 /no_think')
) t (prompt);

-- 返回结果:
+-----------------------------------------------------+----------------+
| prompt                                              | generated_text |
+-----------------------------------------------------+----------------+
| 今天天气真好,心情很不错!阳光明媚,适合出去散步 /no_think  | "正面"          |
| 今天天气真好,心情很不错!阳光明媚 /no_think              | "正面"          |
| 科技发展日新月异,人工智能改变生活。 /no_think            | "正面"          |
| 防控措施很到位,为医护人员点赞! /no_think            | "正面"          |
| 这个商品质量很差 /no_think                             | "负面"          |
+-----------------------------------------------------+----------------+

示例4:调用模型进行多模态数据处理

调用已经创建好的模型PAI_EAS_Qwen25_Omni_3B(PAI-EAS远程模型),并创建好Object Table,即可调用AI Function,详细步骤参考使用MaxCompute远程模型自动生成电商选品描述

说明

支持VPC调用地址(推荐)或EAS公网调用地址。

  • 若使用EAS VPC调用地址,需要开通专线网络连接并在AI Function调用时指定配置的网络连接名称,配置流程请参见访问VPC方案(专线直连)

  • 若使用EAS公网调用地址,需求在AI Function调用前,将该地址设置为可用的MaxCompute外部网络地址,配置方案见:网络开通流程

  • 图片处理

    基于图片的URL地址及提示词进行模型调用,实现商品类目打标。示例中Object Table命名为image_demo

    SELECT
      key,
      AI_GENERATE(
        PAI_EAS_Qwen25_Omni_3B, v1, image_url,
        "从电商商品销售海报中识别并提取商品所属的类目。返回结果仅限于如下六个选项之一:美妆、服装、日用、食品、其他、电子产品,不包含其他文字或信息","IMAGE"
      ) AS item_catagory
      FROM (
        SELECT GET_SIGNED_URL_FROM_OSS(
          'project_test_model.default.image_demo', key, 604800
        ) AS image_url, key AS key
        FROM project_test_model.default.image_demo
    ) Limit 10;
    
    -- 返回结果:
    +--------------------+----------------+
    | key                | item_catagory  |
    +--------------------+----------------+
    | alimamazszw-1.jpg  | 食品           | 
    | alimamazszw-10.jpg | 电子产品        | 
    | alimamazszw-11.jpg | 电子产品        | 
    | alimamazszw-12.jpg | 美妆           | 
    | alimamazszw-13.jpg | 电子产品        | 
    | alimamazszw-14.jpg | 日用           | 
    | alimamazszw-15.jpg | 美妆           | 
    | alimamazszw-16.jpg | 美妆           | 
    | alimamazszw-18.jpg | 日用           | 
    +--------------------+---------------+
  • 音频处理

    基于音频的URL地址及提示词进行模型调用,实现音频类别打标。示例中Object Table命名为music_demo。音频数据集下载地址

    SELECT
      key,
      AI_GENERATE(
        PAI_EAS1_Qwen25_Omni_3B, v1, audio_url,
        "请准确分析音频的音乐类型,返回结果只显示如下七个选项之一,不显示任何额外信息:古典、乡村、嘻哈、金属、流行、雷鬼、摇滚","AUDIO"
      ) as item_catagory
      from (
        select GET_SIGNED_URL_FROM_OSS(
          'project_test_model.default.music_demo', key, 604800
        ) as audio_url, key as key
        from project_test_model.default.music_demo
    ) Limit 42;
    

    点击展开查看运行结果

    +------+---------------+
    | key  | item_catagory |
    +------+---------------+
    | classical.00000.wav | 古典        |
    | classical.00001.wav | 古典        |
    | classical.00002.wav | 古典        |
    | classical.00003.wav | 古典        |
    | classical.00004.wav | 古典        |
    | classical.00005.wav | 古典        |
    | country.00000.wav | 乡村        |
    | country.00001.wav | 乡村        |
    | country.00002.wav | 乡村        |
    | country.00003.wav | 乡村        |
    | country.00004.wav | 乡村        |
    | country.00005.wav | 摇滚        |
    | hiphop.00000.wav | 嘻哈        |
    | hiphop.00001.wav | 嘻哈        |
    | hiphop.00002.wav | 嘻哈        |
    | hiphop.00003.wav | 嘻哈        |
    | hiphop.00004.wav | 嘻哈        |
    | hiphop.00005.wav | 嘻哈        |
    | metal.00000.wav | 金属        |
    | metal.00001.wav | 金属        |
    | metal.00002.wav | 摇滚        |
    | metal.00003.wav | 金属        |
    | metal.00004.wav | 金属        |
    | metal.00005.wav | 金属        |
    | pop.00000.wav | 流行        |
    | pop.00001.wav | 流行        |
    | pop.00002.wav | 流行        |
    | pop.00003.wav | 流行        |
    | pop.00004.wav | 摇滚        |
    | pop.00005.wav | 流行        |
    | reggae.00000.wav | 雷鬼        |
    | reggae.00001.wav | 雷鬼        |
    | reggae.00002.wav | 雷鬼        |
    | reggae.00003.wav | 雷鬼        |
    | reggae.00004.wav | 雷鬼        |
    | reggae.00005.wav | 雷鬼        |
    | rock.00000.wav | 摇滚        |
    | rock.00001.wav | 摇滚        |
    | rock.00002.wav | 摇滚        |
    | rock.00003.wav | 摇滚        |
    | rock.00004.wav | 摇滚        |
    | rock.00005.wav | 摇滚        |
    +------+---------------+

常见问题

EAS远程模型常见问题排查

如果通过AI_GENERATE函数调用MaxCompute远程模型,作业运行后返回结果为空,建议按照以下流程进行排查:

  1. 创建远程模型参数检查

    • PAI_EAS_SERVICE_NAME:

      需要确认EAS服务是否已加入某个服务群组。

      • 若已加入此处需要填写“群组名称.服务名称”,如group.service_name;

      • 若未加入则仅需填写EAS服务名称。

    • Endpoint:

      设置模型ENDPOINT参数时,无论希望使用EAS 公网或VPC地址(推荐使用),都不需要提供.com后的信息,正确的地址格式举例:http://1*************70.cn-shanghai.pai-eas.aliyuncs.com

    • APIKEY:

      确认提供了正确的PAI EAS 服务Token。

    获取具体参数信息,请参见获取访问地址和Token

  2. AI_GENERATE函数参数检查

    • 当需要处理音频/视频数据时,unstructured_data不支持使用BINARY类型;

    • 若使用的是STRING类型的URL地址,但仍然无返回时,请确认是否正确填写type值,支持取值为IMAGE/AUDIO/VIDEO。例如:

      SELECT
        key,
        AI_GENERATE(
          PAI_EAS1_Qwen25_Omni_3B, v1, audio_url,
          "请精确分析音频的音乐类型,返回结果只显示如下七个选项之一,不显示任何额外信息:古典、乡村、嘻哈、金属、流行、雷鬼、摇滚","AUDIO"
        ) as item_catagory
        from (
          select GET_SIGNED_URL_FROM_OSS(
            'project_test_model.default.music_demo', key, 604800
          ) as audio_url, key as key
          from project_test_model.default.music_demo
      ) Limit 42;
  3. 运行状态检查

    手动关闭查询加速任务,排除SQLRT任务对模型调用的影响。在AI_GENERATE函数调用前增加:set odps.mcqa.disable=true;

    部分场景下,作业提交会默认开启查询加速,但开启后会影响远程模型调用,需用户手动关闭。

  4. EAS资源检查

    请检查远程模型对应EAS资源是否充足,是否在作业执行期间出现资源不足如OOM等异常问题,如有,请扩容后重试。