Zum Inhalt springen
SDKs

SDKs

Jedes OpenAI- oder Anthropic-SDK funktioniert sofort.

Shannon spricht die Wire-Formate von OpenAI und Anthropic, sodass Sie die offiziellen SDKs beider so verwenden, wie sie sind. Sie ändern drei Werte im Client: die Base-URL, den API-Key und die Modell-ID. Der Rest Ihres Codes bleibt gleich.

Was einzustellen ist

Einstellung OpenAI-SDKs Anthropic-SDKs
Base-URL https://api.shannon-ai.com/v1 https://api.shannon-ai.com
API-Key Ihr Shannon-Key. Das SDK sendet ihn als Authorization: Bearer. Ihr Shannon-Key. Das SDK sendet ihn als x-api-key.
Modell Eine veröffentlichte Modell-ID, zum Beispiel shannon-3. Eine veröffentlichte Modell-ID, zum Beispiel shannon-1.6-lite.
Endpunkte, die es erreicht /v1/chat/completions, /v1/responses, /v1/models /v1/messages, /v1/messages/count_tokens
Umgebungsvariablen OPENAI_API_KEY und OPENAI_BASE_URL, gelesen von den Python- und JavaScript-SDKs, wenn Sie keinen Wert übergeben. ANTHROPIC_API_KEY und ANTHROPIC_BASE_URL, gelesen von den Python- und TypeScript-SDKs, wenn Sie keinen Wert übergeben.

Die beiden Base-URLs unterscheiden sich um /v1: Ein OpenAI-SDK hängt /chat/completions an seine Base-URL an, ein Anthropic-SDK hängt /v1/messages an. Ein Modellname, den Shannon nicht veröffentlicht, wird mit 400 und unknown model beantwortet. Modelle & Preise

Ihren Key finden Sie auf der Seite Keys & Nutzung. Keys & Nutzung

OpenAI-SDKs

Die offiziellen OpenAI-SDKs rufen POST /v1/chat/completions und POST /v1/responses auf. Jedes Beispiel sendet eine User-Nachricht und gibt die Antwort aus.

# 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)
Sprache Installation Option für die Base-URL Quelle
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

Jedes Feld der beiden Endpunkte ist auf deren eigenen Seiten beschrieben. Chat Completions Responses API

Anthropic-SDKs

Die offiziellen Anthropic-SDKs rufen POST /v1/messages auf. Sie verlangen max_tokens bei jedem Aufruf, daher verwenden die Beispiele shannon-1.6-lite, das es anwendet. Jedes Beispiel gibt die Textblöcke der Antwort aus.

# 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)
Sprache Installation Option für die Base-URL Quelle
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

Das Messages-Format und seine Unterschiede stehen auf der Seite zur Anthropic-Kompatibilität. Anthropic‑Format

Worauf sich die SDKs verlassen können

  • Ein Anfragefeld, das die API nicht verwendet, wird akzeptiert. Ein Feld, das die API kennt und das mit dem falschen Typ gesendet wird, wird mit 422 beantwortet.
  • Die Version- und Beta-Header, die die SDKs hinzufügen (anthropic-version, anthropic-beta, openai-beta), werden akzeptiert. Keiner davon ist erforderlich.
  • Das model einer Antwort ist die veröffentlichte ID, sodass Sie es unverändert zurücksenden können.
  • Bei /v1/messages kann eine Antwort mit einem thinking-Block beginnen. Lesen Sie die Blöcke vom Typ text, statt den ersten Block zu nehmen.
  • Streaming funktioniert über die eigenen Stream-Helfer des SDK. Die Nutzungsdaten treffen am Ende jedes Streams ein.
  • Jede Antwort enthält einen Header x-request-id. Senden Sie Ihren eigenen x-request-id, und derselbe Wert kommt zurück.

Community-SDKs

Clients, die andere Autoren für die OpenAI API geschrieben haben, funktionieren genauso: Geben Sie dem Client die Base-URL mit /v1, Ihren Key und eine Shannon-Modell-ID. Sie werden von ihren Autoren gepflegt, nicht von Shannon.

Sprache Installation 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

Ohne SDK

Sie brauchen kein SDK. Jeder HTTP-Client, der JSON senden kann, funktioniert:

  • POST mit einem JSON-Body und dem Header Content-Type: application/json. Ohne ihn wird die Anfrage mit 415 beantwortet.
  • Ihr Key in Authorization: Bearer <key> oder in x-api-key: <key>. Beides funktioniert bei jedem Endpunkt.
  • Ein Body von bis zu 32 MiB.
  • Mit "stream": true ist die Antwort ein Server-Sent-Event-Stream (text/event-stream). Lesen Sie ihn Zeile für Zeile und puffern Sie ihn nicht.
  • Ein Fehler ist ein JSON-Body mit error.type und error.message, neben dem HTTP-Status.
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!"}]
  }'

Zu den Events eines Streams und den Fehlertypen siehe: Streaming Fehlerbehandlung