Categorias:

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

TRY_COMPLETE (SNOWFLAKE.CORTEX)

Executa a mesma operação que a função COMPLETE, mas retorna NULL em vez de gerar um erro quando a operação não pode ser executada. Para condições de erro que retornam NULL, consulte Condições de erro.

Sintaxe

SNOWFLAKE.CORTEX.TRY_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

TRY_COMPLETE não retém nenhum estado de uma chamada para a próxima. Para usar a função TRY_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

Os exemplos a seguir usam a função TRY_COMPLETE em vários casos de uso.

Como gerar uma única resposta

Para gerar uma resposta única:

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

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.TRY_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,
        "total_tokens": 32
    }
}
Copy

Para exemplos adicionais, consulte a referência COMPLETE (SNOWFLAKE.CORTEX).