A função AI_GENERATE do MaxCompute invoca um modelo com um prompt para executar uma tarefa de inferência. Ela atende a diversos cenários, como geração de linguagem natural, análise lógica complexa, análise de sentimentos e compreensão multimodal. Esse recurso permite processar dados não estruturados diretamente via SQL, sem depender de serviços externos.
Sintaxe
A função AI_GENERATE possui assinaturas diferentes para modelos de linguagem grandes (LLMs) e modelos de linguagem grandes multimodais (MLLMs).
-
Se o
model_typefor um LLM, a assinatura da função é:STRING AI_GENERATE( STRING <model_name> , STRING <version_name>, STRING <prompt> [, STRING <model_parameters>] ); -
Se o
model_typefor um MLLM, a assinatura da função é:STRING AI_GENERATE( STRING <model_name>, STRING <version_name>, STRING | BINARY <unstructured_data> , STRING <prompt> STRING <type> [, STRING <model_parameters>] );
Parâmetros
model_name: Obrigatório. Valor STRING que especifica o nome do modelo. O
model_typedo modelo deve ser LLM ou MLLM.version_name: Obrigatório. Valor STRING que define a versão do modelo. Para invocar a versão padrão, especifique
DEFAULT_VERSION.prompt: Obrigatório. Prompt enviado ao modelo. Deve ser uma constante, um nome de coluna ou uma expressão do tipo
STRING.-
unstructured_data: Obrigatório quando o
model_typeé MLLM. Aceita valores STRING ou BINARY.Define os dados multimodais a serem processados. Pode ser uma URL STRING de imagem, áudio ou vídeo, ou a representação BINARY de uma imagem. Caso utilize o tipo BINARY, também será necessário definir um parâmetro de entrada BINARY durante a criação do modelo.
-
type: Quando unstructured_data for uma URL STRING referente a imagem, áudio ou vídeo, o parâmetro type é obrigatório. Os valores suportados são IMAGE, AUDIO e VIDEO. Exemplos:
Áudio:
AI_GENERATE(model, version,audio_url, prompt, 'AUDIO');Vídeo:
AI_GENERATE(model, version, video_url, prompt, 'VIDEO');Imagem:
AI_GENERATE(model, version, image_url, prompt, 'IMAGE');
-
model_parameters: Opcional. STRING. Especifica parâmetros do modelo como
max_tokens,temperatureetop_p. O formato é uma string JSON:'{"max_tokens": 500, "temperature": 0.6, "top_p": 0.95}'.max_tokens: Número máximo de tokens gerados em uma única chamada ao modelo. Para modelos públicos do MaxCompute, o valor padrão é 4.096.
temperature: Valor entre 0 e 1 que controla a aleatoriedade da saída. Valores mais altos resultam em saídas mais criativas e diversificadas, enquanto valores mais baixos produzem resultados mais determinísticos e conservadores.
top_p: Valor entre 0 e 1 que limita o intervalo de rótulos candidatos disponíveis para escolha pelo modelo. Um valor maior amplia o leque de opções e aumenta a diversidade; já um valor menor restringe as possibilidades e gera resultados mais focados.
Para utilizar uma função de IA na inferência com um modelo público, primeiro ative o uso de modelos públicos executando o comando SET odps.sql.using.public.model=true;.
Valor de retorno
Retorna uma STRING contendo o conteúdo gerado pelo modelo.
Exemplos
Exemplo 1: Realizar análise de sentimentos
Utilize o modelo público qwen3.7-max fornecido pelo MaxCompute para analisar sentimentos em dados de comentários de usuários online.
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 |
+--------+----------------+
Exemplo 2: Gerar conteúdo
Invoque o modelo público deepseek-v4-pro disponibilizado pelo MaxCompute para realizar inferência e geração de conteúdo diretamente.
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**. |
+-----+
Exemplo 3: Processar dados multimodais
-
Processamento de imagens
Chame o modelo público qwen3.7-plus para classificar categorias de produtos com base em uma URL de imagem e um prompt. Neste exemplo, a Object Table chama-se
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 | +------+---------------+ -
Processamento de áudio
Após criar um modelo remoto PAI-EAS chamado PAI_EAS_Qwen25_Omni_3B e uma Object Table, invoque a função de IA. Para etapas detalhadas, consulte Usar um modelo remoto do MaxCompute para gerar automaticamente descrições de produtos de e-commerce.
Nota É possível usar um endpoint VPC (recomendado) ou um endpoint de rede pública do PAI-EAS.
Ao optar por um endpoint VPC do PAI-EAS, ative uma conexão dedicada e especifique o nome da conexão configurada ao invocar a função de IA. Para detalhes de configuração, consulte Solução de acesso VPC (conexão dedicada).
Caso prefira um endpoint de rede pública do PAI-EAS, adicione-o à lista de permissões de rede externa do MaxCompute antes de chamar a função de IA. Para instruções de configuração, consulte Procedimento de acesso à rede.
Chame o modelo com uma URL de áudio e um prompt para classificar a categoria do áudio. Neste exemplo, a Object Table chama-se
music_demo. Baixe o conjunto de dados de áudio neste link de download.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;
Perguntas frequentes
Solução de problemas com modelos públicos
Sintoma: A chamada a um modelo público por meio do service de computação de modelos retorna o seguinte erro:
FAILED: ODPS-0130071:[1,8] Semantic analysis exception - inference quota status check failed, error message: region cn-shanghai not found in inference quota
Causa: O service de computação de modelos não está ativado para a região do seu projeto (por exemplo, cn-shanghai), o que impede a invocação de recursos de inferência de IA.
Solução: Ative o service de computação de modelos para a região do seu projeto no console Alibaba Cloud. Para instruções detalhadas, consulte Comprar e usar o service de computação de modelos do MaxCompute.
Solução de problemas com modelos remotos PAI-EAS
Se uma chamada a um modelo remoto do MaxCompute usando a função AI_GENERATE retornar um resultado vazio, siga estas etapas para solucionar o problema:
-
Verifique os parâmetros de Criar modelo remoto
-
PAI_EAS_SERVICE_NAME:
Confira se o service EAS foi adicionado a um grupo de services.
Em caso positivo, especifique o nome no formato
group_name.service_name, comogroup.service_name.Caso contrário, informe apenas o nome do service EAS.
-
Endpoint:
Ao definir o parâmetro ENDPOINT do modelo, não inclua as informações após .com no endereço, independentemente de usar o endereço de rede pública do EAS ou o endereço VPC (recomendado). Um exemplo de formato correto é:
http://1*************70.cn-shanghai.pai-eas.aliyuncs.com. -
APIKEY:
Valide se o token do service PAI-EAS está correto.
Para obter os valores dos parâmetros, consulte 6.1 Obter um endpoint e token.
-
-
Revise os parâmetros da função AI_GENERATE
Para dados de áudio e vídeo, o tipo
BINARYnão é suportado em unstructured_data.-
Se você usar uma URL STRING e a função retornar um resultado vazio, confirme se o parâmetro
typefoi especificado corretamente. Os valores válidos sãoIMAGE,AUDIOeVIDEO. Por exemplo: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;
-
Analise o status de execução
Desative manualmente a tarefa de aceleração de consultas para eliminar o impacto da tarefa SQLRT nas chamadas ao modelo. Antes da chamada à função AI_GENERATE, adicione:
set odps.mcqa.disable=true;Em alguns cenários, a aceleração de consultas vem ativada por padrão ao enviar um job. Esse recurso pode interferir na invocação de modelos remotos e precisa ser desativado manualmente.
-
Verifique os recursos do PAI-EAS
Garanta que os recursos do PAI-EAS para o modelo remoto sejam suficientes. Durante a execução do job, monitore problemas relacionados a recursos, como erros de falta de memória (OOM). Se isso ocorrer, aumente os recursos e tente executar o job novamente.