02-04-01 — GPT (OpenAI): GPT-4, GPT-4o, o-series
TL;DR
A família GPT da OpenAI vai de GPT-1 (2018) até o-3 e GPT-4o (2024-2025). A série "o" introduz raciocínio estendido (chain-of-thought interno). Para integrações, a API de Chat Completions com function calling e structured outputs é o padrão de fato. Modelos disponíveis via OpenAI API diretamente ou via Azure OpenAI Service.
Linha do tempo da família GPT
GPT-4 e GPT-4o: as diferenças que importam
| Aspecto | GPT-4 | GPT-4o ("omni") |
|---|---|---|
| Modalidades | Texto + visão (imagem) | Texto + imagem + áudio nativos |
| Velocidade | Mais lento | 2x mais rápido |
| Custo | Maior | 50% mais barato que GPT-4 |
| Context window | 128k tokens | 128k tokens |
| Uso recomendado | Legado | Padrão atual |
A série "o": raciocínio estendido
Os modelos o1, o1-mini, o3 e o4-mini representam uma mudança de paradigma. Em vez de responder imediatamente, eles geram um "chain-of-thought interno" antes de dar a resposta final — um processo oculto de raciocínio que pode durar segundos ou minutos.
Isso os torna significativamente melhores em:
- Matemática e raciocínio lógico
- Código complexo e debugging
- Planejamento multi-step
- Problemas científicos/técnicos
O trade-off: mais lentos e mais caros que GPT-4o para tarefas simples.
A API: o que você precisa saber
from openai import OpenAI
client = OpenAI() # usa OPENAI_API_KEY
# Chat Completions básico
response = client.chat.completions.create(
model="gpt-4o",
messages=[
{"role": "system", "content": "Você é um assistente especializado em .NET."},
{"role": "user", "content": "Como implementar cache distribuído com Redis no ASP.NET Core?"}
],
temperature=0.3,
max_tokens=1000
)
print(response.choices[0].message.content)
using Azure.AI.OpenAI;
using OpenAI.Chat;
var client = new AzureOpenAIClient(
new Uri("https://seu-recurso.openai.azure.com"),
new AzureKeyCredential(Environment.GetEnvironmentVariable("AZURE_OPENAI_KEY")));
var chatClient = client.GetChatClient("gpt-4o");
var completion = await chatClient.CompleteChatAsync(
new SystemChatMessage("Você é um assistente .NET."),
new UserChatMessage("Como usar IDistributedCache com Redis?")
);
Console.WriteLine(completion.Value.Content[0].Text);
Function Calling e Structured Outputs
Dois recursos críticos para integrações em produção:
Function calling: O modelo decide quando chamar uma função externa e retorna os parâmetros como JSON estruturado. Permite integrar LLMs com sistemas existentes (banco de dados, APIs, microserviços).
Structured outputs: Garante que a resposta seja um JSON válido seguindo um schema definido. Elimina o parsing frágil de texto livre.
from pydantic import BaseModel
class TicketClassification(BaseModel):
categoria: str
prioridade: str # "alta", "media", "baixa"
equipe_responsavel: str
resumo: str
response = client.beta.chat.completions.parse(
model="gpt-4o",
messages=[{"role": "user", "content": f"Classifique este ticket: {ticket_text}"}],
response_format=TicketClassification
)
ticket = response.choices[0].message.parsed
print(f"Prioridade: {ticket.prioridade}")
Pricing (referência 2025)
Verifique sempre platform.openai.com/docs/pricing para valores atualizados.
| Modelo | Input (por 1M tokens) | Output (por 1M tokens) |
|---|---|---|
| gpt-4o | $2.50 | $10.00 |
| gpt-4o-mini | $0.15 | $0.60 |
| o3 | $10.00 | $40.00 |
| o4-mini | $1.10 | $4.40 |
Como isso se conecta
Fontes
- OpenAI — Modelos disponíveis na API
- OpenAI — Function Calling Guide
- OpenAI — Structured Outputs Guide