Funções de Large Language Model (LLM) (Snowflake Cortex)

Snowflake Cortex oferece acesso instantâneo a modelos de linguagem grandes (LLMs) líderes do setor, treinados por pesquisadores de empresas como Mistral, Reka, Meta e Google, incluindo Snowflake Arctic, um modelo de nível empresarial desenvolvido pela Snowflake.

Como esses LLMs são totalmente hospedados e gerenciados pelo Snowflake, usá-los não requer configuração. Seus dados permanecem no Snowflake, proporcionando o desempenho, a escalabilidade e a governança que você espera.

Funções disponíveis

Os recursos do Snowflake Cortex são fornecidos como funções SQL e também estão disponíveis em Python. As funções de LLM do Cortex podem ser agrupadas nas seguintes categorias:

Função COMPLETE

A função COMPLETE é uma função de propósito geral que pode executar uma ampla gama de tarefas específicas do usuário, como classificação de sentimentos baseada em aspectos, geração de dados sintéticos e resumos personalizados. Cortex Guard é um parâmetro de segurança disponível dentro da função COMPLETE, projetado para filtro possíveis respostas inseguras e prejudiciais de um modelo de linguagem. Você também pode usar esta função com seus modelos ajustados.

Funções específicas da tarefa

Funções específicas da tarefa são funções criadas e gerenciadas especificamente para isso, que automatizam tarefas de rotina, como resumos simples e traduções rápidas, que não exigem nenhuma personalização.

  • CLASSIFY_TEXT: dado um prompt, classifica-o em uma das classes que você define.

  • EXTRACT_ANSWER: dada uma pergunta e dados não estruturados, retorna a resposta à pergunta se ela puder ser encontrada nos dados.

  • PARSE_DOCUMENT: dado um estágio interno ou externo com documentos, retorna um objeto que contém uma cadeia de caracteres formatada em JSON com conteúdo de texto extraído usando o modo OCR ou o texto extraído e os elementos de layout usando o modo LAYOUT.

  • SENTIMENT: retorna uma pontuação de sentimento, de -1 a 1, representando o sentimento positivo ou negativo detectado de um determinado texto.

  • SUMMARIZE: retorna um resumo do texto fornecido.

  • TRANSLATE: traduz determinado texto de qualquer idioma suportado para qualquer outro.

  • EMBED_TEXT_768: Com um trecho de texto, retorna um incorporação de vetores de 768 dimensões representando esse texto.

  • EMBED_TEXT_1024: Com um trecho de texto, retorna uma incorporação de vetores de 1024 dimensões representando esse texto.

Funções auxiliares

Funções auxiliares são funções gerenciadas e criadas especificamente para reduzir casos de falhas ao executar outras funções de LLM, por exemplo, obtendo a contagem de tokens em um prompt de entrada para garantir que a chamada não exceda um limite do modelo.

  • COUNT_TOKENS: dado um texto de entrada, retorna a contagem de tokens com base no modelo ou na função Cortex especificada.

  • TRY_COMPLETE: funciona como a função COMPLETE, mas retorna NULL quando a função não pôde ser executada em vez de um código de erro.

Privilégios obrigatórios

A função de banco de dados CORTEX_USER no banco de dados SNOWFLAKE inclui os privilégios que permitem aos usuários chamar funções de LLM do Snowflake Cortex. Por padrão, a função CORTEX_USER é concedida à função PUBLIC. A função PUBLIC é concedida automaticamente a todos os usuários e funções, portanto, isto permite que todos os usuários em sua conta usem as funções de LLM do Snowflake Cortex.

Se não quiser que todos os usuários tenham esse privilégio, você pode revogar o acesso à função PUBLIC e conceder acesso a funções específicas.

Para revogar a função de banco de dados CORTEX_USER da função PUBLIC, execute os seguintes comandos usando a função ACCOUNTADMIN:

REVOKE DATABASE ROLE SNOWFLAKE.CORTEX_USER
  FROM ROLE PUBLIC;

REVOKE IMPORTED PRIVILEGES ON DATABASE SNOWFLAKE
  FROM ROLE PUBLIC;
Copy

Você poderá então fornecer acesso seletivamente a funções específicas. A função de banco de dados SNOWFLAKE.CORTEX_USER não pode ser concedida diretamente a um usuário. Para obter mais informações, consulte Como usar as funções de banco de dados SNOWFLAKE. Um usuário com a função ACCOUNTADMIN pode conceder esta função a uma função personalizada para permitir que os usuários acessem as funções de LLM do Cortex. No exemplo a seguir, use a função ACCOUNTADMIN e conceda ao usuário some_user a função de banco de dados CORTEX_USER por meio da função de conta cortex_user_role, que você cria para essa finalidade.

USE ROLE ACCOUNTADMIN;

CREATE ROLE cortex_user_role;
GRANT DATABASE ROLE SNOWFLAKE.CORTEX_USER TO ROLE cortex_user_role;

GRANT ROLE cortex_user_role TO USER some_user;
Copy

Você também pode conceder acesso às funções de LLM do Snowflake Cortex por meio de funções existentes comumente usadas por grupos específicos de usuários. (Consulte Funções do usuário.) Por exemplo, se você criou uma função analyst usada como função padrão pelos analistas da sua organização, poderá conceder facilmente a esses usuários acesso às funções de LLM do Snowflake Cortex com uma única instrução GRANT.

GRANT DATABASE ROLE SNOWFLAKE.CORTEX_USER TO ROLE analyst;
Copy

Disponibilidade

As funções de LLM do Snowflake Cortex estão atualmente disponíveis nas seguintes regiões. Para acessar LLMs de regiões não listadas, use o parâmetro de inferência entre regiões.

Nota

  • A função TRY_COMPLETE está disponível nas mesmas regiões que COMPLETE.

  • A função COUNT_TOKENS está disponível em todas as regiões, mas a inferência do modelo é específica da região, conforme a tabela.

Função
(Modelo)
AWS US West 2
(Oregon)
AWS US East 1
(N. Virginia)
AWS Europe Central 1
(Frankfurt)
AWS Europe West 1
(Ireland)
AWS AP Southeast 2
(Sidney)
AWS AP Northeast 1
(Tokyo)
Azure East US 2
(Virginia)
Azure West Europe
(Países Baixos)
COMPLETE
(llama3.2-1b)

COMPLETE
(llama3.2-3b)

COMPLETE
(llama3.1-8b)

COMPLETE
(llama3.1-70b)

COMPLETE
(llama3.1-405b)

COMPLETE
(snowflake-arctic)

COMPLETE
(reka-core)

COMPLETE
(reka-flash)

COMPLETE
(mistral-large2)

COMPLETE
(mixtral-8x7b)

COMPLETE
(mistral-7b)

COMPLETE
(jamba-instruct)

COMPLETE
(jamba-1.5-mini)

COMPLETE
(jamba-1.5-large)

COMPLETE
(gemma-7b)

EMBED_TEXT_768
(e5-base-v2)

EMBED_TEXT_768
(snowflake-arctic-embed-m)

EMBED_TEXT_1024
(nv-embed-qa-4)

EMBED_TEXT_1024
(multilingual-e5-large)

EMBED_TEXT_1024
(voyage-multilingual-2)

CLASSIFY_TEXT

EXTRACT_ANSWER

SENTIMENT

SUMMARIZE

TRANSLATE

As seguintes funções de LLM do Snowflake Cortex estão atualmente disponíveis nas seguintes regiões estendidas.

Função
(Modelo)
AWS US East 2
(Ohio)
AWS CA Central 1
(Central)
AWS SA East 1
(São Paulo)
AWS Europe West 2
(London)
AWS Europe Central 1
(Frankfurt)
AWS Europe North 1
(Stockholm)
AWS AP Northeast 1
(Tokyo)
AWS AP South 1
(Mumbai)
AWS AP Southeast 2
(Syndey)
AWS AP Southeast 3
(Jakarta)
Azure South Central US
(Texas)
Azure UK South
(London)
Azure North Europe
(Ireland)
Azure Switzerland North
(Zürich)
Azure Central India
(Pune)
Azure Japan East
(Tokyo, Saitama)
Azure Southeast Asia
(Singapore)
Azure Australia East
(New South Wales)
GCP Europe West 2
(London)
GCP Europe West 4
(Países Baixos)
GCP US Central 1
(Iowa)
GCP US East 4
(N. Virginia)
EMBED_TEXT_768
(snowflake-arctic-embed-m)

EMBED_TEXT_1024
(multilingual-e5-large)

A tabela a seguir lista modelos de legado. Se você estiver apenas começando, comece com os modelos das tabelas anteriores:

Legado
Função
(Modelo)
AWS US West 2
(Oregon)
AWS US East 1
(N. Virginia)
AWS Europe Central 1
(Frankfurt)
AWS Europe West 1
(Ireland)
AWS AP Southeast 2
(Sidney)
AWS AP Northeast 1
(Tokyo)
Azure East US 2
(Virginia)
Azure West Europe
(Países Baixos)
COMPLETE
(llama2-70b-chat)

COMPLETE
(llama3-8b)

COMPLETE
(llama3-70b)

COMPLETE
(mistral-large)

Considerações sobre custo

Nota

Espera-se que, em breve, haja um faturamento do PARSE_DOCUMENT que seja dimensionado de acordo com o número de páginas processadas.

As funções de LLM do Snowflake Cortex incorrem em custos de computação com base no número de tokens processados. Consulte a Tabela de consumo do serviço Snowflake para o custo de cada função em créditos por milhão de tokens.

Um token é a menor unidade de texto processada pelas funções de LLM do Snowflake Cortex, aproximadamente igual a quatro caracteres. A equivalência do texto bruto de entrada ou saída com tokens pode variar de acordo com o modelo.

  • Para funções que geram novo texto na resposta (COMPLETE, CLASSIFY_TEXT, SUMMARIZE e TRANSLATE), os tokens de entrada e de saída são contados.

  • Para CORTEX GUARD, somente os tokens de entrada são contados. O número de tokens de entrada é baseado no número de tokens de saída por modelo de LLM usado na função COMPLETE.

  • Para as funções EMBED_TEXT_*, apenas tokens de entrada são contados.

  • Para funções que extraem apenas informações da entrada (EXTRACT_ANSWER e SENTIMENT), apenas os tokens de entrada são contados.

  • Para EXTRACT_ANSWER, o número de tokens faturáveis é a soma do número de tokens nos campos from_text e question.

  • SUMMARIZE, TRANSLATE, EXTRACT_ANSWER, CLASSIFY_TEXT e SENTIMENT adicionam um prompt ao texto de entrada para gerar a resposta. Como resultado, a contagem de tokens de entrada é um pouco maior que o número de tokens no texto fornecido.

  • TRY_COMPLETE não incorre em custos para tratamento de erro. Isso significa que se a função TRY_COMPLETE retornar NULL, nenhum custo será incorrido.

  • COUNT_TOKENS incorre apenas em custo de computação para executar a função. Não há custos adicionais baseados em token.

A Snowflake recomenda executar consultas que chamam uma função de LLM do Snowflake Cortex ou a função PARSE_DOCUMENT do Cortex com um warehouse menor (não maior que MEDIUM) porque warehouses maiores não aumentam o desempenho. O custo associado à manutenção de um warehouse ativo continuará a ser aplicado ao executar uma consulta que chama uma função de LLM do Snowflake Cortex. Para obter informações gerais sobre custos de computação, consulte Compreensão do custo de computação.

Acompanhamento de custos para AI de serviços

Para rastrear créditos usados para serviços de AI, incluindo funções LLM em sua conta, utilize o Exibição METERING_HISTORY:

SELECT *
  FROM SNOWFLAKE.ACCOUNT_USAGE.METERING_DAILY_HISTORY
  WHERE SERVICE_TYPE='AI_SERVICES';
Copy

Acompanhamento do consumo de crédito para funções de LLM

Para visualizar o consumo de créditos e tokens para cada chamada de função LLM, use a função Exibição CORTEX_FUNCTIONS_USAGE_HISTORY.

SELECT *
  FROM SNOWFLAKE.ACCOUNT_USAGE.CORTEX_FUNCTIONS_USAGE_HISTORY;
Copy

Cotas de uso

Para garantir que todos os clientes Snowflake possam acessar as funcionalidades de LLM, as funções de LLM do Snowflake Cortex podem estar sujeitas a limitações durante períodos de alta utilização. As cotas de uso não são aplicadas ao nível da conta.

As solicitações limitadas receberão uma resposta de erro e devem ser tentadas novamente mais tarde.

Nota

As contas Snowflake sob demanda sem um método de pagamento válido (como contas de avaliação) são limitadas a aproximadamente um crédito por dia no uso da função de LLM do Snowflake Cortex. Para remover essa restrição, converta sua conta de avaliação em uma conta paga.

Gerenciamento de custos e limitação

Snowflake recomenda usar um tamanho de warehouse não maior que MEDIUM ao chamar funções de LLM do Snowflake Cortex. Utilizar um warehouse maior do que o necessário não aumenta o desempenho, mas pode resultar em custos desnecessários e num maior risco de limitação. Esta recomendação pode não se aplicar no futuro devido a atualizações futuras do produto.

Restrições de modelo

Os modelos usados pelo Snowflake Cortex têm limitações de tamanho conforme descrito na tabela abaixo. Os tamanhos são fornecidos em tokens. Os tokens geralmente representam cerca de quatro caracteres de texto, portanto, o número de palavras correspondentes a um limite é menor que o número de tokens. As entradas que excedem o limite resultam em erro.

Importante

Na região AWS AP Southeast 2 (Sydney), a janela de contexto dos modelos a seguir é de 4k:

  • llama3-8b e mistral-7b para a função COMPLETE.

  • Modelo gerenciado Snowflake a partir da função SUMMARIZE.

Na região AWS Ireland, a janela de contexto para llama3.1-8b é 16.384.

Função

Modelo

Janela de contexto (tokens)

COMPLETE

snowflake-arctic

4,096

mistral-large

32,000

mistral-large2

128,000

reka-flash

100,000

reka-core

32,000

jamba-instruct

256,000

jamba-1.5-mini

256,000

jamba-1.5-large

256,000

mixtral-8x7b

32,000

llama2-70b-chat

4,096

llama3-8b

8,000

llama3-70b

8,000

llama3.1-8b

128,000

llama3.1-70b

128,000

llama3.1-405b

128,000

llama3.2-1b

128,000

llama3.2-3b

128,000

mistral-7b

32,000

gemma-7b

8,000

EMBED_TEXT_768

e5-base-v2

512

snowflake-arctic-embed-m

512

EMBED_TEXT_1024

nv-embed-qa-4

512

multilingual-e5-large

512

voyage-multilingual-2

32,000

CLASSIFY_TEXT

Modelo gerenciado do Snowflake

128,000

EXTRACT_ANSWER

Modelo gerenciado do Snowflake

2,048 para texto
64 para pergunta

SENTIMENT

Modelo gerenciado do Snowflake

512

SUMMARIZE

Modelo gerenciado do Snowflake

32,000

TRANSLATE

Modelo gerenciado do Snowflake

1,024

Escolha de um modelo

A função COMPLETE do Snowflake Cortex oferece suporte a vários modelos de capacidade, latência e custo variados. Esses modelos foram cuidadosamente escolhidos para se alinharem aos casos de uso comuns dos clientes. Para obter o melhor desempenho por crédito, escolha um modelo que corresponda bem ao tamanho do conteúdo e à complexidade da sua tarefa. Aqui estão breves visões gerais dos modelos disponíveis.

Modelos grandes

Se não tiver certeza de por onde começar, experimente primeiro os modelos mais capazes para estabelecer uma linha de base para avaliar outros modelos. reka-core e mistral-large2 são os modelos mais capazes oferecidos pelo Snowflake Cortex e lhe darão uma boa ideia do que um modelo de última geração pode fazer.

  • reka-core é o modelo de linguagem grande mais avançado da Reka AI, com fortes habilidades de raciocínio, geração de código e fluência multilíngue.

  • mistral-large2 é o modelo de linguagem grande mais avançado da Mistral AI e conta com recursos de raciocínio de alto nível. Comparado ao mistral-large, ele é significativamente mais capaz na geração de código, matemática, raciocínio e oferece suporte multilíngue muito mais forte. É ideal para tarefas complexas que exigem grandes recursos de raciocínio ou são altamente especializadas, como geração de texto sintético, geração de código e análise de texto multilíngue.

  • llama3.1-405b é um modelo de código aberto da família de modelo llama3.1 da Meta com uma grande janela de contexto de 128K. Ele se destaca no processamento de documentos longos, suporte multilíngue, geração de dados sintéticos e destilação de modelos.

Modelos médios

  • llama3.1-70b é um modelo de código aberto que demonstra um desempenho de última geração, ideal para aplicativos de bate-papo, criação de conteúdo e aplicativos corporativos. É um modelo de alto desempenho e baixo custo que permite diversos casos de uso com uma janela de contexto de 128 mil. llama3-70b ainda é suportado e tem uma janela de contexto de 8 mil.

  • snowflake-arctic é o LLM focado em empresas de alto nível da Snowflake. O Arctic se destaca em tarefas empresariais como geração de SQL, codificação e instruções em conformidade com os parâmetros de comparação.

  • reka-flash é um modelo de linguagem multilíngue altamente capaz e otimizado para cargas de trabalho rápidas que exigem alta qualidade, como escrever descrições de produtos ou postagens em blog, codificar e extrair respostas de documentos com centenas de páginas.

  • mixtral-8x7b é ideal para geração de texto, classificação e resposta a perguntas. Os modelos da Mistral são otimizados para baixa latência com baixos requisitos de memória, o que se traduz em maior rendimento para casos de uso empresarial.

  • O modelo jamba-Instruct foi criado pela AI21 Labs para atender com eficiência aos requisitos empresariais. Ele é otimizado para oferecer uma janela de contexto de 256 mil tokens com baixo custo e latência, tornando-o ideal para tarefas como resumo, perguntas e respostas e extração de entidade em documentos longos e bases de conhecimento extensas.

  • A família de modelos AI21 Jamba 1.5 é uma instrução híbrida de última geração do SSM-Transformer, que segue modelos básicos. O jamba-1.5-mini e jamba-1.5-large com um comprimento de contexto de 256K oferecem suporte a casos de uso como saída estruturada (JSON) e geração aterrada.

Modelos pequenos

  • Os modelos llama3.2-1b e llama3.2-3b oferecem suporte ao comprimento de contexto de 128 mil tokens e são os mais avançados em sua classe para casos de uso como resumo, acompanhamento de instruções e tarefas de reescrita. Os modelos Llama 3.2 oferecem recursos multilíngues, com suporte para inglês, alemão, francês, italiano, português, hindi, espanhol e tailandês.

  • llama3.1-8b é ideal para tarefas que exigem raciocínio baixo a moderado. É um modelo leve e ultrarrápido com uma janela de contexto de 128K. llama3-8b e llama2-70b-chat ainda são modelos suportados que fornecem uma janela de contexto menor e precisão relativamente mais baixa.

  • mistral-7b é ideal para tarefas mais simples de resumo, estruturação e resposta a perguntas que precisam ser feitas rapidamente. Ele oferece processamento de baixa latência e alta taxa de transferência para várias páginas de texto com sua janela de contexto de 32K.

  • gemma-7b é adequado para tarefas simples de conclusão de código e texto. Ele tem uma janela de contexto de 8.000 tokens, mas é surpreendentemente capaz dentro desse limite e bastante econômico.

A tabela a seguir fornece informações sobre o desempenho dos modelos populares em vários parâmetros de comparação, incluindo os modelos oferecidos pelo Snowflake Cortex COMPLETE, bem como alguns outros modelos populares.

Modelo

Janela de contexto
(Tokens)
MMLU
(Raciocínio)
HumanEval
(Codificação)
GSM8K
(Raciocínio aritmético)
Spider 1.0
(SQL)

GPT 4.o *

128,000

88,7

90,2

96,4

-

llama3.1-405b

128,000

88,6

89

96,8

-

reka-core

32,000

83,2

76,8

92,2

-

llama3.1-70b

128,000

86

80,5

95,1

-

mistral-large2

128,000

84

92

93

-

mistral-large

32,000

81,2

45,1

81

81

reka-flash

100,000

75,9

72

81

-

llama3.1-8b

128,000

73

72,6

84,9

-

mixtral-8x7b

32,000

70,6

40,2

60,4

-

llama-2-70b-chat

4,096

68,9

30,5

57,5

-

jamba-instruct

256,000

68,2

40

59,9

-

jamba-1.5-mini

256,000

69,7

-

75,8

-

jamba-1.5-large

256,000

81,2

-

87

-

Snowflake Arctic

4,096

67,3

64,3

69,7

79

llama3.2-1b

128,000

49,3

-

44,4

-

llama3.2-3b

128,000

69,4

-

77,7

-

gemma-7b

8,000

64,3

32,3

46,4

-

mistral-7b

32,000

62,5

26,2

52,1

-

GPT 3.5 Turbo*

4,097

70

48,1

57,1

-

*Fornecido para comparação; não disponível no Snowflake Cortex COMPLETE.

Visão geral das funções de LLM

As funções de LLM do Cortex podem ser agrupadas nas seguintes categorias:

  • Função COMPLETE: função de uso geral que pode executar uma ampla gama de tarefas especificadas pelo usuário, como classificação de sentimentos baseada em aspectos, geração de dados sintéticos e resumos personalizados. Você também pode usar essa função com seus modelos com ajuste fino.

  • Funções específicas para tarefas: funções específicas e gerenciadas que automatizam as tarefas de rotina, como resumos simples e traduções rápidas, que não exigem nenhuma personalização.

  • Funções auxiliares: funções gerenciadas e criadas especificamente para reduzir casos de falhas ao executar outras funções de LLM, por exemplo, obtendo a contagem de tokens em um prompt de entrada para garantir que a chamada não exceda um limite do modelo.

COMPLETE

Dado um prompt, a função COMPLETE de instrução gera uma resposta usando o modelo de linguagem de sua escolha. No caso de uso mais simples, o prompt é uma única cadeia de caracteres. Você também pode fornecer uma conversa incluindo vários prompts e respostas para uso interativo no estilo de bate-papo e, nesta forma de função, você também pode especificar opções de hiperparâmetros para personalizar o estilo e o tamanho da saída. Para implementar proteções, você também pode ativar o parâmetro Cortex Guard, que filtra respostas potencialmente inseguras e prejudiciais de um LLM.

Para implementar proteções, você pode habilitar o parâmetro Cortex Guard que filtra respostas inseguras e prejudiciais de um LLM.

A função COMPLETE oferece suporte aos modelos a seguir. Diferentes modelos podem ter diferentes custos.

  • 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

Consulte COMPLETE (SNOWFLAKE.CORTEX) para sintaxe e exemplos.

Cortex Guard

O Cortex Guard é um parâmetro de segurança disponível na função COMPLETE projetado para filtrar possíveis respostas inseguras e prejudiciais de um modelo de linguagem. O Cortex Guard é atualmente construído com o Llama Guard 3 da Meta. O Cortex Guard funciona avaliando as respostas de um modelo de linguagem antes que a saída seja retornada ao aplicativo. Depois de ativar o Cortex Guard, as respostas do modelo de linguagem que podem estar associadas a crimes violentos, ódio, conteúdo sexual, automutilação e muito mais são filtradas automaticamente. Consulte a seção de argumentos COMPLETE (SNOWFLAKE.CORTEX) para ver a sintaxe e os exemplos.

Nota

O uso do Cortex Guard incorre em taxas de computação com base no número de tokens de entrada processados.

Funções específicas da tarefa

Com um texto de entrada, as funções específicas da tarefa executam a tarefa para a qual foram projetadas sem a necessidade de especificar um prompt. Funções específicas de tarefas executam de forma rápida e econômica tarefas de rotina que não exigem nenhuma personalização.

CLASSIFY_TEXT

A função CLASSIFY_TEXT classifica texto de forma livre em categorias fornecidas por você. O texto pode ser uma cadeia de caracteres em inglês simples.

Consulte CLASSIFY_TEXT (SNOWFLAKE.CORTEX) para sintaxe e exemplos.

EMBED_TEXT_768

A função EMBED_TEXT_768 cria uma incorporação vetorial de 768 dimensões para um determinado texto em inglês. Para saber mais sobre incorporações e funções de comparação de vetores, consulte Incorporações de vetor.

Consulte EMBED_TEXT_768 (SNOWFLAKE.CORTEX) para sintaxe e exemplos.

EMBED_TEXT_1024

A função EMBED_TEXT_1024 cria uma incorporação vetorial de 1024 dimensões para um determinado texto. Para saber mais sobre incorporações e funções de comparação de vetores, consulte Incorporações de vetor.

Consulte EMBED_TEXT_1024 (SNOWFLAKE.CORTEX) para sintaxe e exemplos.

EXTRACT_ANSWER

A função EXTRACT_ANSWER extrai uma resposta a uma determinada pergunta de um documento de texto. O documento pode ser um documento em inglês simples ou uma representação da cadeia de caracteres de um objeto de dados semiestruturados (JSON).

Consulte EXTRACT_ANSWER (SNOWFLAKE.CORTEX) para sintaxe e exemplos.

PARSE_DOCUMENT

A função PARSE_DOCUMENT extrai texto ou layout de documentos armazenados em um estágio interno ou estágio externo.

Consulte PARSE_DOCUMENT (SNOWFLAKE.CORTEX) para sintaxe e exemplos.

SENTIMENT

A função SENTIMENT retorna o sentimento como uma pontuação entre -1 e 1 (com -1 sendo o mais negativo e 1 o mais positivo, com valores em torno de 0 neutros) para o texto de entrada em inglês fornecido.

Consulte SENTIMENT (SNOWFLAKE.CORTEX) para sintaxe e exemplos.

SUMMARIZE

A função SUMMARIZE retorna um resumo do texto em inglês fornecido.

Consulte SUMMARIZE (SNOWFLAKE.CORTEX) para sintaxe e exemplos.

TRANSLATE

A função TRANSLATE traduz texto do idioma de origem indicado ou detectado para um idioma de destino.

Consulte TRANSLATE (SNOWFLAKE.CORTEX) para sintaxe e exemplos.

Funções auxiliares

Funções auxiliares são funções gerenciadas criadas para ajudar a reduzir erros ao executar outras funções de LLM do Cortex.

COUNT_TOKENS

A função COUNT_TOKENS calcula o número de tokens em um prompt para o modelo de linguagem grande especificado em COMPLETE e o texto de entrada para funções específicas da tarefa.

Consulte COUNT_TOKENS (SNOWFLAKE.CORTEX) para sintaxe e exemplos.

TRY_COMPLETE

A função TRY_COMPLETE 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.

Consulte TRY_COMPLETE (SNOWFLAKE.CORTEX) para sintaxe e exemplos.

Condições de erro

As funções de LLM do Snowflake Cortex podem produzir as seguintes mensagens de erro.

Mensagem

Explicação

too many requests

A solicitação foi rejeitada devido à carga excessiva do sistema. Tente sua solicitação novamente.

invalid options object

O objeto options passado para a função contém opções ou valores inválidos.

budget exceeded

O orçamento de consumo do modelo foi excedido.

unknown model "<nome do modelo>"

O modelo especificado não existe.

invalid language "<idioma>"

O idioma especificado não é compatível com a função TRANSLATE.

max tokens of <contagem> exceeded

A solicitação excedeu o número máximo de tokens suportados pelo modelo (consulte Restrições de modelo).

all requests were throttled by remote service

A solicitação foi limitada devido ao alto nível de utilização. Tente novamente mais tarde.

invalid number of categories: <num_categories>

O número especificado de categorias está acima do limite para CLASSIFY_TEXT

invalid category input type

O tipo de categoria especificado não é suportado por CLASSIFY_TEXT.

empty classification input

A entrada para CLASSIFY_TEXT é uma cadeia de caracteres vazia ou nulo.

Uso das funções de LLM do Snowflake Cortex com Python

As funções de LLM do Snowflake Cortex estão disponíveis no Snowpark ML versão 1.1.2 e posterior. Consulte Como usar o Snowflake ML localmente para obter instruções sobre como configurar o Snowpark ML.

Se você executar seu script Python fora do Snowflake, deverá criar uma sessão do Snowpark para usar essas funções. Consulte Conexão ao Snowflake para obter instruções.

O exemplo Python a seguir ilustra a chamada de funções de LLM do Snowflake Cortex em valores únicos:

from snowflake.cortex import Complete, ExtractAnswer, Sentiment, Summarize, Translate, ClassifyText

text = """
    The Snowflake company was co-founded by Thierry Cruanes, Marcin Zukowski,
    and Benoit Dageville in 2012 and is headquartered in Bozeman, Montana.
"""

print(Complete("llama2-70b-chat", "how do snowflakes get their unique patterns?"))
print(ExtractAnswer(text, "When was snowflake founded?"))
print(Sentiment("I really enjoyed this restaurant. Fantastic service!"))
print(Summarize(text))
print(Translate(text, "en", "fr"))
print(ClassifyText("France", ["Europe", "Asia"]))
Copy

Você também pode chamar uma função de LLM em uma coluna da tabela, conforme mostrado abaixo. Este exemplo requer um objeto de sessão (armazenado em session) e uma tabela articles contendo uma coluna de texto abstract_text e cria uma nova coluna abstract_summary contendo um resumo do abstract.

from snowflake.cortex import Summarize
from snowflake.snowpark.functions import col

article_df = session.table("articles")
article_df = article_df.withColumn(
    "abstract_summary",
    Summarize(col("abstract_text"))
)
article_df.collect()
Copy

Nota

O formato de bate-papo avançado (várias mensagens) de COMPLETE não é atualmente compatível com Python.

Uso das funções de LLM do Snowflake Cortex com Snowflake CLI

As funções de LLM do Snowflake Cortex estão disponíveis na Snowflake CLI versão 2.4.0 e posteriores. Consulte Apresentação do Snowflake CLI para obter mais informações sobre o uso de Snowflake CLI.

Os exemplos a seguir ilustram o uso dos comandos snow cortex em valores únicos. O parâmetro -c especifica qual conexão usar.

Nota

O formato de bate-papo avançado (multimensagens) de COMPLETE não é suportado atualmente em Snowflake CLI.

snow cortex complete "Is 5 more than 4? Please answer using one word without a period." -c "snowhouse"
Copy
snow cortex extract-answer "what is snowflake?" "snowflake is a company" -c "snowhouse"
Copy
snow cortex sentiment "Mary had a little Lamb" -c "snowhouse"
Copy
snow cortex summarize "John has a car. John's car is blue. John's car is old and John is thinking about buying a new car. There are a lot of cars to choose from and John cannot sleep because it's an important decision for John."
Copy
snow cortex translate herb --to pl
Copy

Você também pode usar arquivos que contenham o texto que deseja usar para os comandos. Para este exemplo, suponha que o arquivo about_cortex.txt tenha o seguinte conteúdo:

Snowflake Cortex gives you instant access to industry-leading large language models (LLMs) trained by researchers at companies like Mistral, Reka, Meta, and Google, including Snowflake Arctic, an open enterprise-grade model developed by Snowflake.

Since these LLMs are fully hosted and managed by Snowflake, using them requires no setup. Your data stays within Snowflake, giving you the performance, scalability, and governance you expect.

Snowflake Cortex features are provided as SQL functions and are also available in Python. The available functions are summarized below.

COMPLETE: Given a prompt, returns a response that completes the prompt. This function accepts either a single prompt or a conversation with multiple prompts and responses.
EMBED_TEXT_768: Given a piece of text, returns a vector embedding that represents that text.
EXTRACT_ANSWER: Given a question and unstructured data, returns the answer to the question if it can be found in the data.
SENTIMENT: Returns a sentiment score, from -1 to 1, representing the detected positive or negative sentiment of the given text.
SUMMARIZE: Returns a summary of the given text.
TRANSLATE: Translates given text from any supported language to any other.

Você pode então executar o comando snow cortex summarize passando o nome do arquivo usando o parâmetro --file, conforme mostrado:

snow cortex summarize --file about_cortex.txt
Copy
Snowflake Cortex offers instant access to industry-leading language models, including Snowflake Arctic, with SQL functions for completing prompts (COMPLETE), text embedding (EMBED\_TEXT\_768), extracting answers (EXTRACT\_ANSWER), sentiment analysis (SENTIMENT), summarizing text (SUMMARIZE), and translating text (TRANSLATE).

Para obter mais informações sobre esses comandos, consulte snow cortex commands.