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. Esse deve ser um dos seguintes valores.

  • 'mistral-large'

  • 'mixtral-8x7b'

  • 'llama2-70b-chat'

  • 'mistral-7b'

  • 'gemma-7b'

Os modelos suportados podem ter custos e cotas 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. Apenas um prompt do sistema pode ser fornecido e, se estiver presente, deverá ser o primeiro da 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.

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

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

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, uma cadeia de caracteres.

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

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 como conceder 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, transmita todas as solicitações anteriores do usuário e modele as respostas na conversa como parte da matriz prompt_or_history. (Consulte Modelos para chat.) 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('mistral-large', '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-7b-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,
        "total_tokens": 32
    }
}
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