ShvIA

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#

bash
export ANTHROPIC_BASE_URL="https://ai.shvia.org"
export ANTHROPIC_AUTH_TOKEN="your key"
export ANTHROPIC_MODEL="a model id from GET /v1/models"
claude

Para 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#

bash
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:

python
import os
from openai import OpenAI

client = OpenAI(base_url="https://ai.shvia.org/v1", api_key=os.environ["SHVIA_API_KEY"])
javascript
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#

python
import os
import anthropic

client = anthropic.Anthropic(base_url="https://ai.shvia.org", api_key=os.environ["SHVIA_API_KEY"])
javascript
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çãoValor
API ProviderOpenAI Compatible
Base URLhttps://ai.shvia.org/v1
API Keya sua chave
Model IDum 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:

json
{
  "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#

bash
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
401a 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 stringum cliente que envia partes de conteúdo ao chat completions
403um modelo que o seu grupo não pode usar, ou uma cota esgotada. Veja limites e cotas
uma resposta de um modelo inesperadoum nome de modelo que o gateway não conhece, ou um modelo de nuvem para o qual você não tem chave. Veja modelos
429o limite de requisições. Espere Retry-After