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> ] )
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-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_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

Uma das opções:

  • 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.

  • 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?');
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 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)),
);
Copy

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
);
Copy

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
  }
}
Copy

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
);
Copy

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
    }
}