- Categorias:
- Funções de cadeia de caracteres e binários (funções de AI) 
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> ] )
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-gpt-4.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_prestringe o conjunto de possíveis tokens gerados pelo modelo, enquanto- temperatureinfluencia 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
- Uma das opções: - Um esquema JSON que a resposta deve seguir. Esse é um subobjeto SQL, não uma cadeia de caracteres. Se - response_formatnã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.
- Uma definição de um tipo SQL, começando com a palavra-chave TYPE. Esse tipo deve usar um OBJECT como seu tipo de contêiner de nível superior, e os campos desse OBJECT são mapeados para os campos e valores JSON correspondentes. 
 - Para obter mais informações, consulte Saídas estruturadas de 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?');
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;
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
    }
);
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"
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
);
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
    }
}
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 fornecendo um literal de tipo.
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 OBJECT(note OBJECT(items_count NUMBER, price ARRAY(STRING), address STRING, member_date STRING)),
);
A resposta é um objeto json que segue o formato de resposta estruturada.
Resposta:
{
    "note": {
        "address": "123 Main St, Portland OR, 97201",
        "items_count": 3,
        "member_date": "January 2024",
        "price": [
        "$89.99",
        "$129.50",
        "$199.00"
        ]
    }
}
Especificação de um formato de resposta JSON com detalhes, usando um literal de tipo¶
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 de inferência adicionais, usando um literal de tipo.
SELECT AI_COMPLETE(
    model => 'llama3.3-70b',
    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.',
    response_format => TYPE OBJECT(note OBJECT(items_count NUMBER, price ARRAY(STRING), address STRING, member_date STRING)),
    show_details => TRUE
);
A resposta é um objeto JSON contendo uma resposta estruturada com metadados de inferência adicionais.
{
  "created": 1758755328,
  "model": "llama3.3-70b",
  "structured_output": [
    {
      "raw_message": {
        "note": {
          "items_count": 3,
          "price": [
            "$89.99",
            "$129.50",
            "$199.00"
          ]
        }
      },
      "type": "json"
    }
  ],
  "usage": {
    "completion_tokens": 49,
    "prompt_tokens": 100,
    "total_tokens": 149
  }
}
Especificação de um formato de resposta JSON com detalhes, usando um esquema JSON¶
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 de inferência adicionais, usando um esquema JSON.
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' : {'note':{'type':'object','properties':
            {'items_count' : {'type' : 'number'},'price': {'type':'array','items':{'type':'string'}}, 'address': {'type':'string'}, 'member_date': {'type':'string'}},'required':['items_count','price' ,'address', 'member_date']}}}
    },
    show_details => true
);
A resposta é um objeto json contendo uma resposta estruturada com metadados de inferência adicionais.
{
    "created": 1758057115,
    "model": "mistral-large2",
    "structured_output": [
        {
        "raw_message": {
            "note": {
            "address": "123 Main St, Portland OR, 97201",
            "items_count": 3,
            "member_date": "January 2024",
            "price": [
                "$89.99",
                "$129.50",
                "$199.00"
            ]
            }
        },
        "type": "json"
        }
    ],
    "usage": {
        "completion_tokens": 76,
        "prompt_tokens": 100,
        "total_tokens": 176
    }
}