Docs · Guias
Conecte as suas ferramentas
A maioria das ferramentas precisa de três coisas: uma URL base, a sua chave de API e um id de modelo. Esta página dá os valores para as mais comuns. Comece criando uma chave, veja autenticação, e escolhendo um id de modelo em modelos.
Claude Code#
export ANTHROPIC_BASE_URL="https://ai.shvia.org"
export ANTHROPIC_AUTH_TOKEN="your key"
export ANTHROPIC_MODEL="a model id from GET /v1/models"
claudePara deixar permanente, acrescente essas linhas ao perfil do seu shell. O Claude Code passa então a falar com o gateway por /v1/messages, e o modelo que você escolheu responde, o que não precisa ser um modelo da Anthropic.
O Claude Code envia configurações que o gateway ignora, entre elas max_tokens e thinking, e as imagens são descartadas. As chamadas de ferramenta são traduzidas entre os dois dialetos. Uma única sessão pode usar muitas requisições, então fique de olho no limite de requisições.
SDKs da OpenAI e ferramentas que usam variáveis de ambiente#
export OPENAI_BASE_URL="https://ai.shvia.org/v1"
export OPENAI_API_KEY="your key"Qualquer programa que leia essas duas variáveis vai usar o gateway, e você escolhe o modelo no programa. No código:
import os
from openai import OpenAI
client = OpenAI(base_url="https://ai.shvia.org/v1", api_key=os.environ["SHVIA_API_KEY"])import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://ai.shvia.org/v1", apiKey: process.env.SHVIA_API_KEY });client.chat.completions.create e client.models.list funcionam, e client.responses.create também, para os casos sem estado descritos em responses. client.models.retrieve, client.embeddings.create, client.completions.create e os endpoints de imagem não têm equivalente.
SDKs da Anthropic#
import os
import anthropic
client = anthropic.Anthropic(base_url="https://ai.shvia.org", api_key=os.environ["SHVIA_API_KEY"])import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic({ baseURL: "https://ai.shvia.org", apiKey: process.env.SHVIA_API_KEY });Use em model um id de modelo do gateway. Veja em messages o que é ignorado.
Cline e Roo Code#
Nas configurações da extensão, escolha estes valores:
| Configuração | Valor |
|---|---|
| API Provider | OpenAI Compatible |
| Base URL | https://ai.shvia.org/v1 |
| API Key | a sua chave |
| Model ID | um id de modelo de GET /v1/models |
Estas ferramentas falam com chat completions, que só aceita content em string. Se uma extensão relata um 422 dizendo que o content de uma mensagem tem de ser uma string, ela está enviando partes de conteúdo. As imagens não são suportadas nesse endpoint.
Continue#
Na configuração do Continue, acrescente um modelo com o provedor openai e o gateway como a base da API:
{
"models": [
{
"title": "ShvIA",
"provider": "openai",
"model": "a model id from GET /v1/models",
"apiBase": "https://ai.shvia.org/v1",
"apiKey": "your key"
}
]
}As versões mais novas do Continue leem um arquivo YAML em vez de JSON. Os campos são os mesmos: provider: openai, model, apiBase e apiKey. Onde o arquivo mora depende da sua versão.
curl#
curl https://ai.shvia.org/v1/chat/completions \
-H "Authorization: Bearer $SHVIA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "a model id from GET /v1/models", "messages": [{"role": "user", "content": "hi"}]}'Deixe o app escrever a configuração#
A página da conta do app web do ShvIA tem uma seção "Conectar minha CLI". Ela lista os modelos de GET /v1/models e imprime as configurações do Claude Code, Cline, Roo Code, Continue, das variáveis de ambiente e do curl, com um marcador onde a chave entra. O app desktop também pode salvar as configurações no seu computador por você, no arquivo de configuração da ferramenta.
Quando algo não funciona#
| O que você vê | Causa provável |
|---|---|
401 | a chave está errada, ou expirou, ou o grupo dela não tem acesso à API. Veja autenticação |
404 em /v1/v1/… | um cliente da Anthropic com /v1 na URL base |
422, o conteúdo tem de ser uma string | um cliente que envia partes de conteúdo ao chat completions |
403 | um modelo que o seu grupo não pode usar, ou uma cota esgotada. Veja limites e cotas |
| uma resposta de um modelo inesperado | um nome de modelo que o gateway não conhece, ou um modelo de nuvem para o qual você não tem chave. Veja modelos |
429 | o limite de requisições. Espere Retry-After |