Integrações de SDK e frameworks
Todo SDK se conecta ao GateLLM com os mesmos três passos. Encontre seu SDK, anote a convenção de base_url e a armadilha dele, e então copie o padrão.
O gateway é orientado a protocolo: qualquer que seja o SDK que você use, contanto que ele fale OpenAI / Anthropic / Gemini / DashScope / Realtime / MCP, apontar o base_url para o gateway e trocar por uma chave de acesso permite chamar qualquer modelo configurado — incluindo chamadas entre protocolos para modelos de outros fornecedores.
Aponte o base_url para o gateway
Padrão https://your-gateway.gatellm.io — incluir ou não /v1 depende do SDK (cada exemplo traz o valor exato).
Troque por uma chave de acesso do gateway
Não é uma chave upstream sk-… — a mesma chave de acesso é montada no cabeçalho que o seu SDK espera.
Use o nome de modelo do gateway
Aquele que você configurou no console — não o nome oficial do fornecedor.
Authorization: Bearer <key>x-api-key: <key>x-goog-api-key: <key>Matriz de seleção de SDK
| SDK / framework | Linguagem | Protocolo | Documentação |
|---|---|---|---|
SDKs oficiais dos fornecedoresExemplos no GitHub ↗ | |||
| OpenAI SDK | Python, Node.js | OpenAI | Documentação |
| Anthropic SDK | Python, Node.js | Anthropic | Documentação |
| Google GenAI SDK | Python, JavaScript | Gemini | Documentação |
| OpenAI-compatible third parties | Python, Node.js | OpenAI-compatible | Documentação |
DashScope nativo | |||
| DashScope SDK | Python | DashScope | Documentação |
SDKs e gateways unificadosExemplos no GitHub ↗ | |||
| Vercel AI SDK | TypeScript | OpenAI / Anthropic | Documentação |
| LiteLLM | Python | OpenAI-compatible | Documentação |
| Portkey | Node.js, Python | OpenAI-compatible | Documentação |
| Braintrust / Langbase | TypeScript, Python | OpenAI-compatible | Documentação |
| Semantic Kernel | Python, .NET | OpenAI-compatible | Documentação |
| Spring AI | Java | OpenAI-compatible | Documentação |
Frameworks de orquestraçãoExemplos no GitHub ↗ | |||
| LangChain | Python, TypeScript | OpenAI / Anthropic | Documentação |
| LangGraph | Python, TypeScript | OpenAI / Anthropic | Documentação |
| LlamaIndex | Python, TypeScript | OpenAI-compatible | Documentação |
| CrewAI | Python | OpenAI-compatible (LiteLLM) | Documentação |
| AutoGen / AG2 | Python | OpenAI-compatible | Documentação |
| DSPy | Python | OpenAI-compatible | Documentação |
| Haystack | Python | OpenAI-compatible | Documentação |
| Llama Stack | Python | OpenAI-compatible | Documentação |
SDKs de agentes | |||
| OpenAI Agents SDK | Python, TypeScript | OpenAI Responses | Documentação |
| Claude Agent SDK | Python, TypeScript | Anthropic | Documentação |
| Pydantic AI | Python | OpenAI-compatible | Documentação |
| Google ADK | Python | OpenAI-compatible (LiteLLM) | Documentação |
| Mastra | TypeScript | OpenAI-compatible | Documentação |
| Microsoft Agent Framework | .NET, Python | OpenAI-compatible | Documentação |
| MCP SDK | Python, TypeScript | MCP | Documentação |
Tempo real e áudio | |||
| Realtime WebSocket | Any WS client | OpenAI Realtime | Documentação |
| openai_audio (ASR / TTS) | Python, Node.js | OpenAI audio | Documentação |
Local / auto-hospedado | |||
| Ollama | REST | OpenAI-compatible (upstream) | Documentação |
| vLLM | REST | OpenAI-compatible (upstream) | Documentação |
| llama.cpp server | REST | OpenAI-compatible (upstream) | Documentação |
| SGLang | REST | OpenAI-compatible (upstream) | Documentação |
| Text Generation Inference (TGI) | REST | OpenAI-compatible (upstream) | Documentação |
| LM Studio | REST | OpenAI-compatible (upstream) | Documentação |
Armadilhas
Não é o nome oficial do fornecedor nem o ID do modelo upstream — é o nome que você deu no console. Nome errado → 404 model_not_found.
O SDK OpenAI usa /v1; o SDK Anthropic usa a raiz (ele mesmo acrescenta /v1/messages); o createAnthropic do Vercel AI SDK usa /v1 (ele acrescenta /messages). Errar isso adiciona ou remove um segmento de caminho.
Um max_tokens pode virar max_output_tokens com limite inferior (por exemplo, ≥16) quando o upstream é um modelo de protocolo Responses — valor pequeno demais → 400.
Conteúdo e assinaturas de raciocínio do Claude / Gemini passam adiante ou são removidos — pegue o elemento com type == "text" do array content, não presuma que content[0] é texto.
Ele chama a API Responses, não Chat Completions. Se o upstream for openai (Chat), troque explicitamente com OpenAIChatCompletionsModel; se for openai_response, um nome de modelo em string funciona como está.
A classe OpenAI só aceita famílias que reconhece e rejeita nomes personalizados do gateway — use OpenAILike (Python) ou declare as informações do modelo explicitamente.
base_url não é um parâmetro do framework — é a variável de ambiente OPENAI_API_BASE, e o modelo precisa do prefixo openai/.
Nomes de modelo desconhecidos geram erro na lista padrão — declare model_info explicitamente para contornar a verificação.
O base_url vai por http_options.base_url (sem /v1) e a chave é montada no cabeçalho x-goog-api-key.