API-Referenz
Chat Completions
POST /v1/chat/completions – Parameter, Nachrichtenformat und Antwort.
POST https://api.promodelhub.de/v1/chat/completionsErzeugt die Antwort des Modells auf einen Gesprächsverlauf. Derselbe Endpunkt deckt Streaming, Reasoning, Tool-Calling, strukturierte Ausgaben und Bildeingabe ab.
Beispiel
curl https://api.promodelhub.de/v1/chat/completions \
-H "Authorization: Bearer $PRO_MODEL_HUB_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gemma-4-31b",
"messages": [
{"role": "system", "content": "Antworte kurz und auf Deutsch."},
{"role": "user", "content": "Was ist der Unterschied zwischen RAM und Festplatte?"}
],
"temperature": 0.3,
"max_tokens": 300
}'Parameter
| Parameter | Typ | Beschreibung |
|---|---|---|
model | string, Pflicht | API-ID des Modells, siehe Modelle |
messages | array, Pflicht | Gesprächsverlauf, siehe unten |
max_tokens | integer | maximale Länge der Antwort in Token (inklusive Reasoning). max_completion_tokens wird ebenfalls akzeptiert |
temperature | number | Zufälligkeit, 0 bis 2. Niedrig (0–0,3) für Fakten und Extraktion, höher für kreative Texte |
top_p | number | Nucleus Sampling, Alternative zu temperature |
stop | string oder array | Die Ausgabe endet vor dieser Zeichenfolge |
n | integer | Anzahl alternativer Antworten (jede wird als Output berechnet) |
seed | integer | Startwert für den Zufall, macht Antworten besser reproduzierbar (nicht garantiert) |
presence_penalty, frequency_penalty | number | verringern Wiederholungen, -2 bis 2 |
logprobs, top_logprobs | boolean, integer | Wahrscheinlichkeiten der erzeugten Token zurückgeben |
stream | boolean | Antwort als Server-Sent Events, siehe Streaming |
stream_options | object | {"include_usage": true} liefert beim Streaming die Token-Zahlen mit |
tools, tool_choice | array, string/object | Tool-Calling |
response_format | object | JSON-Ausgabe, optional nach Schema, siehe Strukturierte Ausgaben |
reasoning_effort | string | Denkmodus steuern, siehe Reasoning |
chat_template_kwargs | object | modellspezifische Optionen, z. B. {"enable_thinking": true} (Reasoning) |
Nachrichten
Jede Nachricht hat eine role und einen content:
| Rolle | Zweck |
|---|---|
system | Anweisungen an das Modell (Rolle, Stil, Regeln). Steht am Anfang |
user | Eingaben des Nutzers |
assistant | frühere Antworten des Modells, inklusive tool_calls |
tool | Ergebnis eines Tool-Aufrufs, mit tool_call_id |
Die API speichert keinen Gesprächszustand. Für einen Chat schickst du bei jedem Request den kompletten bisherigen Verlauf mit – und er zählt jedes Mal als Input (Abrechnung).
content ist ein String oder – für Bilder – ein Array aus Teilen:
{
"role": "user",
"content": [
{"type": "text", "text": "Was steht auf dem Schild?"},
{"type": "image_url", "image_url": {"url": "data:image/jpeg;base64,/9j/4AAQ..."}}
]
}Antwort
{
"id": "chatcmpl-a76caf6b4319df57",
"object": "chat.completion",
"created": 1790777031,
"model": "gemma-4-31b",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "RAM ist der schnelle Arbeitsspeicher ...",
"reasoning_content": null,
"tool_calls": null
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 41,
"completion_tokens": 120,
"total_tokens": 161,
"completion_tokens_details": { "reasoning_tokens": 0 }
}
}| Feld | Bedeutung |
|---|---|
choices[].message.content | die Antwort. Kann null sein, wenn das Modell nur Tools aufruft oder max_tokens schon beim Reasoning erreicht war |
choices[].message.reasoning_content | Gedankengang bei eingeschaltetem Reasoning, sonst nicht vorhanden |
choices[].message.tool_calls | angeforderte Tool-Aufrufe |
choices[].finish_reason | stop (fertig), length (max_tokens oder Kontextfenster erreicht), tool_calls (Modell wartet auf Tool-Ergebnisse) |
usage | abgerechnete Token, siehe Abrechnung |
Die Antwort kann weitere Felder enthalten (z. B. provider_specific_fields). Ignoriere unbekannte Felder – wir ergänzen gelegentlich neue.