inference.eu

POST /v1/chat/completions

Chat-Completions-API: OpenAI-kompatibel, verarbeitet in der EU

Über den Chat-Completions-Endpunkt erzeugen Sie mit der inference.eu API Text. Sie schicken eine Liste von Nachrichten, wählen ein Open-Weight-Modell und erhalten die Antwort im gleichen JSON-Format wie bei der OpenAI API. Bestehender Code und die üblichen SDKs funktionieren, sobald Sie Basis-URL und Schlüssel austauschen. Jede Anfrage wird in europäischen Rechenzentren verarbeitet.

  1. 01API-Format: OpenAI
  2. 02Rechenzentren in der EU
  3. 03Durch einen AV-Vertrag abgedeckt
POST /v1/chat/completions
curl https://api.inference.eu/v1/chat/completions \
  -H "Authorization: Bearer $INFERENCE_EU_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-oss-120b",
    "messages": [
      {"role": "system", "content": "You answer questions about EU employment law in plain English."},
      {"role": "user", "content": "How long is the minimum paid annual leave in the EU?"}
    ],
    "temperature": 0.3,
    "max_tokens": 400
  }'

Was der Endpunkt leistet

POST /v1/chat/completions nimmt einen Gesprächsverlauf entgegen und liefert die nächste Antwort des Assistenten. Der Verlauf besteht aus Nachrichten mit role (system, user, assistant oder tool) und content. Das Modell liest bei jedem Aufruf die komplette Liste, die API selbst speichert nichts. Um ein Gespräch fortzusetzen, hängen Sie Antwort und neue Frage an und senden die Liste erneut.

Da das Format dem von OpenAI entspricht, funktionieren die offiziellen SDKs für Python und JavaScript, LangChain, LlamaIndex und die meisten Agent-Frameworks ohne Adapter. Das Modell wählen Sie über das Feld model.

Die wichtigsten Felder der Anfrage

Pflicht sind nur model und messages. Mit max_tokens begrenzen Sie die Länge der Antwort, temperature und top_p steuern die Streuung: Für Extraktion und Klassifizierung empfiehlt sich ein niedriger Wert, für Entwürfe ein höherer. stop beendet die Ausgabe bei einer bestimmten Zeichenfolge, seed macht Ergebnisse besser reproduzierbar.

Mit stream: true erhalten Sie Tokens, während sie entstehen. Über tools darf das Modell Ihre Funktionen aufrufen, über response_format erzwingen Sie JSON nach einem Schema. Bilder übergeben Sie bei Vision-Modellen als image_url in content. Nicht unterstützte Parameter werden ignoriert oder mit einer klaren Fehlermeldung abgelehnt.

Aufbau der Antwort

Eine erfolgreiche Anfrage liefert ein Objekt mit id, dem antwortenden model und einem Array choices. Den Antworttext finden Sie in choices[0].message.content. Möchte das Modell ein Werkzeug aufrufen, stehen Funktionsname und JSON-Argumente stattdessen in message.tool_calls.

finish_reason nennt den Grund für das Ende der Ausgabe: stop bedeutet ein regulärer Abschluss, length das Erreichen von max_tokens, tool_calls das Warten auf Ergebnisse Ihrer Werkzeuge. Das Objekt usage meldet prompt_tokens, completion_tokens und total_tokens. Auf dieser Basis wird abgerechnet, und genau diese Werte sollten Sie pro Funktion protokollieren.

Ein bewährtes Muster für Produktfunktionen

Die meisten Funktionen in einem Produkt folgen demselben Aufbau: eine feste Systemnachricht mit Ton und Regeln, etwas abgerufener Kontext und die Frage der Nutzerin oder des Nutzers. Halten Sie die Systemnachricht über alle Anfragen hinweg konstant, damit Prompt-Caching sie wiederverwenden kann, und stellen Sie variable Inhalte ans Ende.

Wenn ein Programm das Ergebnis weiterverarbeitet, etwa bei Tags, Routing oder extrahierten Feldern, kombinieren Sie eine niedrige temperature mit response_format. So erhalten Sie gültiges JSON statt Fließtext. In Chat-Oberflächen lohnt sich Streaming, und ältere Gesprächsrunden sollten Sie kürzen oder zusammenfassen, bevor das Kontextfenster voll ist.

Fehler und Sonderfälle

Fehler folgen dem OpenAI-Format: ein HTTP-Status und ein Objekt error mit message, type und code. Ein 400 weist meist auf ein ungültiges Feld oder einen Prompt hin, der das Kontextfenster überschreitet. 401 steht für einen fehlenden oder falschen Schlüssel, 404 für eine unbekannte Modell-ID, 429 für ein erreichtes Limit Ihres Tarifs.

Prüfen Sie finish_reason bei jeder Antwort. Steht dort length, wurde die Antwort abgeschnitten: Erhöhen Sie max_tokens oder bitten Sie um eine kürzere Antwort. Wiederholen Sie Anfragen mit 429 oder 5xx mit exponentiellem Backoff und beachten Sie den Header Retry-After.

Chat completions: häufige Fragen

Die Fragen, die uns Einkauf, Entwicklung und Rechtsabteilungen am häufigsten stellen. Etwas fehlt? Fragen Sie uns direkt.

Frage stellen

Verlagern Sie Ihre KI-Workloads auf europäische Infrastruktur

Sagen Sie uns, welche Modelle Sie nutzen und wie viel Verkehr Sie ungefähr haben. Wir antworten innerhalb eines Werktags mit Preisen und nächsten Schritten.

  • Antwort innerhalb eines Werktags
  • Preise für Ihr Volumen
  • AV-Vertrag unterschriftsreif