Categorias:

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

COMPLETE (SNOWFLAKE.CORTEX)

Dado um prompt, gera uma resposta (conclusão) usando sua escolha de modelo de idioma compatível.

Sintaxe

SNOWFLAKE.CORTEX.COMPLETE(
    <model>, <prompt_or_history> [ , <options> ] )
Copy

Argumentos

Obrigatório:

model

Uma cadeia de caracteres especificando o modelo a ser usado. Especifique um dos seguintes valores:

  • 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

  • mistral-large

  • mistral-large2

  • mistral-7b

  • mixtral-8x7b

  • reka-core

  • reka-flash

  • snowflake-arctic

Os modelos suportados podem ter custos diferentes.

prompt_or_history

O histórico de prompt ou conversa a ser usado para gerar uma conclusão.

Se options não estiver presente, o prompt fornecido deverá ser uma cadeia de caracteres.

Se options estiver presente, o argumento deverá ser uma matriz de objetos representando uma conversa em ordem cronológica. Cada objeto deve conter uma chave role e uma chave content. O valor content é um prompt ou uma resposta, dependendo da função. A função deve ser uma das seguintes opções.

Valor role

Valor content

'system'

Um prompt inicial em inglês simples para o modelo de linguagem para fornecer informações básicas e instruções para um estilo de resposta. Por exemplo, “Responda como um pirata”. O modelo não gera uma resposta a um prompt do sistema. Somente um prompt do sistema pode ser fornecido e, se estiver presente, deve ser o primeiro na matriz.

'user'

Um prompt fornecido pelo usuário. Deve seguir o prompt do sistema (se houver) ou uma resposta do assistente.

'assistant'

Uma resposta fornecida anteriormente pelo modelo de linguagem. Deve seguir um prompt do usuário. As respostas anteriores podem ser usadas para fornecer uma experiência de conversação com estado; consulte Notas de uso.

Opcional:

options

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

  • guardrails: Filtra respostas potencialmente inseguras e prejudiciais de um modelo de linguagem. Verdadeiro ou falso.

    Padrão: falso

A especificação do argumento options, mesmo que seja um objeto vazio ({}), afeta a forma como o argumento prompt é interpretado e como a resposta é formatada.

Retornos

Quando o argumento options não é especificado, retorna uma cadeia de caracteres.

Quando o argumento options é fornecido, retorna uma representação de uma cadeia de caracteres de um objeto JSON com 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.

Requisitos de controle de acesso

Os usuários devem usar uma função que tenha a função do banco de dados SNOWFLAKE.CORTEX_USER. Consulte Privilégios obrigatórios para obter mais informações sobre esse privilégio.

Notas de uso

COMPLETE não retém nenhum estado de uma chamada para a próxima. Para usar a função COMPLETE para fornecer uma experiência de conversação com estado, passe todos os prompts de usuário e respostas de modelo anteriores na conversa como parte da matriz prompt_or_history (consulte Templates para modelos de bate-papo). Tenha em mente que o número de tokens processados aumenta a cada “rodada” e os custos aumentam proporcionalmente.

Exemplos

Resposta única

Para gerar uma resposta única:

SELECT SNOWFLAKE.CORTEX.COMPLETE('snowflake-arctic', 'What are large language models?');
Copy

Respostas da coluna da tabela

O exemplo a seguir gera uma resposta de cada linha de uma tabela (neste exemplo, content é uma coluna da tabela reviews). A tabela reviews contém uma coluna chamada review_content contendo o texto das avaliações enviadas pelos usuários. A consulta retorna uma crítica de cada revisão.

SELECT SNOWFLAKE.CORTEX.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 de temperatura e tokens

Este exemplo ilustra o uso do argumento options da função para controlar os hiperparâmetros de inferência em uma única resposta. Observe que nesta forma da função, o prompt deve ser fornecido como uma matriz, pois este formulário suporta vários prompts e respostas.

SELECT SNOWFLAKE.CORTEX.COMPLETE(
    'llama2-70b-chat',
    [
        {
            'role': 'user',
            'content': 'how does a snowflake get its unique pattern?'
        }
    ],
    {
        'temperature': 0.7,
        'max_tokens': 10
    }
);
Copy

A resposta é um objeto JSON contendo a mensagem do modelo de linguagem e outras informações. Observe que a resposta é truncada conforme instruído no argumento options.

{
    "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

Controle de segurança

Este exemplo ilustra o uso do argumento guardrails do Cortex Guard para filtrar respostas inseguras e prejudiciais de um modelo de linguagem.

SELECT SNOWFLAKE.CORTEX.COMPLETE(
    'mistral-7b',
    [
        {
            'role': 'user',
            'content': <'Prompt that generates an unsafe response'>
        }
    ],
    {
        'guardrails': true
    }
);
Copy

A resposta é um objeto JSON, por exemplo:

{
    "choices": [
        {
            "messages": "Response filtered by Cortex Guard"
        }
    ],
    "created": 1718882934,
    "model": "mistral-7b",
    "usage": {
        "completion_tokens": 402,
        "prompt_tokens": 93,
        "guardrails _tokens": 677,
        "total_tokens": 1172
    }
}
Copy

Exemplo: fornecimento de um prompt do sistema

Este exemplo ilustra o uso de um prompt do sistema para fornecer uma análise de sentimento de resenhas de filmes. O argumento prompt aqui é uma matriz de objetos, cada um com um valor role apropriado.

SELECT SNOWFLAKE.CORTEX.COMPLETE(
    'llama2-70b-chat',
    [
        {'role': 'system', 'content': 'You are a helpful AI assistant. Analyze the movie review text and determine the overall sentiment. Answer with just \"Positive\", \"Negative\", or \"Neutral\"' },
        {'role': 'user', 'content': 'this was really good'}
    ], {}
    ) as response;
Copy

A resposta é um objeto JSON que contém a resposta do modelo de linguagem e outras informações.

{
    "choices": [
        {
        "messages": " Positive"
        }
    ],
    "created": 1708479449,
    "model": "llama2-70b-chat",
    "usage": {
        "completion_tokens": 3,
        "prompt_tokens": 64,
        "total_tokens": 67
    }
}
Copy