GemeinsamKI API

OpenAI-kompatible Schnittstelle des GemeinsamKI-Verbunds

https://api.gemeinsamki.de/v1

Schlüssel

API-Schlüssel legen Sie im Hub unter https://hub.gemeinsamki.de/account an (Abschnitt „API-Schlüssel“). Er gehört in den Kopf Authorization: Bearer <Schlüssel> oder x-api-key. Schlüssel von GemeinsamKI Code (VS Code) gelten hier nicht.

Beispiele

curl:

curl https://api.gemeinsamki.de/v1/chat/completions \
  -H "Authorization: Bearer $GEMEINSAMKI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "auto", "messages": [{"role": "user", "content": "Hallo!"}]}'

Python (Paket openai):

from openai import OpenAI

client = OpenAI(base_url="https://api.gemeinsamki.de/v1", api_key="gki_…")
antwort = client.chat.completions.create(
    model="auto",
    messages=[{"role": "user", "content": "Hallo!"}],
)
print(antwort.choices[0].message.content)

Modelle und "model": "auto"

GET /v1/models listet die Modelle, die gerade auf Geräten des Verbunds geladen und für Ihren Schlüssel freigegeben sind. Mit "model": "auto" (oder ohne Modell) wählt das System ein geeignetes geladenes Modell; bei Bildern ein Bildmodell. Welcher Hub, welches Gerät und welches Modell geantwortet hat, steht in den Antwortköpfen X-GemeinsamKI-Hub, X-GemeinsamKI-Device und X-GemeinsamKI-Model.

Ein bestimmtes Gerät wählen Sie mit modell@gerät (Gerätename oder Geräte-ID ab 6 Zeichen). Für /v1/embeddings gibt es kein auto: Wechselnde Embedding-Modelle machen gespeicherte Vektoren wertlos, das Modell muss angegeben werden.

Endpunkte

MethodePfadZweck
GET/v1/models, /v1/models/{id}Modelle (mit Eintrag auto)
POST/v1/chat/completionsChat, auch mit "stream": true
POST/v1/completionsTextvervollständigung
POST/v1/responsesResponses-API
POST/v1/embeddingsEmbeddings (Modell angeben)
GET/v1/gemeinsamki/keyRegeln und Verbrauch des eigenen Schlüssels

Grenzen

previous_response_id

Bei /v1/responses liegt der Zustand einer Unterhaltung auf dem Gerät, das die vorige Antwort gerechnet hat. Wer mit previous_response_id weiterarbeitet, gibt deshalb das Gerät mit an: "model": "modell@gerät" (Gerät aus dem Kopf X-GemeinsamKI-Device-ID der vorigen Antwort).