AI_GENERATE est une fonction IA de MaxCompute qui invoque un modèle à l'aide d'une invite pour exécuter une tâche d'inférence. Elle prend en charge divers scénarios, tels que la génération de langage naturel, l'analyse logique complexe, l'analyse des sentiments et la compréhension multimodale. Cette fonction permet de traiter directement les données non structurées via SQL, sans recourir à des services externes.
Syntaxe
La fonction AI_GENERATE possède différentes signatures selon qu'elle s'applique aux grands modèles de langage (LLM) ou aux grands modèles de langage multimodaux (MLLM).
-
Si
model_typecorrespond à un LLM, la signature de la fonction est la suivante :STRING AI_GENERATE( STRING <model_name> , STRING <version_name>, STRING <prompt> [, STRING <model_parameters>] ); -
Si
model_typecorrespond à un MLLM, la signature de la fonction est la suivante :STRING AI_GENERATE( STRING <model_name>, STRING <version_name>, STRING | BINARY <unstructured_data> , STRING <prompt> STRING <type> [, STRING <model_parameters>] );
Paramètres
model_name : Obligatoire. Valeur de type STRING spécifiant le nom du modèle. Le paramètre
model_typedu modèle doit être défini sur LLM ou MLLM.version_name : Obligatoire. Valeur de type STRING spécifiant la version du modèle. Pour invoquer la version par défaut, spécifiez
DEFAULT_VERSION.prompt : Obligatoire. Invite destinée au modèle. Il doit s'agir d'une constante, d'un nom de colonne ou d'une expression de type
STRING.-
unstructured_data : Obligatoire lorsque
model_typeest défini sur MLLM. Valeur de type STRING ou BINARY.Spécifie les données multimodales à traiter. Il peut s'agir d'une URL STRING pointant vers une image, un fichier audio ou une vidéo, ou de la représentation BINARY d'une image. Si vous spécifiez le type BINARY, vous devez également définir un paramètre d'entrée BINARY lors de la création du modèle.
-
type : Lorsque unstructured_data est une URL STRING pointant vers une image, un fichier audio ou une vidéo, le paramètre type est obligatoire. Les valeurs prises en charge sont IMAGE, AUDIO et VIDEO. Exemples :
Audio :
AI_GENERATE(model, version,audio_url, prompt, 'AUDIO');Vidéo :
AI_GENERATE(model, version, video_url, prompt, 'VIDEO');Image :
AI_GENERATE(model, version, image_url, prompt, 'IMAGE');
-
model_parameters : Facultatif. Type STRING. Spécifie les paramètres du modèle, tels que
max_tokens,temperatureettop_p. Le format attendu est une chaîne JSON :'{"max_tokens": 500, "temperature": 0.6, "top_p": 0.95}'.max_tokens : Nombre maximal de jetons à générer lors d'un seul appel au modèle. Pour les modèles publics MaxCompute, la valeur par défaut est 4 096.
temperature : Valeur comprise entre 0 et 1 contrôlant le caractère aléatoire de la sortie. Une valeur plus élevée produit des résultats plus créatifs et diversifiés, tandis qu'une valeur plus faible génère des sorties plus déterministes et conservatrices.
top_p : Valeur comprise entre 0 et 1 limitant la plage d'étiquettes candidates que le modèle peut sélectionner. Une valeur plus élevée élargit la gamme des possibilités et favorise la diversité, tandis qu'une valeur plus faible restreint la sélection pour produire des résultats plus ciblés.
Pour utiliser une fonction IA afin d'effectuer une inférence avec un modèle public, activez d'abord l'utilisation des modèles publics en exécutant la commande SET odps.sql.using.public.model=true;.
Valeur de retour
Renvoie une chaîne STRING contenant le contenu généré par le modèle.
Exemples
Exemple 1 : Effectuer une analyse des sentiments
Utilisez le modèle public qwen3.7-max fourni par MaxCompute pour analyser les sentiments exprimés dans les commentaires des utilisateurs en ligne.
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);
-- The following result is returned:
+--------+----------------+
| 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 |
+--------+----------------+
Exemple 2: Générer du contenu
Appelez le modèle public deepseek-v4-pro fourni par MaxCompute pour effectuer directement l'inférence du modèle et la génération de contenu.
SET odps.namespace.schema=true;
SELECT AI_GENERATE(bigdata_public_modelset.default.`deepseek-v4-pro`,DEFAULT_VERSION,'what is the capital of China');
-- The following result is returned:
+-----+
| _c0 |
+-----+
| The capital of China is **Beijing**. |
+-----+
Exemple 3: Traiter des données multimodales
-
Traitement d'images
Appelez le modèle public qwen3.7-plus pour étiqueter les catégories de produits à partir d'une URL d'image et d'une invite. Dans cet exemple, la table d'objets se nomme
image_demo.-- Enable the three-tier model. SET odps.namespace.schema=true; -- Create an 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 | +------------+ -- Invoke the public model qwen3.7-plus to label product categories based on an image URL and a prompt. 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; -- The following result is returned: +------+---------------+ | 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 | +------+---------------+ -
Traitement audio
Après avoir créé un modèle distant PAI-EAS nommé PAI_EAS_Qwen25_Omni_3B ainsi qu'une table d'objets, vous pouvez invoquer la fonction IA. Pour connaître la procédure détaillée, consultez la rubrique Utiliser un modèle distant MaxCompute pour générer automatiquement des descriptions de produits e-commerce.
Remarque Vous pouvez utiliser un endpoint VPC (recommandé) ou un endpoint de réseau public PAI-EAS.
Si vous utilisez un endpoint VPC PAI-EAS, vous devez activer une connexion par ligne louée et spécifier le nom de la connexion réseau configurée lors de l'appel de la fonction IA. Pour les détails de configuration, reportez-vous à la rubrique Solution d'accès VPC (connexion par ligne louée).
Si vous utilisez un endpoint de réseau public PAI-EAS, vous devez ajouter l'endpoint à la liste d'autorisation d'accès externe de MaxCompute avant d'invoquer la fonction IA. Pour les instructions de configuration, consultez la rubrique Procédure d'accès réseau.
Appelez le modèle avec une URL audio et une invite pour étiqueter la catégorie audio. Dans cet exemple, la table d'objets se nomme
music_demo. Vous pouvez télécharger le jeu de données audio depuis le lien suivant : lien de téléchargement.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;
FAQ
Dépannage des modèles publics
Symptôme : L'appel d'un modèle public via le service de calcul de modèles renvoie l'erreur suivante :
FAILED: ODPS-0130071:[1,8] Semantic analysis exception - inference quota status check failed, error message: region cn-shanghai not found in inference quota
Cause : Le service de calcul de modèles n'est pas activé pour la région de votre projet (par exemple, cn-shanghai), ce qui empêche l'utilisation des ressources d'inférence IA.
Solution : Activez le service de calcul de modèles pour la région de votre projet dans la console Alibaba Cloud. Pour obtenir des instructions détaillées, consultez la rubrique Acheter et utiliser le service de calcul de modèles MaxCompute.
Dépannage des modèles distants PAI-EAS
Si un appel à un modèle distant MaxCompute utilisant la fonction AI_GENERATE renvoie un résultat vide, suivez ces étapes pour résoudre le problème :
-
Vérifiez les paramètres de Création de modèle distant
-
PAI_EAS_SERVICE_NAME :
Vérifiez si le service EAS a été ajouté à un groupe de services.
Si c'est le cas, vous devez spécifier le nom au format
group_name.service_name, par exemplegroup.service_name.Sinon, indiquez uniquement le nom du service EAS.
-
Endpoint :
Lorsque vous définissez le paramètre ENDPOINT du modèle, ne fournissez pas les informations situées après .com dans l'adresse, que vous utilisiez l'adresse de réseau public EAS ou l'adresse VPC (recommandée). Un format d'adresse correct est le suivant :
http://1*************70.cn-shanghai.pai-eas.aliyuncs.com. -
APIKEY :
Vérifiez que le jeton du service PAI-EAS est correct.
Pour obtenir les valeurs des paramètres, consultez la section 6.1 Obtenir un endpoint et un jeton.
-
-
Vérifiez les paramètres de la fonction AI_GENERATE
Pour les données audio et vidéo, le type
BINARYn'est pas pris en charge pour unstructured_data.-
Si vous utilisez une URL STRING et que la fonction renvoie un résultat vide, vérifiez que le paramètre
typeest correctement spécifié. Les valeurs prises en charge sontIMAGE,AUDIOetVIDEO. Exemple :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;
-
Vérifiez l'état d'exécution
Désactivez manuellement la tâche d'accélération des requêtes pour éliminer l'impact de la tâche SQLRT sur les appels de modèle. Avant l'appel de la fonction AI_GENERATE, ajoutez la ligne suivante :
set odps.mcqa.disable=true;Dans certains scénarios, l'accélération des requêtes est activée par défaut lors de la soumission d'une tâche. Cette fonctionnalité peut interférer avec l'invocation du modèle distant et doit être désactivée manuellement.
-
Vérifiez les ressources PAI-EAS
Assurez-vous que les ressources PAI-EAS allouées au modèle distant sont suffisantes. Pendant l'exécution de la tâche, vérifiez l'absence de problèmes liés aux ressources, tels que des erreurs de mémoire insuffisante (OOM). Si de tels problèmes surviennent, augmentez les ressources et relancez la tâche.