AI_GENERATE は、MaxCompute の AI 関数であり、指定されたプロンプトに基づいてモデルを呼び出して推論を実行します。この関数を SQL 内で直接使用することで、外部サービスに依存することなく、自然言語生成、複雑なロジック分析、感情分析、マルチモーダル理解など、さまざまなシナリオにおける非構造化データの処理が可能です。
構文
AI_GENERATE 関数のシグネチャは、使用するモデルが大規模言語モデル(LLM)か、マルチモーダル大規模言語モデル(MLLM)かによって異なります。
LLM を使用する場合の関数シグネチャは以下のとおりです:
STRING AI_GENERATE( STRING <model_name> , STRING <version_name>, STRING <prompt> [, STRING <model_parameters>] );MLLM を使用する場合の関数シグネチャは以下のとおりです:
STRING AI_GENERATE( STRING <model_name>, STRING <version_name>, STRING | BINARY <unstructured_data> , STRING <prompt> STRING <type> [, STRING <model_parameters>] );
パラメーター
model_name:必須。STRING 型。使用するモデルの名前です。モデルは大規模言語モデル(LLM)またはマルチモーダル大規模言語モデル(MLLM)のいずれかです。
version_name:必須。STRING 型。使用するモデルのバージョンです。デフォルトバージョンを呼び出すには、
DEFAULT_VERSIONを指定します。prompt:必須。STRING 型。モデルに送信するプロンプトです。これは
STRING定数、列名、または式のいずれかを指定できます。unstructured_data:MLLM のみで必須。STRING 型または BINARY 型。
処理対象のマルチモーダルデータです。画像、音声、動画ファイルの URL を STRING として指定するか、画像のバイナリデータを BINARY として提供できます。BINARY 型を使用する場合は、モデル作成時に BINARY 入力パラメーターを指定する必要があります。
type:unstructured_data が画像、音声、動画の URL(STRING)である場合、このパラメーター は必須です。有効な値は 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 型。推論時のモデル呼び出しパラメーターを JSON 文字列で指定します(例:
max_tokens、temperature、top_p)。例:'{"max_tokens": 500, "temperature": 0.6, "top_p": 0.95}'。サポートされるパラメーターは以下のとおりです:max_tokens:単一のモデル呼び出しで生成するトークンの最大数です。MaxCompute のパブリックモデルではデフォルト値は 4096 です。
temperature:モデル出力のランダム性を制御する 0 ~ 1 の値です。値が大きいほど、多様でランダムな出力になります。
top_p:モデル出力のランダム性および多様性を制御する 0 ~ 1 の値です。値が大きいほど、よりランダムな出力になります。
AI 関数でパブリックモデルを呼び出すには、アクセスを有効化するために SET odps.sql.using.public.model=true; を実行します。
戻り値
モデルが生成したコンテンツを含む STRING を返します。
例
例 1:コンテンツの生成
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,'中国の首都はどこですか');
-- 戻り値:
-- "中国の首都は **北京** です。"例 2:感情分析の実行
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('以下のコメントに対して感情分析を実行してください。出力は「Positive」「Negative」「Neutral」のいずれか 1 つのみとし、それ以外の文字や情報は含めないでください。分析対象のコメント:', prompt)
) AS generated_text
FROM (
VALUES
('今日は天気がとても良く、気分も最高です!晴れていて、散歩にぴったりです。/no_think'),
('今日は天気がとても良く、気分も最高です!晴れています。/no_think'),
('技術は急速に進化しており、人工知能が人々の生活を変革しています。/no_think'),
('予防・対策措置は非常に優れており、医療従事者に拍手を送ります!/no_think'),
('この製品の品質は非常に劣悪です。/no_think')
) t (prompt);
-- 戻り値:
+-----------------------------------------------------------------------------------------+----------------+
| prompt | generated_text |
+-----------------------------------------------------------------------------------------+----------------+
| 今日は天気がとても良く、気分も最高です!晴れていて、散歩にぴったりです。/no_think | "Positive" |
| 今日は天気がとても良く、気分も最高です!晴れています。/no_think | "Positive" |
| 技術は急速に進化しており、人工知能が人々の生活を変革しています。/no_think | "Neutral" |
| 予防・対策措置は非常に優れており、医療従事者に拍手を送ります!/no_think | "Positive" |
| この製品の品質は非常に劣悪です。/no_think | "Negative" |
+-----------------------------------------------------------------------------------------+----------------+
例 3:マルチモーダルデータの処理
この例では、あらかじめ作成済みの PAI-EAS リモートモデル PAI_EAS_Qwen25_Omni_3B を呼び出し、Object Table を使用して AI 関数を実行します。詳細な手順については、「MaxCompute リモートモデルを使用した EC 製品説明文の自動生成」をご参照ください。
VPC エンドポイント(推奨)および PAI-EAS パブリックエンドポイントがサポートされています。
PAI-EAS VPC エンドポイントを使用する場合、専用ネットワーク接続を確立し、AI 関数呼び出し時に設定済みのネットワーク接続名を指定する必要があります。設定手順については、「専用回線による VPC へのアクセス」をご参照ください。
PAI-EAS パブリックエンドポイントを使用する場合、AI 関数を呼び出す前に、MaxCompute の許可された外部ネットワークアドレス一覧に該当エンドポイントを追加する必要があります。設定手順については、「ネットワークアクセスの構成」をご参照ください。
画像の処理
画像の URL とプロンプトを指定してモデルを呼び出し、製品カテゴリのタグ付けを行います。この例では、Object Table の名前は
image_demoです。SELECT key, AI_GENERATE( PAI_EAS_Qwen25_Omni_3B, v1, image_url, "EC 販売ポスターから製品カテゴリを特定・抽出してください。結果は以下の 6 つの選択肢のいずれか 1 つとし、それ以外のテキストや情報を含めないでください:化粧品、衣類、日用品、食品、その他、電子製品。", "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, "音声の音楽ジャンルを正確に分析してください。結果は以下の 7 つの選択肢のいずれか 1 つとし、それ以外の情報は含めないでください:クラシック、カントリー、ヒップホップ、メタル、ポップ、レゲエ、ロック。", "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;
よくある質問
PAI-EAS リモートモデルのトラブルシューティング
AI_GENERATE 関数で MaxCompute リモートモデルを呼び出したジョブが空の結果を返す場合、以下のトラブルシューティング手順に従ってください。
CREATE MODEL のパラメーター
PAI_EAS_SERVICE_NAME:PAI-EAS サービスがサービスグループに追加されているかどうかを確認します。
サービスがサービスグループ内にある場合、
group_name.service_nameの形式(例:group.service_name)でサービス名を指定する必要があります。サービスがサービスグループ内にない場合は、PAI-EAS サービス名のみを指定します。
Endpoint:モデルの
ENDPOINTパラメーターを設定する際、PAI-EAS パブリックエンドポイントを使用する場合でも、VPC エンドポイント(推奨) を使用する場合でも、.comドメイン以降のパスを含めないでください。正しい形式の例:http://1*************70.cn-shanghai.pai-eas.aliyuncs.com。APIKEY:正しい PAI-EAS サービストークンを指定していることを確認します。
これらのパラメーター値の取得方法については、「エンドポイントおよびトークンの取得」をご参照ください。
AI_GENERATE 関数のパラメーター
音声または動画データを処理する場合、unstructured_data パラメーターは BINARY 型をサポートしません。
STRING URL を使用しているにもかかわらず空の結果が返される場合は、
typeパラメーターが正しく指定されていることを確認します。有効な値はIMAGE、AUDIO、VIDEOです。例:SELECT key, AI_GENERATE( PAI_EAS1_Qwen25_Omni_3B, v1, audio_url, "音声の音楽ジャンルを正確に分析してください。結果は以下の 7 つの選択肢のいずれか 1 つとし、それ以外の情報は含めないでください:クラシック、カントリー、ヒップホップ、メタル、ポップ、レゲエ、ロック。", "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;
実行時状態
クエリ加速がモデル呼び出しに干渉していないかを確認するため、クエリ加速を無効化します。
AI_GENERATE関数呼び出しの前に、以下のステートメントを追加します:set odps.mcqa.disable=true;一部のシナリオではクエリ加速がデフォルトで有効化されており、リモートモデル呼び出しに干渉する可能性があるため、手動で無効化する必要があります。
PAI-EAS リソース
リモートモデルに割り当てられた PAI-EAS リソースが十分であるかを確認します。ジョブがメモリ不足(OOM)エラーで失敗した場合は、リソースを拡張して再試行してください。