~/beer-and-code
▪ próximo evento AI Engineering Lab 3ª Edição — Da Arquitetura à Produção · 19—20 Set · 19 e 20 de setembro, das 09h às 13h — ao vivo via Google Meet garantir vaga
~ / tutoriais / oracle-generative-ai-oci-modelos-vs-bedrock $
Tutoriais

Oracle Generative AI: quais modelos o OCI tem e quando escolher em vez do Bedrock

LS Lucas Souza · · 13 min de leitura
Oracle Generative AI: quais modelos o OCI tem e quando escolher em vez do Bedrock

Todo mundo compara OpenAI com Anthropic. Uma parte compara Bedrock com Vertex. E quase ninguém no Brasil escreve sobre o terceiro provider de infraestrutura de LLM que já está com região em São Paulo, catálogo de 40+ modelos e uma forma de cobrança que não existe em lugar nenhum: o Oracle Generative AI.

Não é hype. É que a documentação da Oracle é densa, mal indexada e escrita para arquiteto de enterprise, não para dev. O resultado é um serviço que roda Grok, Gemini, Llama, Cohere e gpt-oss atrás da mesma API compatível com OpenAI, e que praticamente ninguém avalia antes de assinar o contrato do Bedrock.

Neste post você vai ver o catálogo real de modelos do OCI Generative AI, como funciona a cobrança por caractere (e por que isso muda a conta em português), como chamar o serviço com o SDK da OpenAI em cinco linhas, e o critério objetivo para decidir entre OCI e Bedrock.

TL;DR

  • O que é: serviço gerenciado da Oracle Cloud para chat, embeddings, rerank e agentes, com modelos de Cohere, Meta, xAI, Google e OpenAI.
  • Stack/Modelos: Grok 4.3 (1M de contexto), Gemini 2.5 Pro/Flash, Llama 4 Maverick e Scout, Cohere Command A, gpt-oss-120b/20b, Cohere Embed 4 e Rerank 4.
  • Custo/Acesso: on-demand cobrado por caractere (1 transação = 1 caractere) ou cluster dedicado por unidade/hora, com mínimo de 744 unit-hours.
  • API: endpoint compatível com OpenAI em https://inference.generativeai.<região>.oci.oraclecloud.com/openai/v1.
  • Link útil: documentação oficial do OCI Generative AI.

O contexto: por que olhar para o Oracle Generative AI agora

Durante dois anos a resposta para "onde eu rodo meu LLM em produção" foi trivial: OpenAI direto, ou Bedrock se a empresa exigisse contrato de nuvem. O OCI ficou fora da conversa porque o catálogo era pequeno — basicamente Cohere e Meta — e a Oracle vendia o serviço para quem já tinha Fusion, NetSuite ou um estado de Oracle Database para justificar.

Isso mudou de forma silenciosa. Hoje o catálogo de modelos pré-treinados inclui xAI Grok 4.3 com 1 milhão de tokens de contexto, a família Google Gemini 2.5 (Pro, Flash e Flash-Lite), Llama 4 Maverick e Scout, Cohere Command A com 256 mil tokens, e os modelos abertos da OpenAI, gpt-oss-120b e gpt-oss-20b. Em dezembro de 2025 entrou o Model Import, que permite subir peso próprio. Em junho de 2026 a lista de modelos importáveis passou a cobrir MiniMax, Mistral, Kimi da Moonshot e GLM da Z.ai.

E tem o detalhe que interessa para quem constrói produto no Brasil: o OCI Generative AI está disponível na região Brazil East (São Paulo), com 25 modelos servidos de dentro do país. Inferência em território nacional não é firula jurídica — é a diferença entre o time de compliance aprovar o projeto em duas semanas ou em dois trimestres.

Escolher onde rodar o modelo virou decisão de arquitetura, não de gosto: muda preço, latência, jurisdição do dado e o tamanho da corda que te amarra no fornecedor. Esse tipo de decisão com a conta na mesa e o código rodando é o que a gente destrincha toda semana no Clã Beer and Code, e tem gente lá construindo em Python, Go e .NET — com IA no meio, o fornecedor deixou de ser o problema; saber comparar é que virou trabalho.

Quais modelos o OCI Generative AI tem hoje

O catálogo se divide em quatro tarefas: chat, embeddings, rerank e voz. Os principais modelos ativos:

Model ID Provider Contexto Nota
xai.grok-4.3 xAI 1.000.000 maior janela do catálogo
xai.grok-4.20-multi-agent xAI variante multi-agente
google.gemini-2.5-pro Google raciocínio pesado
google.gemini-2.5-flash Google custo/latência
cohere.command-a-03-2025 Cohere 256.000 generalista enterprise
cohere.command-a-reasoning Cohere 256.000 raciocínio
cohere.command-a-vision Cohere multimodal
meta.llama-4-maverick-17b-128e-instruct-fp8 Meta MoE, peso aberto
meta.llama-4-scout-17b-16e-instruct Meta MoE menor
openai.gpt-oss-120b OpenAI peso aberto

Para RAG, o que importa são os outros dois grupos. Em embeddings o modelo ativo é o cohere.embed-v4.0, multimodal (texto e imagem) — toda a família Embed 3, incluindo as variantes multilingual, está marcada como deprecated. Em rerank, o cohere.rerank-4 nas variantes Pro e Fast, com o Rerank 3.5 também deprecated.

Repare no padrão: o catálogo gira rápido e a Oracle deprecia sem cerimônia. A lista de modelos xAI tem hoje mais IDs marcados como deprecated (Grok 3, 3-mini, 3-fast, 4, 4-fast, 4.1-fast, code-fast-1) do que ativos. Se você fixar um model ID no .env e esquecer, um dia a chamada volta erro. Trate model ID como dependência versionada, com alerta de deprecação no board do time.

O que não tem, e é a ausência mais barulhenta: nenhum modelo Anthropic. Sem Claude, em nenhuma variante.

O preço por caractere: a pegadinha que muda a conta

Aqui está a diferença técnica mais concreta entre OCI e todo mundo. Bedrock, Vertex e OpenAI cobram por token. O OCI Generative AI cobra por transação, e a documentação de cálculo de custo é explícita sobre o que isso significa:

"One transaction equals to one character."

Uma transação é um caractere. O preço on-demand é publicado por 10.000 transações, ou seja, por 10.000 caracteres. Alguns exemplos de ordem de grandeza: Llama 4 Scout e Maverick na casa de US$ 0,0018 por 10 mil transações, modelos Cohere maiores em US$ 0,0156, e os de embedding em torno de US$ 0,001.

Por que isso importa na prática? Duas razões.

Primeira: a conta fica determinística. Você não precisa de tokenizer para estimar custo. mb_strlen() resolve.

// OCI: 1 transação = 1 caractere. Estimativa exata, sem tokenizer.
$prompt = file_get_contents(storage_path('app/contrato.txt'));
$chars  = mb_strlen($prompt);

$precoPor10k = 0.0156;          // USD / 10.000 transações
$custoUsd    = ($chars / 10_000) * $precoPor10k;

// 40.000 caracteres => 40.000/10.000 * 0.0156 = US$ 0,0624

Tente fazer isso com cobrança por token e você vai importar tiktoken, descobrir que o tokenizer do Llama é outro, e ainda assim errar a estimativa.

Segunda: português é caro em token e neutro em caractere. Tokenizers são treinados majoritariamente em inglês. Palavra em português quebra em mais tokens do que a equivalente em inglês — acentuação, sufixos longos, conjugação. Num modelo cobrado por token, o mesmo texto traduzido custa mais caro em português. Na cobrança por caractere, esse imposto de idioma simplesmente não existe: o custo acompanha o tamanho do texto, não a sorte do tokenizer.

Para um produto brasileiro que processa volume alto de texto em português — atendimento, contrato, ficha clínica, chamado de suporte — isso deixa de ser curiosidade e vira linha de planilha. Um aviso, porém: se a sua fatura já veio fora do lugar, trocar de provider é o segundo passo. O primeiro é achar os vazamentos de token no que você já roda — migrar desperdício de nuvem só muda o CNPJ da conta.

Mão na massa: chamando o OCI com o SDK da OpenAI

A Oracle publicou endpoints compatíveis com OpenAI. Você não reescreve integração: troca base_url, autenticação e nome do modelo.

Passo 1: instalar o helper de autenticação

A autenticação não é Bearer token. É assinatura de request do OCI IAM, e é isso que o pacote oci-genai-auth resolve.

pip install openai oci-genai-auth

Passo 2: apontar o client para a região

import httpx
from openai import OpenAI
from oci_genai_auth import OciSessionAuth

client = OpenAI(
    base_url="https://inference.generativeai.us-chicago-1.oci.oraclecloud.com/openai/v1",
    api_key="not-used",  # a auth real vai no http_client
    http_client=httpx.Client(auth=OciSessionAuth(profile_name="DEFAULT")),
)

resp = client.chat.completions.create(
    model="xai.grok-4.3",
    messages=[{"role": "user", "content": "Explique embeddings em uma frase."}],
)

print(resp.choices[0].message.content)

Três coisas para não errar aqui. O api_key é ignorado, mas o SDK da OpenAI exige a chave preenchida — deixe qualquer string. O profile_name aponta para um perfil do seu ~/.oci/config, então o oci setup config precisa ter rodado antes. E a região no base_url define o catálogo: pedir xai.grok-4.3 num endpoint de São Paulo devolve erro de modelo inexistente, não fallback.

Passo 3: escolher a região com os olhos abertos

Essa é a parte que a documentação esconde bem e que derruba projeto em staging. A disponibilidade por região não é uniforme:

  • US Midwest (us-chicago-1): cerca de 41 modelos, o catálogo completo, incluindo Grok e Gemini.
  • Brazil East (sa-saopaulo-1): cerca de 25 modelos, sem Grok e sem Gemini, e com boa parte dos ativos disponível apenas em cluster dedicado (Command A Reasoning, Embed 4, Rerank 4 Pro, Llama 4).

Traduzindo: dado no Brasil e Grok 4.3 são, hoje, requisitos mutuamente exclusivos. Descubra isso no desenho da arquitetura, não no dia do go-live.

▪ Clã Beer and Code

Tutorial te mostra o caminho — no Clã você constrói junto. Aula ao vivo toda semana, projetos reais de Engenharia de IA, ao lado de quem já está em produção.

Entrar no Clã

On-demand ou cluster dedicado?

Duas formas de servir. On-demand é pay-as-you-go por caractere, sem compromisso — é onde todo projeto deve começar. Cluster dedicado te dá GPU reservada, throughput previsível, fine-tuning e hospedagem de modelo próprio.

O número que decide é o compromisso mínimo. A documentação de cobrança do cluster dedicado fixa 744 unit-hours por cluster de hospedagem. São 31 dias corridos: você aluga o mês inteiro, use ou não. Com um Cohere grande em torno de US$ 24 por unidade/hora, a matemática do mês fechado passa fácil dos US$ 17 mil por unidade — antes de qualquer inferência.

Fine-tuning é mais barato de experimentar: o mínimo é 1 unit-hour por job, embora alguns modelos exijam pelo menos 2 unidades. E uma exceção que vale ouro: modelo importado via Model Import não carrega o compromisso de 744 unit-hours.

Regra prática: só migre para dedicado quando o gasto on-demand mensal já estiver perto do custo do cluster, ou quando o requisito for isolamento de tenancy. Fora esses dois casos, dedicado é queimar orçamento para comprar previsibilidade que você ainda não precisa.

Quando escolher OCI e quando ficar no Bedrock

Sem torcida. O critério é o caso de uso.

Fique no Bedrock quando:

  • Você precisa de Claude. É o desempate mais simples do post. O OCI não tem nenhum modelo Anthropic, e o Bedrock tem a família Claude completa — o caminho de governança e a conta em real desse cenário estão detalhados em AWS Bedrock: o que é e como rodar Claude em produção. Se a qualidade do seu produto depende disso, acabou a discussão.
  • Seus dados já vivem no S3. Manter inferência ao lado do dado evita pipeline de exportação, custo de egress e uma superfície inteira de segurança.
  • Você quer o catálogo mais largo de terceiros. Claude, Llama, Mistral, Cohere, AI21 e Titan sob uma API só.
  • Seu time já opera IAM, VPC e billing da AWS. Provider novo é curva de operação, não só de API.

Olhe para o OCI Generative AI quando:

  • Residência de dado no Brasil é requisito duro. Inferência em São Paulo, dentro da mesma tenancy do resto da aplicação.
  • Seu volume é texto longo em português. Cobrança por caractere elimina o imposto de tokenização do idioma.
  • A empresa já é Oracle. Fusion, NetSuite, Autonomous Database. Rodar inferência ao lado do dado transacional mata o mesmo problema que o S3 mata na AWS, só que do outro lado.
  • Você quer Grok ou Gemini com contrato de nuvem enterprise. Grok 4.3 com 1M de contexto e Gemini 2.5 debaixo de um único contrato Oracle é combinação que Bedrock não oferece.
  • Você vai hospedar peso próprio. Model Import sem o piso de 744 unit-hours é vantagem concreta de custo.

E existe a resposta que ninguém gosta de dar: os dois. O endpoint compatível com OpenAI torna barato manter uma camada fina de abstração e rotear por tarefa — Claude no Bedrock para o que exige raciocínio, Command A no OCI São Paulo para o volume em português com dado sensível.

Limitações e pontos de atenção

Ausência de Anthropic. Repetindo porque é o ponto que mais elimina o OCI de shortlist. Não há Claude, nem previsão pública.

Churn agressivo de modelo. O volume de IDs deprecated no catálogo xAI é alto. Model ID em produção precisa de monitoramento, não de fé.

Assimetria brutal entre regiões. 41 modelos em Chicago contra 25 em São Paulo, e vários dos bons só em dedicado. Valide disponibilidade por região antes de fechar a arquitetura.

Autenticação é de nuvem, não de API key. Assinatura de request via OCI IAM, com ~/.oci/config, perfil e chave. Em container e CI isso custa configuração — planeje instance principal ou workload identity desde o começo.

Documentação fragmentada. Modelo, região, preço e API vivem em quatro páginas que não se referenciam bem. É exatamente por isso que este post existe.

Compromisso de 744 unit-hours. Um mês inteiro de cluster, cobrado independente de uso. Erro comum de quem sobe cluster "só para testar".

FAQ rápido

Preciso reescrever meu código para migrar do OpenAI para o OCI? Não, se você usa o SDK oficial da OpenAI. Troque base_url, injete a autenticação OCI no http_client e ajuste o nome do modelo. Chamadas de tools e streaming seguem o mesmo formato. Integração via Assistants API antiga é outra história — o caminho equivalente no OCI é a Responses API.

Como calculo custo se a cobrança é por caractere? Conte os caracteres do request com mb_strlen() (ou equivalente) e divida por 10.000 para achar o número de blocos de transação. Sem tokenizer, sem estimativa. Detalhes no cálculo de custo oficial.

Dá para usar Llama 4 no on-demand em São Paulo? Não. Na Brazil East, Llama 4 Maverick e Scout aparecem como disponíveis apenas em cluster dedicado. Para Llama on-demand na região, o caminho é o meta.llama-3.3-70b-instruct.

Vale a pena para quem não é cliente Oracle? Vale avaliar em dois cenários: residência de dado no Brasil e volume alto de texto em português. Fora deles, a vantagem de integração pesa a favor de quem já é da casa, e o Bedrock costuma ganhar por catálogo e ecossistema.

Conclusão

O Oracle Generative AI não é o melhor provider de LLM do mercado, e não é isso que está em jogo. É um provider legítimo, com catálogo competitivo, API compatível com OpenAI, região no Brasil e um modelo de cobrança por caractere que resolve um problema real de quem processa português em escala. Ficou fora do radar porque a documentação é ruim, não porque o produto é.

O que vem a seguir é previsível: com Model Import, Responses API e endpoint compatível com OpenAI, os provedores estão convergindo para a mesma superfície. Quando a API for commodity, a decisão migra de vez para onde ela sempre deveria estar — onde seu dado mora, quanto custa o caractere e qual jurisdição você aceita.

Agora que você tem o critério, o exercício útil é pegar seu prompt de produção mais caro, medir em caracteres e comparar com a fatura de token do mês passado. A conta responde melhor que qualquer benchmark.

Lucas Souza
Escrito por
Lucas Souza

{AI Engineer} — apaixonado por Laravel, arquitetura de software e construir produtos com impacto. Compartilho aqui tutoriais, descobertas e reflexões sobre o dia a dia de engenharia.

▪ Clã Beer and Code

Conteúdo é o que não falta. Falta quem desembaralhe: o que importa agora é como implementar do jeito certo. No Clã você tem isso ao vivo, toda semana, com quem já filtrou o ruído.

Entrar no Clã
Conheça o Clã Beer and Code
tocando