Categorias:

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

AI_COMPLETE (Cadeia de caracteres única)

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 prompt de texto usando um modelo de linguagem compatível.

Sintaxe

A função contém dois argumentos obrigatórios e quatro argumentos opcionais. A função pode ser usada com a sintaxe de argumentos posicionais ou nomeados.

Uso do AI_COMPLETE com uma única entrada de cadeia de caracteres

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

Argumentos

model

Uma cadeia de caracteres especificando o modelo a ser usado. Especifique 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

Os modelos suportados podem ter custos diferentes.

prompt

Um prompt de cadeia de caracteres

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.

    Padrão: FALSE

response_format

Um esquema JSON que a resposta deve seguir. Esse é um subobjeto SQL, não uma cadeia de caracteres. Se response_format não for especificado, a resposta será uma cadeia de caracteres que contém a resposta ou um objeto JSON serializado que contém a resposta e informações sobre ela.

Para obter mais informações, consulte Saídas estruturadas AI_COMPLETE.

show_details

Um sinalizador booliano que indica se você deve retornar um objeto JSON serializado contendo a resposta e as informações sobre ela.

Retornos

Quando o argumento show_details não é especificado ou é definido como FALSE e o argumento response_format não é especificado ou é definido como NULL, retorna uma cadeia de caracteres que contém a resposta.

Quando o argumento show_details não é especificado ou é definido como FALSE e o argumento response_format é especificado, retorna um objeto de acordo com o formato de resposta fornecido.

Quando o argumento show_details é definido como TRUE e o response_format não é especificado, retorna um objeto JSON que contém as seguintes chaves.

  • "choices": uma matriz de respostas do modelo. (Atualmente, apenas uma resposta é fornecida.) Cada resposta é um objeto que contém uma chave "messages" cujo valor é a resposta do modelo ao prompt mais recente.

  • "created": carimbo de data/hora UNIX (segundos desde meia-noite de 1 de janeiro de 1970) quando a resposta foi gerada.

  • "model": o nome do modelo que criou a resposta.

  • "usage": um objeto que registra o número de tokens consumidos e gerados por esta conclusão. Inclui as seguintes subchaves:

    • "completion_tokens": o número de tokens na resposta gerada.

    • "prompt_tokens": o número de tokens no prompt.

    • "total_tokens": o número total de tokens consumidos, que é a soma dos outros dois valores.

Quando o argumento show_details é definido como TRUE e o argumento response_format é especificado, retorna um objeto JSON que contém as seguintes chaves

  • "structured_output": um objeto json seguindo o formato de resposta especificado

  • "created": carimbo de data/hora UNIX (segundos desde meia-noite de 1 de janeiro de 1970) quando a resposta foi gerada.

  • "model": o nome do modelo que criou a resposta.

  • "usage": um objeto que registra o número de tokens consumidos e gerados por esta conclusão. Inclui as seguintes subchaves:

    • "completion_tokens": o número de tokens na resposta gerada.

    • "prompt_tokens": o número de tokens no prompt.

    • "total_tokens": o número total de tokens consumidos, que é a soma dos outros dois valores.

Exemplos

Resposta única

Para gerar uma resposta única:

SELECT AI_COMPLETE('snowflake-arctic', 'What are large language models?');
Copy

Respostas da coluna da tabela

O exemplo a seguir gera uma resposta para cada linha da tabela reviews, usando a coluna content como entrada. Cada resultado de consulta contém uma crítica da revisão correspondente.

SELECT AI_COMPLETE(
    'mistral-large',
        CONCAT('Critique this review in bullet points: <review>', content, '</review>')
) FROM reviews LIMIT 10;
Copy

Dica

Conforme mostrado neste exemplo, você pode usar marcação no prompt para controlar o tipo de resposta gerada. Consulte Um guia para solicitar LLaMA 2 para dicas.

Controle dos parâmetros do modelo

O exemplo a seguir especifica o endereço model_parameters usado para fornecer uma resposta.

SELECT AI_COMPLETE(
    model => 'llama2-70b-chat',
    prompt => 'how does a snowflake get its unique pattern?',
    model_parameters => {
        'temperature': 0.7,
        'max_tokens': 10
    }
);
Copy

A resposta é uma cadeia de caracteres que contém a mensagem do modelo de linguagem e outras informações. Observe que a resposta é truncada conforme instruído no argumento model_parameters.

"The unique pattern on a snowflake is"
Copy

Saída detalhada

O exemplo a seguir mostra como você pode usar o argumento show_details para retornar detalhes adicionais de inferência.

SELECT AI_COMPLETE(
    model => 'llama2-70b-chat',
    prompt => 'how does a snowflake get its unique pattern?',
    model_parameters => {
        'temperature': 0.7,
        'max_tokens': 10
    },
    show_details => true
);
Copy

A resposta é um objeto JSON com a mensagem do modelo e os detalhes relacionados. O argumento options foi usado para truncar a saída.

{
    "choices": [
        {
            "messages": " The unique pattern on a snowflake is"
        }
    ],
    "created": 1708536426,
    "model": "llama2-70b-chat",
    "usage": {
        "completion_tokens": 10,
        "prompt_tokens": 22,
        "guardrail_tokens": 0,
        "total_tokens": 32
    }
}
Copy

Especificação de um formato de resposta JSON

Este exemplo ilustra o uso do argumento response_format da função para retornar uma resposta estruturada

SELECT AI_COMPLETE(
    model => 'llama2-70b-chat',
    prompt => 'Extract structured data from this customer interaction note: Customer Sarah Jones complained about the mobile app crashing during checkout. She tried to purchase 3 items: a red XL jacket ($89.99), blue running shoes ($129.50), and a fitness tracker ($199.00). The app crashed after she entered her shipping address at 123 Main St, Portland OR, 97201. She has been a premium member since January 2024.',
    model_parameters => {
        'temperature': 0,
        'max_tokens': 4096
    },
    response_format => {
            'type':'json',
            'schema':{'type' : 'object','properties' : {'sentiment_categories':{'type':'array','items':{'type':'object','properties':
            {'food_quality' : {'type' : 'string'},'food_taste': {'type':'string'}, 'wait_time': {'type':'string'}, 'food_cost': {'type':'string'}},'required':['food_quality','food_taste' ,'wait_time','food_cost']}}}}
    }
);
Copy

A resposta é um objeto json que segue o formato de resposta estruturada.

Resposta:

{
    "sentiment_categories": [
        {
            "food_cost": "negative",
            "food_quality": "positive",
            "food_taste": "positive",
            "wait_time": "neutral"
        }
    ]
}

Especificação de um formato de resposta JSON com saída detalhada

Este exemplo ilustra o uso do argumento response_format da função para retornar uma resposta estruturada combinada com show_details para obter informações adicionais de inferência

SELECT AI_COMPLETE(
    model => 'llama2-70b-chat',
    prompt => 'Extract structured data from this customer interaction note: Customer Sarah Jones complained about the mobile app crashing during checkout. She tried to purchase 3 items: a red XL jacket ($89.99), blue running shoes ($129.50), and a fitness tracker ($199.00). The app crashed after she entered her shipping address at 123 Main St, Portland OR, 97201. She has been a premium member since January 2024.',
    model_parameters => {
        'temperature': 0,
        'max_tokens': 4096
    },
    response_format => {
            'type':'json',
            'schema':{'type' : 'object','properties' : {'sentiment_categories':{'type':'array','items':{'type':'object','properties':
            {'food_quality' : {'type' : 'string'},'food_taste': {'type':'string'}, 'wait_time': {'type':'string'}, 'food_cost': {'type':'string'}},'required':['food_quality','food_taste' ,'wait_time','food_cost']}}}}
    },
    show_details => true
);
Copy

A resposta é um objeto json que contém uma resposta estruturada com metadados de inferência adicionais.

{
    "created": 1738683744,
    "model": "mistral-large2",
    "structured_output": [
        {
            "raw_message": {
                "sentiment_categories": [
                    {
                        "food_cost": "negative",
                        "food_quality": "positive",
                        "food_taste": "positive",
                        "wait_time": "neutral"
                    }
                ]
            },
            "type": "json"
        }
    ],
    "usage": {
        "completion_tokens": 60,
        "prompt_tokens": 94,
        "total_tokens": 154
    }
}