Unsere KI-Chat-Plattform https://ki-chat.uni-mainz.de unterstützt nicht nur interaktiven Chat, sondern bietet auch OpenAI-API-kompatible Endpunkte für eine nahtlose Integration in eigene Anwendungen. Auf dieser Seite finden Sie grundlegende Anweisungen zur Nutzung dieser Funktion.
Erste Schritte
Um die API zu nutzen, müssen Sie einen API-Key aus der KI-Chat@JGU-Oberfläche beziehen:
- Melden Sie sich bei KI-Chat@JGU unter https://ki-chat.uni-mainz.de an.
- Klicken Sie auf Ihr Avatar-Bild rechts oben und dann auf Einstellungen.
- Navigieren Sie im geöffneten Fenster zu Konto.
- Klicken Sie unter API-Schlüssel auf Neuen Schlüssel erstellen.
- Kopieren Sie den generierten API-Key mit dem Kopier-Button und speichern Sie ihn sicher.
Hinweis: Bitte stellen Sie sicher, dass Ihr API-Key vertraulich bleibt.
API-Endpunkte
Die API-Endpunkte unter https://ki-chat.uni-mainz.de/api sind mit dem OpenAI-API-Standard kompatibel, wie in der offiziellen Referenz beschrieben (https://platform.openai.com/docs/api-reference). Nicht alle Endpunkte und Funktionen werden jedoch zwangsläufig unterstützt.
Derzeit bieten wir die Endpunkte /models
, /chat/completions
und embeddings
an. Für alle Endpunkte ist eine Authentifizierung mit Ihrem persönlichen API-Key als Bearer-Token im Authorization-Header erforderlich. Authorization: Bearer API_KEY
Im Folgenden finden Sie grundlegende Anweisungen für jeden Endpunkt inklusive Beispielanfragen, die mithilfe des Kommandozeilen-Tools curl
erstellt werden.
/models
Abrufen einer Liste aller verfügbaren Modelle.
Beispielanfrage:
curl -H "Authorization: Bearer API_KEY" https://ki-chat.uni-mainz.de/api/models
OpenAI-API Referenz: https://platform.openai.com/docs/api-reference/models/list
/chat/completions
Generieren einer Chat-Nachricht ausgehend vom aktuellen Nachrichtenverlauf.
Beispielanfrage:
curl -X POST https://ki-chat.uni-mainz.de/api/chat/completions \
-H "Authorization: Bearer API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "GPT OSS 120B",
"messages": [
{"role": "user", "content": "Why is the sky blue?"}
]
}'
Hinweis: Verwenden Sie den Parameter "stream". So erhalten Sie statt vollständiger Antworten einen Delta-Stream.
OpenAI-API Referenz: https://platform.openai.com/docs/api-reference/chat/create
/embeddings
Generieren von Embeddings für Textabschnitte mithilfe des bge-m3
Embedding-Modells.
Beispielanfrage:
curl -X POST https://ki-chat.uni-mainz.de/api/embeddings \
-H "Authorization: Bearer API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "bge-m3",
"input": ["Open WebUI is great!", "Let's generate embeddings."]
}'
Hinweis: Für optimale Leistung bündeln Sie mehrere Abschnitte pro Anfrage.
OpenAI-API Referenz: https://platform.openai.com/docs/api-reference/embeddings
Nutzungsbegrenzungen
Um eine faire Nutzung unseres Systems zu gewährleisten, gelten aktuell folgende Begrenzungen:
Kontextbegrenzung
- 65.536 Eingabetokens maximaler Kontextfenster
- 8.192 Ausgabetokens maximal für Nicht-Reasoning-Modelle
- 16.384 Ausgabetokens maximal für Reasoning-Modelle
Ratenbegrenzung
- Max. 2 parallele
/chat/completions
Anfragen - Max. 1 parallele
/embeddings
Anfrage (bitte stets mehrere Textabschnitte zusammen schicken) - Max. 1 API-Anfrage pro Sekunde über längere Zeit
- Pro 5 Minuten: Max. 200.000 gewichtete Tokens, berechnet als:
4 × Ausgabetokens + 1 × Eingabetokens (Kein Cache-Treffer) + 0.1 × Eingabetokens (Cache-Treffer)
Wenn Sie diese Limits einhalten, erhalten Sie niemals den Antwortstatus 429 (Too Many Requests).
Spezifische Funktionen
GPT-OSS Reasoning-Effort
Das GPT-OSS-Modell unterstützt den reasoning_effort
-Parameter zur Steuerung der Menge generierter Reasoning-Tokens:
{
"model": "GPT OSS 120B",
"messages": [{"role": "user", "content": "Explain quantum physics simply"}],
"reasoning_effort": "medium"
}
Verfügbare Werte
"low"
Minimales Reasoning (schnellere Antwort)
"medium"
Ausgeglichenes Reasoning (Standard)
"high"
Umgfassendes Reasoning (gründlicher, aber langsamer)
Function Calling
Alle unsere Modelle außer Gemma3 27B unterstützen natives Function Calling über die /chat/completions
API.
Mehr erfahren: https://platform.openai.com/docs/guides/function-calling
Beispielanfrage:
curl -X POST https://ki-chat.uni-mainz.de/api/chat/completions \
-H "Authorization: Bearer API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "GPT OSS 120B",
"messages": [
{
"role": "user",
"content": "What is the weather like in Boston today?"
}
],
"tools": [
{
"type": "function",
"function": {
"name": "get_current_weather",
"description": "Get the current weather in a given location",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, e.g. San Francisco, CA"
},
"unit": {
"type": "string",
"enum": ["celsius", "fahrenheit"]
}
},
"required": ["location"]
}
}
}
],
"tool_choice": "auto"
}'
Die Implementierung eines vollständigen Ablaufs einschließlich Tool-Antworten an das Modell geht jedoch über den Rahmen dieser Anleitung hinaus.
Multimodale Bildverarbeitung
Um Bilder an multimodale Modelle wie Gemma3 27B zu senden, codieren Sie das Bild in Base64 und fügen Sie es in den Nachrichteninhalt ein. Der folgende Python-Code dient als Beispiel:
import requests
import base64
# API Config
api_url = "https://ki-chat.uni-mainz.de/api"
api_key = "API_KEY"
# Path of image to send
image_path = "test.jpg"
# Base64-encode the image
with open(image_path, "rb") as image_file:
encoded_image = base64.b64encode(image_file.read()).decode('utf-8')
# API-Request Payload
payload = {
"model": "Gemma3 27B",
"messages": [
{"role": "user", "content": [
{"type": "text", "text": "What do you see?"},
{
"type": "image_url",
"image_url": {
"url": f"data:image/jpeg;base64,{encoded_image}"
}
}
]}
]
}
headers = {
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json"
}
response = requests.post(
f"{api_url}/chat/completions",
headers=headers,
json=payload
)
print(response.json())