Vai al contenuto
SDK

SDK

Qualsiasi SDK di OpenAI o Anthropic funziona subito.

Shannon parla i formati wire di OpenAI e di Anthropic, quindi usi così come sono gli SDK ufficiali di entrambi. Nel client cambi tre valori: il base URL, la chiave API e l'id del modello. Il resto del tuo codice resta uguale.

Cosa impostare

Impostazione SDK OpenAI SDK Anthropic
Base URL https://api.shannon-ai.com/v1 https://api.shannon-ai.com
Chiave API La tua chiave Shannon. L'SDK la invia come Authorization: Bearer. La tua chiave Shannon. L'SDK la invia come x-api-key.
Modello Un id di modello pubblicato, per esempio shannon-3. Un id di modello pubblicato, per esempio shannon-1.6-lite.
Endpoint raggiunti /v1/chat/completions, /v1/responses, /v1/models /v1/messages, /v1/messages/count_tokens
Variabili d'ambiente OPENAI_API_KEY e OPENAI_BASE_URL, lette dagli SDK Python e JavaScript quando non passi alcun valore. ANTHROPIC_API_KEY e ANTHROPIC_BASE_URL, lette dagli SDK Python e TypeScript quando non passi alcun valore.

I due base URL differiscono per /v1: un SDK OpenAI aggiunge /chat/completions al suo base URL, un SDK Anthropic aggiunge /v1/messages. Un nome di modello che Shannon non pubblica riceve risposta 400 e unknown model. Modelli e prezzi

La tua chiave è nella pagina Chiavi e utilizzo. Chiavi e utilizzo

SDK OpenAI

Gli SDK OpenAI ufficiali chiamano POST /v1/chat/completions e POST /v1/responses. Ogni esempio invia un messaggio dell'utente e stampa la risposta.

# 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)
Linguaggio Installazione Opzione del base URL Sorgente
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

Ogni campo dei due endpoint è descritto nelle loro pagine. Chat Completions Responses API

SDK Anthropic

Gli SDK Anthropic ufficiali chiamano POST /v1/messages. Richiedono max_tokens a ogni chiamata, quindi gli esempi usano shannon-1.6-lite, che lo applica. Ogni esempio stampa i blocchi di testo della risposta.

# 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)
Linguaggio Installazione Opzione del base URL Sorgente
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

Il formato Messages e le sue differenze sono nella pagina sulla compatibilità con Anthropic. Formato Anthropic

Su cosa possono contare gli SDK

  • Un campo della richiesta che l'API non usa viene accettato. Un campo che l'API conosce, inviato con il tipo sbagliato, riceve risposta 422.
  • Gli header di versione e beta che gli SDK aggiungono (anthropic-version, anthropic-beta, openai-beta) vengono accettati. Nessuno di essi è obbligatorio.
  • Il model di una risposta è l'id pubblicato, quindi puoi rimandarlo così com'è.
  • Su /v1/messages una risposta può iniziare con un blocco thinking. Leggi i blocchi di tipo text invece di prendere il primo blocco.
  • Lo streaming funziona tramite gli helper di stream propri dell'SDK. L'utilizzo arriva alla fine di ogni stream.
  • Ogni risposta porta un header x-request-id. Invia il tuo x-request-id e lo stesso valore ti torna indietro.

SDK della community

I client scritti per l'API OpenAI da altri autori funzionano allo stesso modo: dai al client il base URL con /v1, la tua chiave e un id di modello Shannon. Sono mantenuti dai loro autori, non da Shannon.

Linguaggio Installazione Client
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

Senza un SDK

Non serve un SDK. Funziona qualsiasi client HTTP in grado di inviare JSON:

  • POST con un corpo JSON e l'header Content-Type: application/json. Senza di esso la richiesta riceve risposta 415.
  • La tua chiave in Authorization: Bearer <key> o in x-api-key: <key>. Entrambi funzionano su ogni endpoint.
  • Un corpo fino a 32 MiB.
  • Con "stream": true la risposta è uno stream di server-sent events (text/event-stream). Leggilo riga per riga e non metterlo in buffer.
  • Un errore è un corpo JSON con error.type e error.message, accanto allo stato 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!"}]
  }'

Per gli eventi di uno stream e i tipi di errore, vedi: Streaming Gestione errori