Consumindo Modelos de IA
APIs de LLM
Conceito de API REST, request/response, autenticação por chave e arquitetura básica de integração.
Nesta aula você vai
- Descrever endpoint, headers e body de uma API de LLM
- Proteger API key no backend
- Comparar provedores comuns (OpenAI, Anthropic, Google)
APIs de LLM
Objetivos
- Entender arquitetura básica de integração
- Nunca expor chave de API no frontend
- Ler documentação de qualquer provedor com confiança
Anatomia de uma chamada
Padrão comum (OpenAI-compatible usado por dezenas de provedores):
POST https://api.openai.com/v1/chat/completions
Authorization: Bearer sk-...
Content-Type: application/json
{
"model": "gpt-4o-mini",
"messages": [
{ "role": "user", "content": "Olá" }
]
}
Response (200):
{
"id": "chatcmpl-...",
"choices": [
{
"message": { "role": "assistant", "content": "Olá! Como posso ajudar?" },
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 8,
"completion_tokens": 12,
"total_tokens": 20
}
}
Campos que seu código sempre deve tratar:
choices[0].message.content— texto da respostausage— billing e métricaserror(4xx/5xx) — mensagem e código
Provedores principais
| Provedor | Endpoint base | Observação |
|---|---|---|
| OpenAI | api.openai.com/v1 |
Referência de mercado |
| Anthropic | api.anthropic.com/v1/messages |
Formato próprio, excelente em texto longo |
| Google Gemini | generativelanguage.googleapis.com |
Integração Google Cloud |
| Groq / Together / OpenRouter | Variados | OpenAI-compatible, modelos open |
Para este curso, exemplos usam formato OpenAI-compatible — portável entre provedores.
Onde guardar a API key
❌ Frontend (React, HTML, app mobile compilado)
❌ Repositório Git
✅ Variável de ambiente no servidor (.env, secrets CI, Vault)
✅ Cloudflare Workers secrets / AWS Parameter Store
Fluxo correto:
Browser → POST /api/chat (seu domínio)
↓
Backend lê process.env.OPENAI_API_KEY
↓
Chama OpenAI
Roles em messages
| Role | Função |
|---|---|
system |
Regras fixas, persona, formato de saída |
user |
Mensagem do usuário final |
assistant |
Respostas anteriores do modelo (histórico) |
Ordem importa: system primeiro, depois alternância user/assistant cronológica.
Headers úteis
Authorization: Bearer <key>Content-Type: application/jsonOpenAI-Organization(opcional, multi-org)- Timeout no cliente HTTP — 30–60s; LLM pode demorar
Checklist antes da primeira chamada
- Conta criada + billing ativo
- Key gerada com escopo mínimo
.envno.gitignore- Endpoint de teste no backend (não no Postman com key exposta em screenshot)
Resumo
- LLM via HTTP POST + JSON — igual qualquer REST
- Key só no backend; frontend fala com seu API
messages[]+model+ parâmetros = contrato padrão- Leia
usageeerrorem toda resposta