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 <model_parameters>] );
パラメーター
model_name:必須。使用するモデルの名前を指定する `STRING` です。モデルには、LLM または MLLM を指定できます。
version_name:必須。使用するモデルバージョンの名前を指定する `STRING` です。デフォルトバージョンを使用するには、このパラメーターを
DEFAULT_VERSIONに設定します。prompt: 必須。モデルに送信するプロンプトを指定する `STRING` です。値には、
STRING定数、列名、または式を指定できます。unstructured_data:`model_type` が MLLM の場合に必須です。処理するマルチモーダルデータを指定する `STRING` または `BINARY` 値です。イメージ URL を `STRING` として指定するか、イメージのバイナリデータを `BINARY` として指定できます。`BINARY` データ型を使用する場合、モデルの作成時にも `BINARY` 入力パラメーターを指定する必要があります。
model_parameters:任意。`STRING` 型。このパラメーターを使用して、
'{"max_tokens": 500, "temperature": 0.6, "top_p": 0.95}'のようなフォーマットで、`max_tokens`、`temperature`、`top_p` などのモデル呼び出しのパラメーターを指定できます。各パラメーターの説明は次のとおりです:max_tokens:1 回のモデル呼び出しで出力されるトークンの最大数。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; -- 次の結果が返されます。 -- "中国の首都は **北京** です。" SELECT AI_GENERATE(bigdata_public_modelset.default.Qwen3-0.6B-GGUF,DEFAULT_VERSION,'what is the capital of China');例 2: 感情分析のためにモデルを呼び出します。
MaxCompute のパブリックモデル `Qwen3-1.7B-GGUF` を呼び出して、ユーザーコメントの感情分析を実行します。
SET odps.sql.using.public.model=true; SELECT prompt, AI_GENERATE( bigdata_public_modelset.default.Qwen3-1.7B-GGUF, DEFAULT_VERSION, concat('Perform sentiment analysis and classification on the following comment. The output must be one of these three options: Positive, Negative, or Neutral. Comment to analyze:', prompt) ) AS generated_text FROM ( VALUES ('The weather is great today, and I''m in a good mood! It''s sunny and perfect for a walk. /no_think'), ('The weather is great today, and I''m in a good mood! It''s sunny. /no_think'), ('Technology is advancing rapidly, and artificial intelligence is changing lives. /no_think'), ('The control measures are excellent. Thumbs up to the medical staff! /no_think'), ('The quality of this product is very poor. /no_think') ) t (prompt); -- 次の結果が返されます: +------------------------------------------------------------------------------------------------+----------------+ | prompt | generated_text | +------------------------------------------------------------------------------------------------+----------------+ | The weather is great today, and I'm in a good mood! It's sunny and perfect for a walk. /no_think | "Positive" | | The weather is great today, and I'm in a good mood! It's sunny. /no_think | "Positive" | | Technology is advancing rapidly, and artificial intelligence is changing lives. /no_think | "Positive" | | The control measures are excellent. Thumbs up to the medical staff! /no_think | "Positive" | | The quality of this product is very poor. /no_think | "Negative" | +------------------------------------------------------------------------------------------------+----------------+例 3: マルチモーダルデータ処理のためにモデルを呼び出します。
この例では、PAI-EAS リモートモデルである `PAI_EAS_Qwen25_Omni_3B` という名前のモデルを呼び出し、イメージ URL とプロンプトに基づいて製品カテゴリをタグ付けします。また、`image_demo` という名前のオブジェクトテーブルを作成する必要もあります。詳細については、「MaxCompute リモートモデルを使用した e コマース製品説明の自動生成」をご参照ください。
説明現在、MaxCompute のリモートモデルは PAI-EAS のインターネットアドレスのみをサポートしています。AI 関数を使用してモデルを呼び出す場合、MaxCompute で利用可能な外部ネットワークアドレスとして PAI-EAS のインターネットアドレスを追加する必要があります。詳細については、「プロジェクト管理における外部ネットワークアドレスの編集」をご参照ください。
SELECT key, AI_GENERATE( PAI_EAS_Qwen25_Omni_3B, v1, image_url, "Recognize and extract the product category from the e-commerce product sales poster. The result must be one of the following six options: Cosmetics, Apparel, Daily Necessities, Food, Other, Electronic Products. Do not include any other text or information." ) AS item_catagory FROM ( SELECT GET_SIGNED_URL_FROM_OSS( 'pd_test_model.default.image_demo', key, 604800 ) AS image_url, key AS key FROM pd_test_model.default.image_demo ) Limit 10; -- 次の結果が返されます: +--------------------+---------------------+ | key | item_catagory | +--------------------+---------------------+ | alimamazszw-1.jpg | Food | | alimamazszw-10.jpg | Electronic Products | | alimamazszw-11.jpg | Electronic Products | | alimamazszw-12.jpg | Cosmetics | | alimamazszw-13.jpg | Electronic Products | | alimamazszw-14.jpg | Daily Necessities | | alimamazszw-15.jpg | Cosmetics | | alimamazszw-16.jpg | Cosmetics | | alimamazszw-18.jpg | Daily Necessities | +--------------------+---------------------+