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 |
— | raciocínio pesado | |
google.gemini-2.5-flash |
— | 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.
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.
{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.
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ã