- 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> ] )
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'
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 chaverole
e uma chavecontent
. O valorcontent
é 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 atemperature
. A diferença é quetop_p
restringe o conjunto de possíveis tokens gerados pelo modelo, enquantotemperature
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 argumentoprompt
é 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?');
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;
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
}
);
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
}
}
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;
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
}
}
Avisos legais¶
As funções do Snowflake Cortex LLM são baseadas em tecnologia de aprendizado de máquina, incluindo LLaMA 2 do Meta. O modelo básico LLaMA 2 é licenciado sob a LLaMA 2 Licença Comunitária e Copyright (c) Meta Platforms, Inc. Todos os direitos reservados. O uso de qualquer função LLM baseada no modelo LLama 2 está sujeito à Política de uso aceitável da Meta.
A tecnologia de aprendizado de máquina e os resultados fornecidos podem ser imprecisos, inadequados ou tendenciosos. As decisões baseadas em resultados de aprendizado de máquina, incluindo aquelas incorporadas em pipelines automáticos, devem ter supervisão humana e processos de revisão para garantir que o conteúdo gerado pelo modelo seja preciso.
As consultas de função de LLM serão tratadas como qualquer outra consulta SQL e podem ser consideradas metadados.
Para obter mais informações, consulte FAQ sobre confiança e segurança do Snowflake AI.