Ir para o conteúdo
SDKs

SDKs

Qualquer SDK da OpenAI ou da Anthropic funciona sem configuração extra.

A Shannon fala os formatos de comunicação da OpenAI e da Anthropic, então você usa os SDKs oficiais de ambas como são. Você altera três valores no cliente: a URL base, a chave de API e o id do modelo. O restante do seu código permanece igual.

O que configurar

Configuração SDKs da OpenAI SDKs da Anthropic
URL base https://api.shannon-ai.com/v1 https://api.shannon-ai.com
Chave de API Sua chave Shannon. O SDK a envia como Authorization: Bearer. Sua chave Shannon. O SDK a envia como x-api-key.
Modelo Um id de modelo publicado, por exemplo shannon-3. Um id de modelo publicado, por exemplo shannon-1.6-lite.
Endpoints que alcança /v1/chat/completions, /v1/responses, /v1/models /v1/messages, /v1/messages/count_tokens
Variáveis de ambiente OPENAI_API_KEY e OPENAI_BASE_URL, lidas pelos SDKs de Python e JavaScript quando você não passa nenhum valor. ANTHROPIC_API_KEY e ANTHROPIC_BASE_URL, lidas pelos SDKs de Python e TypeScript quando você não passa nenhum valor.

As duas URLs base diferem por /v1: um SDK da OpenAI acrescenta /chat/completions à sua URL base, um SDK da Anthropic acrescenta /v1/messages. Um nome de modelo que a Shannon não publica é respondido com 400 e unknown model. Modelos e preços

Sua chave está na página Chaves e uso. Chaves e uso

SDKs da OpenAI

Os SDKs oficiais da OpenAI chamam POST /v1/chat/completions e POST /v1/responses. Cada exemplo envia uma mensagem de usuário e imprime a resposta.

# pip install openai
from openai import OpenAI

client = OpenAI(
    api_key="YOUR_API_KEY",
    base_url="https://api.shannon-ai.com/v1",
)

response = client.chat.completions.create(
    model="shannon-3",
    messages=[{"role": "user", "content": "Hello, Shannon!"}],
)
print(response.choices[0].message.content)
Linguagem Instalação Opção da URL base Código-fonte
Python pip install openai base_url openai/openai-python
JavaScript / TypeScript npm install openai baseURL openai/openai-node
Go go get github.com/openai/openai-go/v3 option.WithBaseURL openai/openai-go
Java com.openai:openai-java baseUrl openai/openai-java
.NET dotnet add package OpenAI OpenAIClientOptions.Endpoint openai/openai-dotnet

Cada campo dos dois endpoints é descrito nas suas próprias páginas. Chat Completions API Responses

SDKs da Anthropic

Os SDKs oficiais da Anthropic chamam POST /v1/messages. Eles exigem max_tokens em toda chamada, por isso os exemplos usam shannon-1.6-lite, que o aplica. Cada exemplo imprime os blocos de texto da resposta.

# pip install anthropic
import anthropic

client = anthropic.Anthropic(
    api_key="YOUR_API_KEY",
    base_url="https://api.shannon-ai.com",
)

message = client.messages.create(
    model="shannon-1.6-lite",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Hello, Shannon!"}],
)
for block in message.content:
    if block.type == "text":
        print(block.text)
Linguagem Instalação Opção da URL base Código-fonte
Python pip install anthropic base_url anthropics/anthropic-sdk-python
TypeScript npm install @anthropic-ai/sdk baseURL anthropics/anthropic-sdk-typescript
Go go get github.com/anthropics/anthropic-sdk-go option.WithBaseURL anthropics/anthropic-sdk-go
Java com.anthropic:anthropic-java baseUrl anthropics/anthropic-sdk-java

O formato Messages e suas diferenças estão na página de compatibilidade com a Anthropic. Formato Anthropic

Em que os SDKs podem confiar

  • Um campo de requisição que a API não usa é aceito. Um campo que a API conhece, enviado com o tipo errado, é respondido com 422.
  • Os cabeçalhos de versão e beta que os SDKs acrescentam (anthropic-version, anthropic-beta, openai-beta) são aceitos. Nenhum deles é obrigatório.
  • O model de uma resposta é o id publicado, então você pode enviá-lo de volta como está.
  • Em /v1/messages, uma resposta pode começar com um bloco thinking. Leia os blocos do tipo text em vez de pegar o primeiro bloco.
  • O streaming funciona pelos helpers de stream do próprio SDK. O uso chega no fim de todo stream.
  • Toda resposta traz um cabeçalho x-request-id. Envie o seu próprio x-request-id e o mesmo valor volta.

SDKs da comunidade

Clientes escritos para a API da OpenAI por outros autores funcionam do mesmo jeito: informe ao cliente a URL base com /v1, a sua chave e um id de modelo Shannon. Eles são mantidos pelos seus autores, não pela Shannon.

Linguagem Instalação Cliente
Go go get github.com/sashabaranov/go-openai sashabaranov/go-openai
Ruby gem install ruby-openai alexrudall/ruby-openai
PHP composer require openai-php/client openai-php/client
Rust cargo add async-openai 64bit/async-openai

Sem um SDK

Você não precisa de um SDK. Qualquer cliente HTTP que consiga enviar JSON funciona:

  • POST com um corpo JSON e o cabeçalho Content-Type: application/json. Sem ele, a requisição é respondida com 415.
  • Sua chave em Authorization: Bearer <key> ou em x-api-key: <key>. Ambos funcionam em todos os endpoints.
  • Um corpo de até 32 MiB.
  • Com "stream": true, a resposta é um stream de server-sent events (text/event-stream). Leia-o linha por linha e não o armazene em buffer.
  • Um erro é um corpo JSON com error.type e error.message, junto com o status HTTP.
curl https://api.shannon-ai.com/v1/chat/completions \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "shannon-3",
    "messages": [{"role": "user", "content": "Hello, Shannon!"}]
  }'

Para os eventos de um stream e os tipos de erro, veja: Streaming Tratamento de erros