Cortex REST API¶
A Cortex REST API oferece acesso a modelos de ponta da Anthropic, OpenAI, Meta, Mistral e outras empresas por meio do SDK ou ponto de extremidade preferido. Toda a inferência é executada dentro do perímetro do Snowflake, para que seus dados permaneçam seguros e dentro do seu limite de governança. Consulte abaixo como começar.
Escolher sua API¶
A Cortex REST API é compatível com duas especificações de API padrão do setor. Escolha a opção que melhor se adapta à sua pilha:
Chat Completions API |
API de mensagens |
|
|---|---|---|
Compatibilidade |
||
Ponto de extremidade |
|
|
Modelos compatíveis |
Todos os modelos (OpenAI, Claude, Llama, Mistral, DeepSeek, Snowflake) |
Somente modelos Claude |
Suporte para SDK |
SDKs Python e JavaScript da OpenAI |
SDK Python da Anthropic |
Melhor para |
Maioria dos casos de uso; flexibilidade multimodelo |
Integrações existentes com o Anthropic; paridade com a Anthropic API |
Ambas as APIs compartilham a mesma autenticação, catálogo de modelos e limites de taxa. A única diferença é o formato de solicitação/resposta e com quais modelos cada ponto de extremidade é compatível. Para obter preços, consulte a tabela de consumo de serviços do Snowflake.
Guia de início rápido¶
Pré-requisitos¶
Antes de começar, você precisa de:
URL da sua conta Snowflake (por exemplo,
https://<account-identifier>.snowflakecomputing.com).Um token de acesso programático (programmatic access token, PAT) do Snowflake para autenticação. Consulte Geração de um token de acesso programático.
Um nome de modelo para usar nas solicitações. Consulte Disponibilidade do modelo para obter os modelos disponíveis.
Guia rápido da Chat Completions¶
A Chat Completions API segue a especificação da OpenAI. Você pode usar diretamente o SDK da OpenAI.
Nos exemplos anteriores, substitua o seguinte:
<account-identifier>: seu identificador de conta Snowflake.<SNOWFLAKE_PAT>: um token de acesso programático (programmatic access token, PAT) do Snowflake.model: o nome do modelo. Consulte Disponibilidade do modelo para obter os modelos compatíveis.
Guia rápido da Messages API¶
A Messages API segue a especificação da Anthropic e é compatível apenas com modelos Claude.
O SDK da Anthropic envia credenciais via x-api-key por padrão, mas o Snowflake espera um token Bearer. Use um cliente httpx para definir o cabeçalho de autorização correto.
Assim como no Python, substitua o cabeçalho de autenticação padrão por um token Bearer via defaultHeaders.
Nos exemplos anteriores, substitua o seguinte:
<account-identifier>: seu identificador de conta Snowflake.<SNOWFLAKE_PAT>: um token de acesso programático (programmatic access token, PAT) do Snowflake.model: o nome do modelo Claude. Consulte Disponibilidade do modelo para obter os modelos compatíveis.
Configuração da autenticação¶
Para se autenticar na Cortex REST API, você pode usar os métodos descritos em Autenticando o Snowflake REST APIs com Snowflake.
Defina o cabeçalho Authorization para incluir seu token (por exemplo, um token da web JSON [JWT], um token OAuth ou um token de acesso programático).
Dica
Considere criar um usuário dedicado para solicitações da Cortex REST API.
Disponibilidade do modelo¶
As tabelas a seguir mostram os modelos disponíveis na Cortex REST API para cada região:
Modelo
|
Entre nuvens
(Qualquer região)
|
AWS Global
(Entre regiões)
|
AWS US
(Entre regiões)
|
AWS EU
(Entre regiões)
|
AWS APJ
(Entre regiões)
|
Azure Global
(Entre regiões)
|
Azure US
(Entre regiões)
|
Azure EU
(Entre regiões)
|
|---|---|---|---|---|---|---|---|---|
|
✔ |
✔ |
✔ |
✔ |
||||
|
✔ |
✔ |
||||||
|
✔ |
✔ |
✔ |
✔ |
||||
|
✔ |
✔ |
||||||
|
✔ |
✔ |
✔ |
|||||
|
✔ |
✔ |
✔ |
✔ |
||||
|
✔ |
✔ |
||||||
|
✔ |
✔ |
||||||
|
✔ |
✔ |
||||||
|
✔ |
✔ |
||||||
|
* |
* |
* |
* |
||||
|
* |
* |
||||||
|
* |
* |
||||||
|
✔ |
|||||||
|
* |
|||||||
|
✔ |
✔ |
||||||
|
✔ |
✔ |
||||||
|
✔ |
✔ |
||||||
|
✔ |
✔ |
||||||
|
✔ |
✔ |
||||||
|
✔ |
✔ |
||||||
|
✔ |
✔ |
||||||
|
✔ |
✔ |
||||||
|
✔ |
✔ |
Modelo
|
AWS US West 2
(Oregon)
|
AWS US East 1
(N. Virginia)
|
Azure East US 2
(Virginia)
|
|---|---|---|---|
|
✔ |
✔ |
|
|
✔ |
||
|
✔ |
✔ |
✔ |
|
✔ |
✔ |
✔ |
|
✔ |
✔ |
✔ |
|
✔ |
||
|
✔ |
✔ |
✔ |
|
✔ |
✔ |
✔ |
|
✔ |
✔ |
✔ |
|
✔ |
Modelo
|
AWS Europe Central 1
(Frankfurt)
|
AWS Europe West 1
(Ireland)
|
Azure West Europe
(Países Baixos)
|
|---|---|---|---|
|
✔ |
✔ |
|
|
✔ |
✔ |
✔ |
|
✔ |
✔ |
|
|
✔ |
✔ |
|
|
✔ |
✔ |
✔ |
Modelo
|
AWS AP Southeast 2
(Sidney)
|
AWS AP Northeast 1
(Tokyo)
|
|---|---|---|
|
✔ |
✔ |
|
✔ |
✔ |
|
✔ |
|
|
✔ |
|
|
✔ |
✔ |
* Indica uma função ou um modelo da versão preliminar. Os recursos em versão preliminar não são adequados para cargas de trabalho de produção.
Você também pode usar qualquer modelo com ajuste fino em qualquer região compatível.
Recursos¶
Streaming¶
Ambas as APIs são compatíveis com streaming de respostas usando eventos enviados pelo servidor.
Streaming da Chat Completions¶
Streaming de API de mensagens¶
Chamada de ferramentas¶
A chamada de ferramentas permite que o modelo invoque funções externas durante uma conversa. O fluxo funciona em etapas:
Você envia uma solicitação com uma lista de ferramentas disponíveis.
O modelo decide chamar uma ou mais ferramentas e retorna o nome da ferramenta e os argumentos.
Você executa a ferramenta.
Você envia o resultado da ferramenta de volta e o modelo gera uma resposta final.
A chamada de ferramenta é compatível com modelos do OpenAI e do Claude.
Chamada da ferramenta Chat Completions¶
Etapa 1 – Enviar a solicitação com ferramentas:
O modelo responde com uma matriz``tool_calls``:
Etapa 2 – Executar a ferramenta e enviar o resultado de volta:
Chamada da ferramenta Messages API¶
Etapa 1 – Enviar a solicitação com ferramentas:
O modelo responde com um bloco de conteúdo tool_use:
Etapa 2 – Executar a ferramenta e enviar o resultado de volta:
Saída estruturada¶
Você pode solicitar uma saída JSON estruturada que esteja em conformidade com um esquema específico. Isso é compatível com os modelos OpenAI e Claude por meio da Chat Completions API. Para o Messages API, use o padrão tool_use para impor a saída estruturada.
Saída estruturada da Chat Completions¶
Use o campo response_format com um esquema JSON para restringir a saída do modelo.
Nota
Os modelos Claude são compatíveis apenas com json_schema como tipo de formato de resposta. Os modelos OpenAI são compatíveis com tipos de formato de resposta adicionais, conforme documentado na referência da OpenAI API.
Saída estruturada da Messages API¶
A Messages API não têm um campo response_format. Em vez disso, defina uma ferramenta com o esquema de saída desejado e instrua o modelo a usá-la. A resposta tool_use do modelo conterá JSON estruturado correspondente ao seu esquema.
Entrada de imagem¶
Você pode incluir imagens em suas solicitações para modelos que são compatíveis com visão. As imagens devem ser fornecidas como cadeias de caracteres codificadas em base64. As imagens são limitadas a 20 por conversação com um de tamanho máximo de solicitação de 20 MiB.
A entrada de imagem é compatível com:
Modelos Claude (
claude-3-7-sonnete mais recentes)Modelos OpenAI (
openai-gpt-4.1,openai-gpt-5,openai-gpt-5-chat,openai-gpt-5-mini,openai-gpt-5-nano)
Entrada de imagens da Chat Completions¶
Entrada de imagens da Messages API¶
O Messages API utiliza um formato de imagem diferente: um bloco source com campos type, media_type e data em vez do URL de dados.
Cache de prompts¶
O cache de prompts permite reutilizar o contexto processado anteriormente (como prompts extensos do sistema, documentos ou histórico de conversas) entre solicitações, reduzindo a latência e o custo.
Modelos OpenAI: o cache é implícito. Prompts com mais de 1.024 tokens são armazenados em cache automaticamente; nenhuma alteração na solicitação é necessária.
Modelos Claude: o cache é explícito. Adicione pontos de interrupção
cache_controlaos blocos de conteúdo que você deseja armazenar em cache. Somente o tipo de cacheephemeralé compatível, com um TTL de 5 minutos. No máximo 4 pontos de interrupção de cache por solicitação.
Cache de prompts da Chat Completions¶
Para modelos Claude via Chat Completions, adicione cache_control aos blocos de conteúdo. Os modelos OpenAI são armazenados em cache automaticamente e não exigem este campo.
Cache de prompts da Messages API¶
Use cache_control em blocos de conteúdo do sistema ou do usuário. Somente o tipo de cache ephemeral é compatível, com um TTL de 5 minutos. No máximo 4 pontos de interrupção de cache podem ser definidos por solicitação.
Nota
O cache de prompts da Anthropic tem um TTL de 5 minutos. O conteúdo em cache não acessado em 5 minutos é removido. O cache de prompts da OpenAI é implícito e gerenciado automaticamente; nenhum campo cache_control é necessário.
Raciocínio¶
Raciocínio da Chat Completions¶
Para modelos Claude, use o objeto reasoning. Para modelos de raciocínio OpenAI, use o campo reasoning_effort (valores: minimal, low, medium, high).
Raciocínio da Messages API¶
Alguns modelos Claude são compatíveis com pensamento adaptativo, em que o modelo ajusta a quantidade de raciocínio que aplica com base na complexidade da tarefa. Os modelos a seguir são compatíveis com o pensamento adaptativo:
claude-opus-4-6
Para a Messages API, use o parâmetro thinking com type: "adaptive" para habilitar o raciocínio adaptativo. O parâmetro output_config.effort fornece um controle de alto nível sobre a profundidade do raciocínio e aceita os seguintes valores:
Nível de esforço |
Comportamento |
|---|---|
|
Sempre raciocina, sem restrições de profundidade. Apenas Claude Opus 4.6. |
|
Sempre raciocina. Fornece raciocínio profundo em tarefas complexas. |
|
Raciocínio moderado. Pode ignorar o raciocínio para consultas muito simples. |
|
Minimiza o raciocínio. Ignora o raciocínio para tarefas simples em que a velocidade é mais importante. |
Os exemplos a seguir demonstram como fazer uma chamada da Messages API com o raciocínio adaptativo habilitado:
A resposta inclui blocos de raciocínio com resumos e assinaturas de raciocínio. Passe esses blocos de volta em conversas com várias interações para manter o contexto do raciocínio:
Para uma descrição completa do suporte da Messages API para raciocínio adaptativo, consulte Documentos da Claude API – raciocínio adaptativo.
Recursos beta (Messages API)¶
A Messages API é compatível com recursos beta da Anthropic pelo cabeçalho anthropic-beta. Passe um ou mais valores de cabeçalho beta como uma cadeia de caracteres separada por vírgulas.
Valor do cabeçalho beta |
Recurso |
|---|---|
|
Ferramentas com uso eficiente de tokens |
|
Raciocínio intercalado |
|
Permite até 128 mil tokens de saída |
|
Modo desenvolvedor para raciocínio bruto em modelos Claude 4+ |
|
Janela de contexto com 1 milhão de tokens |
|
Gerenciamento de contexto |
|
Parâmetro de esforço para raciocínio |
|
Ferramenta de pesquisa de ferramentas |
|
Exemplos de uso da ferramenta |
O exemplo a seguir habilita a janela de contexto de 1 milhão de tokens com claude-sonnet-4-6:
É possível combinar vários recursos beta ao passar uma cadeia de caracteres separada por vírgulas:
Referência da Chat Completions API¶
POST /api/v2/cortex/v1/chat/completions¶
Gera uma complementação de bate-papo usando o modelo especificado. O formato da solicitação e da resposta segue a especificação da OpenAI Chat Completions API.
Cabeçalhos obrigatórios¶
Authorization: Bearer tokenAutorização para a solicitação.
tokené um token web JSON (JSON web token, JWT), token OAuth ou token de acesso programático. Para obter mais detalhes, consulte Autenticando o Snowflake REST APIs com Snowflake.Content-Type: application/jsonEspecifica que o corpo da solicitação está no formato JSON.
Cabeçalhos opcionais¶
X-Snowflake-Authorization-Token-Type: typeDefine o tipo de token de autorização.
Se você omitir o cabeçalho
X-Snowflake-Authorization-Token-Type, o Snowflake determinará o tipo de token examinando o token.Embora esse cabeçalho seja opcional, você pode optar por especificá-lo. Você pode definir o cabeçalho com um dos seguintes valores:
KEYPAIR_JWT(para autenticação de pares de chaves)OAUTH(para OAuth)PROGRAMMATIC_ACCESS_TOKEN(para tokens de acesso programático)
Accept: application/json, text/event-streamEspecifica que a resposta conterá JSON (caso de erro) ou eventos enviados pelo servidor.
Campos JSON obrigatórios¶
Campo |
Tipo |
Descrição |
|---|---|---|
|
string |
O modelo a ser utilizado (consulte Disponibilidade do modelo). Você também pode usar o nome totalmente qualificado de qualquer modelo ajustado no formato |
|
matriz |
Uma matriz de objetos de mensagem que representam a conversa. Cada mensagem deve ter um |
Campos JSON opcionais comumente utilizados¶
Campo |
Tipo |
Padrão |
Descrição |
|---|---|---|---|
|
inteiro |
4096 |
Número máximo de tokens na resposta. O máximo teórico é 131.072; cada modelo tem o próprio limite de saída. |
|
number |
Varia de acordo com o modelo |
Controla a aleatoriedade. Valores de 0 a 2. |
|
number |
1.0 |
Controla a diversidade via amostragem de núcleo. |
|
booleano |
falso |
Indica se o progresso parcial deve ser transmitido como eventos enviados pelo servidor. |
|
matriz |
null |
Uma lista de ferramentas que o modelo pode chamar. Cada ferramenta deve ter |
|
cadeia de caracteres ou objeto |
|
Controla como o modelo seleciona as ferramentas. Opções: |
|
objeto |
null |
Restringe o formato de saída. Use |
|
string |
null |
Para modelos de raciocínio da OpenAI. Valores: |
|
objeto |
null |
Para modelos Claude. Defina |
Consulte a tabela de compatibilidade detalhada para obter a lista completa de campos compatíveis por família de modelos.
Códigos de status¶
- 200
OK Solicitação concluída com sucesso.
- 400
invalid options object Os argumentos opcionais têm valores inválidos.
- 400
unknown model model_name O modelo especificado não existe.
- 400
schema validation failed A estrutura do esquema de resposta está incorreta.
- 400
max tokens of count exceeded A solicitação excedeu o número máximo de tokens compatíveis com o modelo.
- 400
all requests were throttled by remote service A solicitação foi limitada. Tente novamente mais tarde.
- 402
budget exceeded O orçamento de consumo do modelo foi excedido.
- 403
Not Authorized Conta não habilitada para REST API, ou a função padrão para o usuário que efetuou a chamada não tem a função de banco de dados
snowflake.cortex_user.- 429
too many requests A cota de uso foi excedida. Tente novamente mais tarde.
- 503
inference timed out A solicitação demorou muito.
Limitações¶
Se não for definido,
max_completion_tokensassume o padrão de 4096. Cada modelo tem seu próprio limite de tokens de saída.A chamada de ferramentas é compatível apenas com os modelos OpenAI e Claude.
O uso de áudio não é compatível.
A compreensão da imagem é compatível somente com modelos do OpenAI e do Claude. As imagens são limitadas a 20 por conversação com um de tamanho máximo de solicitação de 20 MiB.
Somente os modelos do Claude oferecem suporte a pontos de controle de cache efêmeros para cache de prompt. Os modelos do OpenAI oferecem suporte ao cache implícito.
Somente os modelos Claude são compatíveis com o retorno de detalhes de raciocínio na resposta.
max_tokensestá obsoleto. Usemax_completion_tokensem vez disso.As mensagens de erro são geradas pela Snowflake, não pelo provedor do modelo.
Tabela de compatibilidade detalhada¶
As tabelas a seguir resumem quais campos de solicitação e resposta são compatíveis ao usar a Chat Completions API com diferentes famílias de modelos hospedadas no Snowflake.
Campo |
Modelos do OpenAI |
Modelos do Claude |
Outros modelos |
|---|---|---|---|
|
Suporte para ✔ |
Suporte para ✔ |
Suporte para ✔ |
|
Consulte os subcampos |
Consulte os subcampos |
Consulte os subcampos |
|
❌ Erro |
❌ Ignorado |
❌ Ignorado |
|
Suporte para ✔ |
✔ Somente usuário/assistente/sistema |
✔ Somente usuário/assistente/sistema |
|
Suporte para ✔ |
Suporte para ✔ |
Suporte para ✔ |
|
Consulte os subcampos |
Consulte os subcampos |
Consulte os subcampos |
|
Suporte para ✔ |
Suporte para ✔ |
Suporte para ✔ |
|
Suporte para ✔ |
Suporte para ✔ |
Suporte para ✔ |
|
Suporte para ✔ |
Suporte para ✔ |
❌ Erro |
|
❌ Ignorado |
✔ Compatível (somente efêmero) |
❌ Ignorado |
|
❌ Erro |
❌ Erro |
❌ Ignorado |
|
❌ Erro |
❌ Ignorado |
❌ Ignorado |
|
Suporte para ✔ |
❌ Ignorado |
❌ Ignorado |
|
✔ Compatível (obsoleto) |
❌ Ignorado |
❌ Ignorado |
|
Suporte para ✔ |
❌ Ignorado |
❌ Ignorado |
|
Suporte para ✔ |
❌ Ignorado |
❌ Ignorado |
|
Suporte para ✔ |
Suporte para ✔ |
❌ Ignorado |
|
Suporte para ✔ |
✔ Somente ferramentas |
❌ Ignorado |
|
❌ Ignorado |
✔ Formato OpenRouter |
❌ Ignorado |
|
❌ Erro |
❌ Ignorado |
❌ Ignorado |
|
Suporte para ✔ |
❌ Ignorado |
❌ Ignorado |
|
Suporte para ✔ |
❌ Ignorado |
❌ Ignorado |
|
Suporte para ✔ |
❌ Ignorado |
❌ Ignorado |
|
❌ Erro (obsoleto) |
❌ Erro (obsoleto) |
❌ Erro (obsoleto) |
|
✔ Compatível (4096 padrão, 131072 máximo) |
✔ Compatível (4096 padrão, 131072 máximo) |
✔ Compatível (4096 padrão, 131072 máximo) |
|
❌ Ignorado |
❌ Ignorado |
❌ Ignorado |
|
❌ Ignorado |
❌ Ignorado |
❌ Ignorado |
|
Suporte para ✔ |
❌ Ignorado |
❌ Ignorado |
|
Suporte para ✔ |
❌ Ignorado |
❌ Ignorado |
|
Suporte para ✔ |
❌ Ignorado |
❌ Ignorado |
|
Suporte para ✔ |
❌ Ignorado |
❌ Ignorado |
|
Suporte para ✔ |
❌ Ignorado |
❌ Ignorado |
|
Suporte para ✔ |
❌ Ignorado (usar o objeto |
❌ Ignorado |
|
Consulte os subcampos |
Consulte os subcampos |
Consulte os subcampos |
|
✔ Compatível (substitui |
✔ Convertido em |
❌ Ignorado |
|
❌ Ignorado |
Suporte para ✔ |
❌ Ignorado |
|
Suporte para ✔ |
✔ Somente |
❌ Ignorado |
|
❌ Ignorado |
❌ Ignorado |
❌ Ignorado |
|
❌ Erro |
❌ Erro |
❌ Erro |
|
Suporte para ✔ |
❌ Ignorado |
❌ Ignorado |
|
❌ Erro |
❌ Erro |
❌ Erro |
|
Suporte para ✔ |
Suporte para ✔ |
Suporte para ✔ |
|
Consulte os subcampos |
Consulte os subcampos |
Consulte os subcampos |
|
❌ Ignorado |
❌ Ignorado |
❌ Ignorado |
|
Suporte para ✔ |
Suporte para ✔ |
Suporte para ✔ |
|
Suporte para ✔ |
Suporte para ✔ |
Suporte para ✔ |
|
Suporte para ✔ |
✔ Somente ferramentas |
❌ Ignorado |
|
Suporte para ✔ |
✔ Somente ferramentas |
❌ Erro |
|
Suporte para ✔ |
❌ Ignorado |
❌ Ignorado |
|
Suporte para ✔ |
Suporte para ✔ |
Suporte para ✔ |
|
Suporte para ✔ |
❌ Ignorado |
❌ Ignorado |
|
❌ Erro |
❌ Ignorado |
❌ Ignorado |
Campo |
Modelos do OpenAI |
Modelos do Claude |
Outros modelos |
|---|---|---|---|
|
Suporte para ✔ |
Suporte para ✔ |
Suporte para ✔ |
|
Suporte para ✔ |
Suporte para ✔ |
Suporte para ✔ |
|
Suporte para ✔ |
Suporte para ✔ |
Suporte para ✔ |
|
Suporte para ✔ |
Suporte para ✔ |
Suporte para ✔ |
|
Consulte os subcampos |
Consulte os subcampos |
Consulte os subcampos |
|
Suporte para ✔ |
✔ Somente escolha única |
✔ Somente escolha única |
|
Suporte para ✔ |
❌ Sem suporte |
✔ Somente |
|
Suporte para ✔ |
❌ Sem suporte |
❌ Sem suporte |
|
Consulte os subcampos |
Consulte os subcampos |
Consulte os subcampos |
|
Suporte para ✔ |
Suporte para ✔ |
Suporte para ✔ |
|
Suporte para ✔ |
Suporte para ✔ |
Suporte para ✔ |
|
Suporte para ✔ |
❌ Sem suporte |
❌ Sem suporte |
|
❌ Sem suporte |
❌ Sem suporte |
❌ Sem suporte |
|
❌ Sem suporte |
❌ Sem suporte |
❌ Sem suporte |
|
Suporte para ✔ |
❌ Sem suporte |
❌ Sem suporte |
|
Suporte para ✔ |
✔ Somente ferramentas |
❌ Sem suporte |
|
❌ Sem suporte |
✔ Formato OpenRouter |
❌ Sem suporte |
|
Consulte os subcampos |
Consulte os subcampos |
Consulte os subcampos |
|
Suporte para ✔ |
Suporte para ✔ |
Suporte para ✔ |
|
Suporte para ✔ |
❌ Sem suporte |
❌ Sem suporte |
|
Suporte para ✔ |
❌ Sem suporte |
❌ Sem suporte |
|
Suporte para ✔ |
❌ Sem suporte |
❌ Sem suporte |
|
Suporte para ✔ |
✔ Somente ferramentas |
❌ Sem suporte |
|
❌ Sem suporte |
✔ Formato OpenRouter |
❌ Sem suporte |
|
Consulte os subcampos |
Consulte os subcampos |
Consulte os subcampos |
|
Suporte para ✔ |
Suporte para ✔ |
Suporte para ✔ |
|
Suporte para ✔ |
Suporte para ✔ |
Suporte para ✔ |
|
Suporte para ✔ |
Suporte para ✔ |
Suporte para ✔ |
|
Consulte os subcampos |
Consulte os subcampos |
Consulte os subcampos |
|
❌ Sem suporte |
❌ Sem suporte |
❌ Sem suporte |
|
✔ Somente leituras de cache |
✔ Leitura + gravação de cache |
❌ Sem suporte |
|
Consulte os subcampos |
Consulte os subcampos |
Consulte os subcampos |
|
Suporte para ✔ |
❌ Sem suporte |
❌ Sem suporte |
|
❌ Sem suporte |
❌ Sem suporte |
❌ Sem suporte |
|
Suporte para ✔ |
❌ Sem suporte |
❌ Sem suporte |
|
Suporte para ✔ |
❌ Sem suporte |
❌ Sem suporte |
|
Suporte para ✔ |
❌ Sem suporte |
❌ Sem suporte |
|
Suporte para ✔ |
❌ Sem suporte |
❌ Sem suporte |
Cabeçalho |
Suporte |
|---|---|
|
✔ Obrigatório |
|
✔ Compatível ( |
|
✔ Compatível ( |
Cabeçalho |
Suporte |
|---|---|
|
❌ Sem suporte |
|
❌ Sem suporte |
|
❌ Sem suporte |
|
❌ Sem suporte |
|
❌ Sem suporte |
|
❌ Sem suporte |
|
❌ Sem suporte |
|
❌ Sem suporte |
|
❌ Sem suporte |
|
❌ Sem suporte |
Saiba mais¶
Para exemplos de uso adicionais, consulte a referência da OpenAI Chat Completions API ou o OpenAI Cookbook.
Além de oferecer compatibilidade com a API Chat Completions, o Snowflake oferece suporte a recursos compatíveis com OpenRouter para modelos do Claude. Esses recursos são expostos como campos extras na solicitação:
Para cache de prompt, use o campo
cache_control. Consulte a documentação de cache de prompts OpenRouter.Para tokens de raciocínio, use o campo
reasoning. Consulte a documentação de raciocínio do OpenRouter.
Referência da Messages API¶
POST /api/v2/cortex/v1/messages¶
Gera uma resposta usando um modelo Claude. O formato de solicitação e resposta segue a especificação da Anthropic Messages API.
Nota
A Messages API é compatível apenas com modelos Claude. Para outros modelos, use a Chat Completions API.
Cabeçalhos obrigatórios¶
Authorization: Bearer tokenAutorização para a solicitação.
tokené um token web JSON (JSON web token, JWT), token OAuth ou token de acesso programático. Para obter mais detalhes, consulte Autenticando o Snowflake REST APIs com Snowflake.Content-Type: application/jsonEspecifica que o corpo da solicitação está no formato JSON.
anthropic-version: 2023-06-01Cabeçalho de versão Anthropic API obrigatório.
Cabeçalhos opcionais¶
X-Snowflake-Authorization-Token-Type: typeDefine o tipo de token de autorização.
Se você omitir o cabeçalho
X-Snowflake-Authorization-Token-Type, o Snowflake determinará o tipo de token examinando o token.Embora esse cabeçalho seja opcional, você pode optar por especificá-lo. Você pode definir o cabeçalho com um dos seguintes valores:
KEYPAIR_JWT(para autenticação de pares de chaves)OAUTH(para OAuth)PROGRAMMATIC_ACCESS_TOKEN(para tokens de acesso programático)
anthropic-beta: featureHabilita os recursos beta. Somente cabeçalhos beta compatíveis com Bedrock são aceitos.
Campos JSON obrigatórios¶
Campo |
Tipo |
Descrição |
|---|---|---|
|
string |
O modelo Claude a ser utilizado (consulte Disponibilidade do modelo). |
|
inteiro |
o número máximo de tokens a serem gerados. |
|
matriz |
Uma matriz de objetos de mensagem. Cada mensagem tem um |
Recursos aceitos¶
A Messages API é compatível com o conjunto de recursos padrão do Anthropic Messages API para modelos Claude, incluindo:
Geração de texto e conversas com várias interações
Streaming (
"stream": true)Mensagens do sistema (via campo
systemde nível superior)Chamada de ferramentas (formato Anthropic com
name,description,input_schema)Entrada de imagem (blocos de origem base64)
Cache de prompts (
cache_controlem blocos de conteúdo)Raciocínio estendido (parâmetro
thinkingcombudget_tokens)
Para obter detalhes completos sobre o esquema de solicitação e resposta, consulte a documentação da Anthropic Messages API.
Limitações¶
Somente modelos Claude. OpenAI, Llama, Mistral e outros modelos não estão disponíveis por meio desse ponto de extremidade.
Sem processamento flexível ou nível de prioridade. O campo
service_tiernão é compatível.Apenas cabeçalhos beta do Bedrock. Somente valores de cabeçalho
anthropic-betacompatíveis com o Bedrock são compatíveis.As mensagens de erro são geradas pela Snowflake, não pela Anthropic.
Códigos de status¶
- 200
OK Solicitação concluída com sucesso.
- 400
invalid_request_error O corpo da solicitação está malformado ou contém valores inválidos.
- 400
unknown model model_name O modelo especificado não existe ou não é um modelo Claude.
- 402
budget exceeded O orçamento de consumo do modelo foi excedido.
- 403
Not Authorized A conta não está habilitada para REST API ou a função padrão não tem a função de banco de dados
snowflake.cortex_user.- 429
too many requests A cota de uso foi excedida. Tente novamente mais tarde.
- 503
inference timed out A solicitação demorou muito.
Limites de taxa¶
Para garantir alto desempenho para todos os clientes Snowflake, as solicitações Cortex REST API estão sujeitas a limites de taxa. As solicitações que excederem os limites poderão receber uma resposta HTTP 429. Ocasionalmente, a Snowflake pode ajustar esses limites.
Os limites padrão nas tabelas a seguir são aplicados por conta e de maneira independente para cada modelo. Certifique-se de que seu aplicativo trate respostas 429 de maneira adequada, tentando novamente com espera exponencial.
Se você precisa aumentar os limites, entre em contato com o suporte Snowflake.
Modelo
|
Tokens processados
por minuto (TPM)
|
Solicitações por
Minuto (RPM)
|
Saída máxima (tokens)
|
|---|---|---|---|
claude-3-5-sonnet |
300,000 |
300 |
16.384 |
claude-3-7-sonnet |
300,000 |
300 |
16.384 |
claude-sonnet-4-5 |
600.000 |
600 |
16.384 |
claude-haiku-4-5 |
600.000 |
600 |
16.384 |
claude-4-sonnet |
300,000 |
300 |
16.384 |
claude-4-opus |
75.000 |
75 |
16.384 |
deepseek-r1 |
100,000 |
100 |
16.384 |
llama3.1-8b |
400,000 |
400 |
16.384 |
llama3.1-70b |
200,000 |
200 |
16.384 |
llama3.1-405b |
100,000 |
100 |
16.384 |
mistral-7b |
400,000 |
400 |
16.384 |
mistral-large2 |
200,000 |
200 |
16.384 |
openai-gpt-4.1 |
300,000 |
300 |
16.384 |
openai-gpt-5 |
300,000 |
300 |
16.384 |
openai-gpt-5-chat |
300,000 |
300 |
16.384 |
openai-gpt-5-mini |
1.000.000 |
1.000 |
16.384 |
openai-gpt-5-nano |
5.000.000 |
5.000 |
16.384 |
Aumento dos limites de taxa com inferência entre regiões¶
Se você configurar a inferência entre regiões em sua conta Snowflake, os limites de taxa serão maiores para os seguintes modelos:
Modelo
|
Tokens processados
por minuto (TPM)
|
Solicitações por
Minuto (RPM)
|
Saída máxima (tokens)
|
|---|---|---|---|
claude-3-7-sonnet |
600.000 |
600 |
16.384 |
claude-haiku-4-5 |
600.000 |
600 |
16.384 |
claude-sonnet-4-5 |
600.000 |
600 |
16.384 |
claude-4-sonnet |
1.200.000 |
1.200 |
16.384 |
claude-4-opus |
150.000 |
150 |
16.384 |
llama3.1-8b |
800.000 |
400 |
16.384 |
llama3.1-70b |
400,000 |
200 |
16.384 |
llama3.1-405b |
200,000 |
100 |
16.384 |
Solução de problemas de eventos de limite de taxa¶
Exceder um dos limites de TPM ou RPM resulta no código de resposta 429. Se o seu uso da REST API está abaixo do limite de taxa de solicitação por minuto, mas ainda assim recebeu o código de resposta 429, verifique novamente a taxa de uso de token.
A Cortex REST API implementa limites de taxa usando o padrão Contador de janelas deslizantes. Os contadores são armazenados em um cluster Redis de alta disponibilidade, acessível apenas pelo Snowflake Cortex, dentro da rede privada do Snowflake.
O contador de janelas deslizantes considera que o tráfego do cliente para a API na janela de tempo anterior esteja uniformemente distribuído. Quando o pico de tráfego está elevado, essa suposição pode superestimar a taxa de solicitações, mas se recupera rapidamente, já que janela é breve. Entre em contato com o suporte Snowflake se você está sujeito à superestimativa e quer aumentar os limites.
Problemas conhecidos¶
Expiração do token de sessão¶
Recomendamos a autenticação com um dos três métodos definidos em Autenticando o Snowflake REST APIs com Snowflake. Entretanto, se você autenticar com um token de sessão do Snowflake, deverá cuidar da atualização do token para garantir o acesso ininterrupto à API.
Os tokens de sessão expiram periodicamente. Se uma solicitação for executada com um token de sessão expirado, a API REST retornará uma resposta 200 OK que inclui o código de erro 390112. Quando isso ocorre, a operação não é realizada.
Para resolver esse comportamento, seu aplicativo deve:
Verificar em cada resposta da API se há o código de erro
390112, mesmo quando o código de status HTTP é200 OK.Quando o código de erro
390112for detectado, atualize o token de sessão e repita a solicitação.
Nota
Esse comportamento afeta apenas aplicativos que usam tokens de sessão do Snowflake. Se você se autentica usando autenticação de par de chaves, OAuth ou tokens de acesso programático (Programmatic Access Tokens, PATs), não precisa implementar esse tratamento de erros.
Considerações sobre custo¶
As solicitações da REST API do Snowflake Cortex incorrem em custos de computação com base no número de tokens processados. Consulte a tabela de consumo de serviços do Snowflake para obter o custo de cada modelo em dólares 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 de texto. A equivalência do texto bruto de entrada ou saída com tokens pode variar de acordo com o modelo.
Tanto os tokens de entrada quanto os de saída incorrem em custo de computação. Se você usa a API para fornecer uma experiência de usuário de conversação ou de bate-papo, todos os prompts e respostas anteriores serão processados para gerar cada nova resposta, com os custos correspondentes.
