Migrar da OpenAI
Guia passo a passo para migrar da API OpenAI para a Polar. Mapeamento de modelos, mudanças de código e comparação de funcionalidades.
Visão Geral
A API Polar é compatível com o formato OpenAI, o que significa que a migração pode ser feita com mudanças mínimas no código. Na maioria dos casos, basta alterar a base_url e a api_key.
Passo 1: Alterar Base URL
Substitua a URL base da OpenAI pela da Polar:
from openai import OpenAI
# Antes (OpenAI)
client = OpenAI(
api_key="sk-..."
)
# Depois (Polar)
client = OpenAI(
base_url="https://api.polarai.com.br/v1",
api_key="pk-sua-chave-aqui"
)Passo 2: Alterar API Key
Substitua sua chave OpenAI (sk-...) pela chave Polar (pk-...):
# Antes
export OPENAI_API_KEY="sk-..."
# Depois
export POLAR_API_KEY="pk-..."import os
# Antes
api_key = os.environ.get("OPENAI_API_KEY")
# Depois
api_key = os.environ.get("POLAR_API_KEY")Passo 3: Mapear Modelos
Substitua os modelos OpenAI pelos equivalentes Polar:
| OpenAI | Polar | Notas |
|---|---|---|
gpt-4o | urso-bah (em breve) | Modelo avançado, alta qualidade — hoje use urso-mabe |
gpt-4o-mini | urso-mabe | Modelo leve e rápido |
gpt-4-turbo | urso-guto (em breve) | Uso geral — hoje use urso-mabe |
gpt-3.5-turbo | urso-mabe | Modelo econômico |
text-embedding-3-small | urso-embed | Embeddings otimizados para PT-BR |
text-embedding-3-large | urso-embed | Modelo único de embeddings |
o1 | urso-bah-think (em breve) | Com raciocínio explícito |
o1-mini | urso-guto-think (em breve) | Raciocínio com custo menor |
Passo 4: Comparação de Funcionalidades
| Funcionalidade | OpenAI | Polar | Notas |
|---|---|---|---|
| Chat Completions | Sim | Sim | Compatível |
| Streaming | Sim | Sim | Compatível |
| Function Calling | Sim | Sim | Compatível + ferramentas BR |
| Structured Output | Sim | Sim | response_format: json_schema |
| Vision | Sim | Sim | urso-mabe (urso-guto e urso-bah (em breve)) |
| Embeddings | Sim | Sim | Otimizado para PT-BR |
| Batch API | Sim | Sim | Compatível |
| Audio (TTS/STT) | Sim | Urso Eco | Arquitetura diferente (WebSocket) |
| Image Generation | DALL-E | Não | Não disponível |
| Fine-tuning | Sim | Não | Em desenvolvimento |
Passo 5: Exemplos de Migração
Chat Completions
from openai import OpenAI
# A mudança é apenas base_url, api_key e model
client = OpenAI(
base_url="https://api.polarai.com.br/v1",
api_key="pk-sua-chave-aqui"
)
response = client.chat.completions.create(
model="urso-mabe", # Ex.: era "gpt-4o"; até `urso-bah` *(em breve)*
messages=[
{"role": "system", "content": "Você é um assistente útil."},
{"role": "user", "content": "O que é a LGPD?"}
],
temperature=0.7,
max_tokens=1000,
stream=True
)
for chunk in response:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="")Function Calling
# Funciona exatamente igual — mesma interface
response = client.chat.completions.create(
model="urso-mabe",
messages=[{"role": "user", "content": "Qual o endereço do CEP 01001-000?"}],
tools=[
{
"type": "function",
"function": {
"name": "buscar_cep",
"description": "Busca endereço por CEP",
"parameters": {
"type": "object",
"properties": {
"cep": {"type": "string", "description": "CEP no formato 00000-000"}
},
"required": ["cep"]
}
}
}
],
tool_choice="auto"
)Embeddings
# Mesma interface, modelo diferente
response = client.embeddings.create(
model="urso-embed", # Era "text-embedding-3-small"
input="Direito do consumidor brasileiro"
)
embedding = response.data[0].embedding
print(f"Dimensões: {len(embedding)}")Structured Output
response = client.chat.completions.create(
model="urso-mabe",
messages=[
{"role": "user", "content": "Extraia o nome e CPF: João Silva, CPF 123.456.789-00"}
],
response_format={
"type": "json_schema",
"json_schema": {
"name": "pessoa",
"schema": {
"type": "object",
"properties": {
"nome": {"type": "string"},
"cpf": {"type": "string"}
},
"required": ["nome", "cpf"]
}
}
}
)Diff Resumido
Para a maioria dos projetos, a migração se resume a estas mudanças:
from openai import OpenAI
client = OpenAI(
- api_key="sk-..."
+ base_url="https://api.polarai.com.br/v1",
+ api_key="pk-sua-chave-aqui"
)
response = client.chat.completions.create(
- model="gpt-4o",
+ model="urso-mabe",
messages=[
{"role": "user", "content": "Olá, mundo!"}
]
)Vantagens da Migração
- Performance em PT-BR: Modelos treinados nativamente em português brasileiro
- Ferramentas brasileiras: CEP, CNPJ, legislação e processos judiciais integrados
- Preço em BRL: Sem variação cambial, preços competitivos
- Jurisia: IA jurídica especializada (exclusivo)
- Urso Eco: Voice chat em tempo real
- Soberania de dados: Dados processados no Brasil
Perguntas Frequentes
A SDK OpenAI funciona com a Polar?
Sim. A SDK oficial da OpenAI funciona perfeitamente com a Polar, basta alterar base_url e api_key.
Preciso mudar o formato das mensagens? Não. O formato de mensagens (role/content) é idêntico.
O streaming funciona da mesma forma? Sim. O streaming via SSE funciona de forma idêntica.
Posso usar as duas APIs simultaneamente? Sim. Basta criar duas instâncias do cliente com configurações diferentes.