AI_GENERATE は、プロンプトを使用してモデルを呼び出し、推論タスクを実行する MaxCompute の AI 関数です。自然言語生成、複雑な論理分析、感情分析、マルチモーダル理解など、さまざまなシナリオをサポートします。この関数を使用すると、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 値。デフォルトバージョンを呼び出すには、
DEFAULT_VERSIONを指定します。prompt:必須。モデルのプロンプト。定数、列名、または
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` などのモデルパラメーターを指定します。フォーマットは JSON 文字列です:
'{"max_tokens": 500, "temperature": 0.6, "top_p": 0.95}'max_tokens:1 回のモデル呼び出しで生成されるトークンの最大数。MaxCompute パブリックモデルの場合、デフォルト値は 4,096 です。
temperature:出力のランダム性を制御する 0 から 1 の間の値。値が高いほど、より創造的で多様な出力になり、値が低いほど、より決定的で保守的な出力になります。
top_p:モデルが選択できる候補ラベルの範囲を制限する 0 から 1 の間の値。値が高いほど、範囲が広がり多様性が増し、値が低いほど、範囲が狭まりより焦点の合った結果が生成されます。
パブリックモデルで AI 関数を推論に使用するには、まずコマンド 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('Please classify the sentiment of the following comment. The output must be exactly one of the following three options: Positive, Negative, Neutral. Comment to analyze: ', prompt)
) AS generated_text
FROM (
VALUES
('The weather is great today, and I am in a good mood! The sun is shining, perfect for a walk. /no_think'),
('The weather is great today, and I am in a good mood! The sun is shining /no_think'),
('Technology is advancing rapidly, and artificial intelligence is changing lives. /no_think'),
('The control measures are excellent, kudos to the healthcare workers! /no_think'),
('The quality of this product is very poor /no_think')
) t (prompt);
-- 次の結果が返されます:
+--------+----------------+
| prompt | generated_text |
+--------+----------------+
| The weather is great today, and I am in a good mood! The sun is shining, perfect for a walk. /no_think | Positive |
| The weather is great today, and I am in a good mood! The sun is shining /no_think | Positive |
| Technology is advancing rapidly, and artificial intelligence is changing lives. /no_think | Neutral |
| The control measures are excellent, kudos to the healthcare workers! /no_think | Positive |
| The quality of this product is very poor /no_think | Negative |
+--------+----------------+例 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 とプロンプトに基づいて製品カテゴリをタグ付けします。この例では、オブジェクトテーブルの名前は
image_demoです。-- 3 層モデルを有効にします。 SET odps.namespace.schema=true; -- オブジェクトテーブルを作成します。 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, 'Identify and extract the product category from the e-commerce product poster. The output must be exactly one of the following six options: Beauty, Apparel, Daily necessities, Food, Other, Electronics. Do not include any other text or information.','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 | Electronics | | O1CN01090E2K2IpTwrsnKig_!!2200646859335-0-alimamazszw.jpg | Daily necessities | | O1CN01104c5a1V8Ve9lucF0_!!2212022232608-0-alimamazszw.jpg | Food | | O1CN01113ir71oWIvnjQ5VI_!!2207697805232-0-alimamazszw.jpg | Beauty | | O1CN01174q2u1ZlDaCqi6bG_!!2212097133234-0-alimamazszw.jpg | Other | | O1CN01361qwo2D9HOv5WB4p_!!826038566-0-alimamazszw.jpg | Other | | O1CN01413KK82ANWsnkpDh4_!!802948191-0-alimamazszw.jpg | Apparel | | O1CN01446lv42D12HPYUDpl_!!1573418548-0-alimamazszw.jpg | Apparel | | O1CN01447sWy2E4zJ1YgpM0_!!1676208692-0-alimamazszw.jpg | Beauty | | O1CN01526tSJ1QY5hF6zdE7_!!2867731987-0-alimamazszw.jpg | Food | +------+---------------+オーディオ処理
PAI_EAS_Qwen25_Omni_3B という名前の PAI-EAS リモートモデルとオブジェクトテーブルを作成した後、AI 関数を呼び出すことができます。詳細な手順については、「MaxCompute リモートモデルを使用して e コマース製品説明を自動生成する」をご参照ください。
注 VPC エンドポイント (推奨) または PAI-EAS パブリックネットワークエンドポイントを使用できます。
PAI-EAS VPC エンドポイントを使用する場合、専用線接続を有効にし、AI 関数を呼び出すときに構成済みのネットワーク接続名を指定する必要があります。構成の詳細については、「VPC アクセスソリューション (専用線接続)」をご参照ください。
PAI-EAS パブリックネットワークエンドポイントを使用する場合、AI 関数を呼び出す前に、エンドポイントを MaxCompute 外部ネットワークの許可リストに追加する必要があります。構成手順については、「ネットワークアクセス手順」をご参照ください。
オーディオ URL とプロンプトでモデルを呼び出し、オーディオカテゴリをタグ付けします。この例では、オブジェクトテーブルの名前は
music_demoです。次のダウンロードリンクからオーディオデータセットをダウンロードできます。SELECT key, AI_GENERATE( PAI_EAS1_Qwen25_Omni_3B, v1, audio_url, "Accurately analyze the music genre of the audio. The result must be one of the following seven options, with no additional information: Classical, Country, Hip-hop, Metal, Pop, Reggae, Rock","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原因:ご利用のプロジェクトのリージョン (例:`cn-shanghai`) でモデルコンピューティングサービスが有効化されていないため、AI 推論リソースの呼び出しができません。
解決策:Alibaba Cloud コンソールで、ご利用のプロジェクトのリージョンでモデルコンピューティングサービスを有効化します。詳細な手順については、「MaxCompute モデルコンピューティングサービスの購入と使用」をご参照ください。
PAI-EAS リモートモデルのトラブルシューティング
AI_GENERATE 関数を使用した MaxCompute リモートモデルの呼び出しが空の結果を返す場合は、次の手順に従って問題をトラブルシューティングしてください。
リモートモデルの作成のパラメーターを確認する
PAI_EAS_SERVICE_NAME:
EAS サービスがサービスグループに追加されているかどうかを確認します。
追加されている場合は、`group_name.service_name` の形式 (例:`group.service_name`) で名前を指定する必要があります。
追加されていない場合は、EAS サービス名のみを指定します。
Endpoint:
モデルの ENDPOINT パラメーターを設定する際、EAS パブリックネットワークアドレスまたは VPC アドレス (推奨) のどちらを使用する場合でも、アドレスの .com に続く情報は指定しないでください。正しいアドレス形式の例は次のとおりです:
http://1*************70.cn-shanghai.pai-eas.aliyuncs.comAPIKEY:
PAI-EAS サービストークンが正しいことを確認します。
パラメーター値を取得するには、「6.1 エンドポイントとトークンの取得」をご参照ください。
AI_GENERATE関数のパラメーターを確認するオーディオおよびビデオデータの場合、unstructured_data には
BINARY型はサポートされていません。STRING 型の URL を使用し、関数から空の結果が返される場合は、
typeパラメーターが正しく指定されていることを確認してください。 サポートされている値はIMAGE、AUDIO、およびVIDEOです。 例:SELECT key, AI_GENERATE( PAI_EAS1_Qwen25_Omni_3B, v1, audio_url, "Accurately analyze the music genre of the audio. The result must be one of the following seven options, with no additional information: Classical, Country, Hip-hop, Metal, Pop, Reggae, Rock","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;一部のシナリオでは、ジョブを送信するときにクエリアクセラレーションがデフォルトで有効になります。この機能はリモートモデルの呼び出しに干渉する可能性があるため、手動で無効にする必要があります。
PAI-EAS リソースを確認する
リモートモデル用の PAI-EAS リソースが十分であることを確認してください。ジョブの実行中に、メモリ不足 (OOM) エラーなどのリソース関連の問題がないか確認します。このような問題が発生した場合は、リソースをスケールアップしてジョブを再試行してください。