Categorias:

Funções de cadeia de caracteres e binários (Large Language Model)

AI_COMPLETE (objeto de prompt)

Nota

AI_COMPLETE é a versão atualizada do COMPLETE (SNOWFLAKE.CORTEX). Para obter a funcionalidade mais recente, use AI_COMPLETE.

Gera uma resposta (conclusão) para um objeto de prompt. O objeto de prompt faz referência a uma ou mais colunas que contêm dados de texto ou imagem.

Sintaxe

A função pode ser usada com a sintaxe de argumentos posicionais ou nomeados.

AI_COMPLETE(
    <model>, <prompt> [ , <model_parameters> ] )
Copy

Argumentos

model

Uma cadeia de caracteres especificando o modelo a ser usado. Para entradas somente de texto, você pode usar um dos seguintes modelos:

  • claude-4-opus

  • claude-4-sonnet

  • claude-3-7-sonnet

  • claude-3-5-sonnet

  • deepseek-r1

  • gemma-7b

  • jamba-1.5-mini

  • jamba-1.5-large

  • jamba-instruct

  • llama2-70b-chat

  • llama3-8b

  • llama3-70b

  • llama3.1-8b

  • llama3.1-70b

  • llama3.1-405b

  • llama3.2-1b

  • llama3.2-3b

  • llama3.3-70b

  • llama4-maverick

  • llama4-scout

  • mistral-large

  • mistral-large2

  • mistral-7b

  • mixtral-8x7b

  • openai-gpt4.1

  • openai-o4-mini

  • reka-core

  • reka-flash

  • snowflake-arctic

  • snowflake-llama-3.1-405b

  • snowflake-llama-3.3-70b

Para entradas de imagem, você pode usar um dos seguintes modelos:
  • claude-4-opus

  • claude-4-sonnet

  • claude-3-7-sonnet

  • claude-3-5-sonnet

  • llama-4-maverick

  • llama-4-scout

  • pixtral-large

Os modelos suportados podem ter custos diferentes.

prompt

Um objeto de prompt contendo texto e/ou imagens

model_parameters Um objeto contendo zero ou mais das seguintes opções que afetam os hiperparâmetros do modelo. Consulte Configurações do LLM.

  • temperature: um valor de 0 a 1 (inclusive) que controla a aleatoriedade da saída do modelo de linguagem. Uma temperatura mais alta (por exemplo, 0,7) resulta em uma saída mais diversificada e aleatória, enquanto uma temperatura mais baixa (como 0,2) torna a saída mais determinística e focada.

    Padrão: 0

  • top_p: um valor de 0 a 1 (inclusive) que controla a aleatoriedade e a diversidade do modelo de linguagem, geralmente usado como alternativa a temperature. A diferença é que top_p restringe o conjunto de possíveis tokens gerados pelo modelo, enquanto temperature influencia quais tokens são escolhidos em cada etapa.

    Padrão: 0

  • max_tokens: define o número máximo de tokens de saída na resposta. Valores pequenos podem resultar em respostas truncadas.

    Padrão: 4096 Valor máximo permitido: 8192

  • guardrails: filtra respostas potencialmente inseguras e prejudiciais de um modelo de linguagem usando o Cortex Guard. TRUE ou FALSE. O valor padrão é FALSE.

Exemplo

Como passar várias imagens como entrada

O exemplo a seguir compara duas imagens, passando ambas como entrada para a função AI_COMPLETE e perguntando se ambas são fotos de gatos:

SELECT AI_COMPLETE('claude-3-5-sonnet',
  PROMPT('Are both image {0} and image {1} pictures of cats?',
    TO_FILE('@myimages', 'sleepingcat.png'), TO_FILE('@myimages', 'jumpingcat.png')) AS image_classification
FROM image_table;
Copy

Processamento em lote de imagens de um diretório ou tabela

Para o processamento em lote de várias imagens, executando a mesma operação em cada uma, armazene os arquivos de imagem no mesmo estágio. Aplique a função AI_COMPLETE a cada linha da tabela.

Nota

O estágio deve ter uma tabela de diretório para recuperar os caminhos de seus arquivos.

Primeiro, crie a tabela recuperando os locais das imagens do diretório, convertendo-os em objetos FILE e armazenando os objetos FILE resultantes em uma coluna de uma tabela. Use SQL da seguinte forma:

CREATE TABLE image_table AS
    (SELECT TO_FILE('@myimages', RELATIVE_PATH) AS img FROM DIRECTORY(@myimages));
Copy

Em seguida, aplique a função AI_COMPLETE à coluna que contém os objetos FILE. O exemplo a seguir classifica cada imagem na tabela:

SELECT AI_COMPLETE('claude-3-5-sonnet',
    PROMPT('Classify the input image {0} in no more than 2 words. Respond in JSON', img_file)) AS image_classification
FROM image_table;
Copy

Resposta:

{ "classification": "Inflation Rates" }
{ "classification": "beverage refrigerator" }
{ "classification": "Space Needle" }
{ "classification": "Modern Kitchen" }
{ "classification": "Pie Chart" }
{ "classification": "Economic Graph" }
{ "classification": "Persian Cat" }
{ "classification": "Labrador Retriever" }
{ "classification": "Jedi Cat" }
{ "classification": "Sleeping cat" }
{ "classification": "Persian Cat" }
{ "classification": "Garden Costume" }
{ "classification": "Floral Fashion" }

Se você já tiver uma tabela com caminhos para as imagens, poderá usar a função TO_FILE para construir os objetos FILE dentro da consulta:

SELECT AI_COMPLETE('claude-3-5-sonnet',
    PROMPT('Classify the input image {0} in no more than 2 words. Respond in JSON',
        TO_FILE('@myimages', img_path)) AS image_classification
FROM image_table;
Copy

Você também pode recuperar as imagens a serem processadas diretamente do diretório de um estágio, como mostrado aqui:

SELECT AI_COMPLETE('claude-3-5-sonnet',
    PROMPT('Classify the input image {0} in no more than 2 words. Respond in JSON',
        TO_FILE('@myimages', RELATIVE_PATH))) as image_classification
FROM DIRECTORY(@myimages);
Copy

Fornecimento de imagens e prompts em uma tabela

Para executar uma operação diferente em cada imagem de uma tabela, forneça as imagens e seus prompts correspondentes em uma tabela. No exemplo a seguir, a tabela contém o caminho do estágio de cada imagem na coluna img_path e o prompt na coluna prompt.

AI_COMPLETE('claude-3-5-sonnet',
    PROMPT('Given the input image {0}, {1}. Respond in JSON',
        TO_FILE('@myimages', img_path), prompt) as image_result)
FROM image_table;
Copy

Notas de uso para o processamento de imagens

  • Para processar várias imagens, especifique um objeto de prompt na chamada de função que define um modelo de prompt e os arquivos de imagem associados. Você pode usar a função Função PROMPT para criar esse objeto. O modelo de prompt pode conter espaços reservados numerados ({0}, {1} etc.) que correspondem às imagens no objeto prompt.

  • Somente texto e imagens são suportados. Não há suporte para arquivos de vídeo e áudio.

  • Formatos de imagem suportados:

    • .jpg

    • .jpeg

    • .png

    • .gif

    • .webp

    • Os modelos pixtral e llama4 também oferecem suporte a .bmp.

  • O tamanho máximo da imagem é 10 MB para a maioria dos modelos e 3,75 MB para os modelos claude. Os modelos claude não oferecem suporte a imagens com resoluções acima de 8000x8000.

  • O estágio que contém as imagens deve ter a criptografia do lado do servidor ativada. Não há suporte para estágios criptografados no lado do cliente.

  • A função não é compatível com políticas de rede personalizadas.

  • Os nomes dos estágios não diferenciam maiúsculas de minúsculas; os caminhos diferenciam maiúsculas de minúsculas.