AI_GENERATE是MaxCompute提供的AI Function,用於調用模型結合提示詞執行推理任務,支援自然語言產生、複雜邏輯分析、情感分類、多模態理解等情境。使用者可通過SQL直接完成非結構化資料的智能處理,無需外部服務依賴。
命令格式
AI_GENERATE在調用LLM大語言模型和MLLM多模態大語言模型時,會有不同的函數簽名。
當model_type為LLM大語言模型時,函數簽名如下:
STRING AI_GENERATE( STRING <model_name> , STRING <version_name>, STRING <prompt> [, STRING <model_parameters>] );當model_type為MLLM多模態大語言模型時,函數簽名如下:
STRING AI_GENERATE( STRING <model_name>, STRING <version_name>, STRING | BINARY <unstructured_data> , STRING <prompt> STRING <type> [, STRING <model_parameters>] );
參數說明
model_name:必填。STRING類型。待使用的模型名。支援模型的model_type為LLM或MLLM。
version_name:必填。STRING類型。待使用的模型版本名。如果調用預設version,支援直接輸入
DEFAULT_VERSION。prompt:必填。STRING類型。待輸入的模型提示詞。
STRING類型常量、列名或運算式。unstructured_data:必填(當model_type為MLLM時)。STRING或BINARY類型。
需要處理的多模態資料,支援指定為圖片/音頻/視頻STRING類型的URL地址,或圖片BINARY類型的二進位表示。當指定為BINARY類型時,需要在建立模型時同時指定BINARY類型的輸入參數。
type:當unstructured_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:介於 0 到 1 之間的值,用於控制模型輸出的隨機性強度。值越大,輸出越具創意和多樣性;值越低,輸出越確定和保守。
top_p:介於 0 到 1 之間的值,用於限定模型選擇的備選標籤範圍。值越大,備選範圍越廣,多樣性越高;值越小,範圍越窄,結果越集中。
使用AI Function調用公用模型推理時,需要SET odps.sql.using.public.model=true;開啟使用公用模型開關。
傳回值說明
返回STRING類型,模型的產生內容結果。
使用樣本
樣本1:調用模型進行情感分析
調用MaxCompute提供的公用模型qwen3.7-max,對網路使用者評論資料進行情感分析。
SET odps.namespace.schema=true;
SELECT
prompt,
AI_GENERATE(
bigdata_public_modelset.default.`qwen3.7-max`,
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 | 負面 |
+--------+----------------+樣本2:調用模型產生內容
調用MaxCompute提供的公用模型deepseek-v4-pro,直接進行模型調用與內容產生。
SET odps.namespace.schema=true;
SELECT AI_GENERATE(bigdata_public_modelset.default.`deepseek-v4-pro`,DEFAULT_VERSION,'what is the capital of China');
-- 返回結果
+-----+
| _c0 |
+-----+
| The capital of China is **Beijing**. |
+-----+樣本3:調用模型進行多模態資料處理
圖片處理
調用公用模型qwen3.7-plus,基於圖片的URL地址及提示詞實現商品類目打標。樣本中Object Table命名為
image_demo。-- 開啟三層模型 SET odps.namespace.schema=true; -- 建立Object Table CREATE OBJECT TABLE IF NOT EXISTS image_demo WITH SERDEPROPERTIES ('odps.properties.rolearn'='acs:ram::xxxxxxxxxxxxxxxx:role/aliyunodpsdefaultrole') LOCATION 'oss://oss-cn-hangzhou-internal.aliyuncs.com/muze-demo/poster_11/'; ALTER TABLE image_demo REFRESH METADATA; SELECT COUNT(*) AS ROW_COUNT FROM image_demo; +------------+ | row_count | +------------+ | 50 | +------------+ -- 調用公用模型qwen3.7-plus,基於圖片的URL地址及提示詞實現商品類目打標。 SELECT key, AI_GENERATE( bigdata_public_modelset.default.`qwen3.7-plus`, DEFAULT_VERSION, image_url, '從電商商品銷售海報中識別並提取商品所屬的類目。返回結果僅限於如下六個選項之一:美妝、服裝、日用、食品、其他、電子產品,不包含其他文字或資訊','IMAGE' ) AS item_catagory FROM ( SELECT GET_SIGNED_URL_FROM_OSS( 'muze_project.default.image_demo', key, 604800 ) AS image_url, key AS key FROM muze_project.default.image_demo ) Limit 10; -- 返回結果: +------+---------------+ | key | item_catagory | +------+---------------+ | O1CN01085bQu2GXxbXWRZdR_!!190979026-0-alimamazszw.jpg | 電子產品 | | O1CN01090E2K2IpTwrsnKig_!!2200646859335-0-alimamazszw.jpg | 日用 | | O1CN01104c5a1V8Ve9lucF0_!!2212022232608-0-alimamazszw.jpg | 食品 | | O1CN01113ir71oWIvnjQ5VI_!!2207697805232-0-alimamazszw.jpg | 美妝 | | O1CN01174q2u1ZlDaCqi6bG_!!2212097133234-0-alimamazszw.jpg | 其他 | | O1CN01361qwo2D9HOv5WB4p_!!826038566-0-alimamazszw.jpg | 其他 | | O1CN01413KK82ANWsnkpDh4_!!802948191-0-alimamazszw.jpg | 服裝 | | O1CN01446lv42D12HPYUDpl_!!1573418548-0-alimamazszw.jpg | 服裝 | | O1CN01447sWy2E4zJ1YgpM0_!!1676208692-0-alimamazszw.jpg | 美妝 | | O1CN01526tSJ1QY5hF6zdE7_!!2867731987-0-alimamazszw.jpg | 食品 | +------+---------------+音頻處理
調用已經建立好的模型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命名為
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;
常見問題
公用模型常見問題排查
問題現象:調用模型計算服務所支援的公用模型時,詳細報錯資訊如下。
FAILED: ODPS-0130071:[1,8] Semantic analysis exception - inference quota status check failed, error message: region cn-shanghai not found in inference quota產生原因:當前專案所在的region(如 cn-shanghai)下未開通模型計算服務,導致無法正常調用 AI 推理資源。
處理方法:請前往阿里雲控制台,為當前專案的 Region 開通模型計算服務。詳細操作資訊請參見購買與使用MaxCompute 模型計算服務。
EAS遠程模型常見問題排查
如果通過AI_GENERATE函數調用MaxCompute遠程模型,作業運行後返回結果為空白,建議按照以下流程進行排查:
建立遠程模型參數檢查
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。
擷取具體參數資訊,請參見6.1 擷取訪問地址和Token。
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;
運行狀態檢查
手動關閉查詢加速任務,排除SQLRT任務對模型調用的影響。在AI_GENERATE函數調用前增加:
set odps.mcqa.disable=true;部分情境下,作業提交會預設開啟查詢加速,但開啟後會影響遠程模型調用,需使用者手動關閉。
EAS資源檢查
請檢查遠程模型對應EAS資源是否充足,是否在作業執行期間出現資源不足如OOM等異常問題,如有,請擴容後重試。