Snowflake Cortex AI Functions: melhorias no tratamento de erros de várias linhas (versão preliminar)¶
Atenção
Esta mudança de comportamento faz parte do pacote 2026_02.
Para saber o status atual do pacote, consulte Histórico do pacote.
Quando esse pacote de mudança de comportamento é habilitado, a maioria das funções do Snowflake Cortex AI Functions retorna NULL em caso de erro, em vez de gerar o erro. Isso permite que consultas com várias linhas sejam concluídas mesmo que algumas linhas tenham erros. Além disso, a função AI_PARSE_DOCUMENT muda seu valor de retorno para ser mais consistente com o tratamento de erros das outras funções de AI.
Antes da mudança |
A maioria das funções de AI gera um erro quando a função não é bem-sucedida, impedindo que consultas com várias linhas sejam concluídas quando apenas uma linha não pode ser processada. |
|---|---|
Após a mudança |
A maioria das funções de AI retorna NULL quando a função não é bem-sucedida, permitindo que consultas com várias linhas sejam concluídas quando algumas linhas não podem ser processadas. Linhas com erros podem ser facilmente excluídas dos resultados de várias linhas. Um novo parâmetro final opcional nas funções de AI afetadas, Além disso, pequenas alterações no valor de retorno da função AI_PARSE_DOCUMENT a tornam mais consistente com as outras funções de AI, conforme mostrado a seguir:
|
Funções de AI afetadas¶
As seguintes funções de AI são afetadas por esta mudança de comportamento:
AI_COMPLETE: gera respostas de texto a partir de prompts de texto ou imagem usando um modelo de linguagem grande (Large Language Model, LLM) especificado.
AI_CLASSIFY: classifica textos ou imagens em categorias definidas pelo usuário.
AI_FILTER: aplica filtros semânticos a textos e imagens expressos em linguagem natural.
AI_PARSE_DOCUMENT: extrai estrutura, texto, imagens e tabelas de documentos como Markdown.
AI_TRANSCRIBE: transcreve arquivos de áudio ou vídeo com a identificação do locutor e os carimbos de data/hora.
AI_TRANSLATE: traduz texto entre os idiomas compatíveis.
AI_SENTIMENT: executa a classificação de sentimento no conteúdo de texto.
AI_COUNT_TOKENS: estima o uso de tokens para prompts.
Funções de AI não afetadas¶
As seguintes funções de AI não são afetadas por esta mudança de comportamento:
AI_EXTRACT: essa função já trata os erros retornando as informações de erro como um campo separado no resultado e não causa falhas nas consultas com várias linhas devido a um único erro. O comportamento de AI_EXTRACT é semelhante ao novo comportamento das outras funções de AI quando
return_error_detailsé TRUE, embora essa função não aceitereturn_error_details.AI_AGG e AI_SUMMARIZE_AGG: funções agregadas não estão no escopo desta BCR. A Snowflake ainda está considerando como as linhas que causam erros devem se comportar na agregação. O comportamento dessas funções pode mudar em uma BCR futura.
AI_EMBED: essa função retorna um VECTOR, que não é compatível com objetos VARIANT. O comportamento dessa função pode mudar em uma BCR futura.
Funções de AI mais antigas no namespace SNOWFLAKE.CORTEX. A Snowflake não pretende mudar o comportamento dessas funções.
Funções auxiliares¶
Esta BCR inclui duas funções auxiliares que ajudam a extrair informações do objeto de detalhes do erro retornado quando return_error_details está definido como TRUE. Essas funções permitem acesso prático a comportamentos alternativos de tratamento de erros quando return_error_details está definido como TRUE.
AI_NULL_IF_ERROR: retorna NULL se o campo
errordo valor fornecido não é NULL, caso contrário, retorna o campovalue. Esse é o mesmo comportamento de quandoreturn_error_detailsestá definido como FALSE.AI_THROW_IF_ERROR: gera um erro do campo
errordo objeto fornecido se ele não é NULL, caso contrário, retorna o campovalue. Esse é o mesmo comportamento que as funções de AI tinham antes dessa mudança de comportamento.
Exemplos¶
Os exemplos a seguir ilustram o novo comportamento de tratamento de erros. Esses exemplos usam AI_TRANSLATE, mas o comportamento é o mesmo para todas as funções afetadas.
Novo comportamento com e sem erro¶
A primeira amostra de código exibe a saída quando a função é bem-sucedida, e o segundo exemplo mostra a saída quando a função falha devido a um código de idioma inválido.
-- succeeds
SELECT AI_TRANSLATE(spanish_comment, 'es', 'en') as english_comment, "Este es un commentario" as spanish_comment;
Resultado:
+-------------------+------------------+
| ENGLISH_COMMENT | SPANISH_COMMENT |
|-------------------+------------------|
| This is a comment | Este es un |
| | comentario |
+-------------------+------------------+
-- fails
SELECT AI_TRANSLATE(spanish_comment, 'es', 'xx') as english_comment, "Este es un commentario" as spanish_comment;
Resultado
+-------------------+------------------+
| ENGLISH_COMMENT | SPANISH_COMMENT |
|-------------------+------------------|
| NULL | Este es un |
| | comentario |
+-------------------+------------------+
Novo comportamento com detalhes do erro¶
Como já foi mencionado, a primeira amostra de código é o caso de sucesso e a segunda é o caso de erro.
-- succeeds
SELECT AI_TRANSLATE(spanish_comment, 'es', 'en', TRUE) as result, "Este es un commentario" as spanish_comment;
Result:
+--------------------------------+------------------+
| RESULT | SPANISH_COMMENT |
|--------------------------------|------------------|
| { | Este es un |
| "value": "This is a comment",| comentario |
| "error": NULL | |
| } | |
+--------------------------------+------------------+
-- fails
SELECT AI_TRANSLATE(spanish_comment, 'es', 'xx', TRUE) as result, "Este es un commentario" as spanish_comment;
Resultado:
+--------------------------------+------------------+
| RESULT | SPANISH_COMMENT |
|--------------------------------|------------------|
| { | Este es un |
| "value": NULL, | comentario |
| "error": "Invalid language | |
| \"xx\" | |
+--------------------------------+------------------+
Consulta com várias linhas¶
Os exemplos a seguir mostram como usar o novo comportamento de tratamento de erros em uma consulta com várias linhas. Se ocorrer um erro ao processar uma linha, essa linha não será incluída no resultado. Os dados de exemplo são considerados uma tabela contendo comentários de usuários em vários idiomas, e a consulta tenta traduzir todos para o inglês usando AI_TRANSLATE.
SELECT
AI_TRANSLATE(comment, comment_language, 'en') as translation_result,
comment_language,
comment
FROM comments
WHERE translation_result IS NOT NULL;
O exemplo abaixo mostra como usar o parâmetro return_error_details para obter o mesmo resultado que o exemplo anterior.
SELECT
AI_TRANSLATE(comment, comment_language, 'en', TRUE) as translation_result,
comment_language,
comment
FROM comments
WHERE translation_result:value IS NOT NULL;
Ref: 2184