---
title: "Chat-Completions-API aus der EU · OpenAI-kompatibel"
description: "Senden Sie Chat-Nachrichten im OpenAI-Format an Open-Weight-Modelle. Verarbeitung in Rechenzentren in der EU, keine Nutzung Ihrer Daten für Training."
canonical: "https://inference.eu/de/api/chat-completions/"
language: "de"
---

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.

[Vertrieb kontaktieren](https://inference.eu/de/kontakt/)[Beispielanfrage](#example)

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

Endpunkt

POST /v1/chat/completions

Kategorie

Endpunkte

API-Format

OpenAI

Base URL

api.inference.eu/v1

Verarbeitung

Rechenzentren in der EU

Training mit Ihren Daten

Nie

## Chat completions: häufige Fragen

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

Ja. Anfrage, Antwort, Streaming-Format und Fehlerstruktur entsprechen der OpenAI Chat Completions API. Sie richten das OpenAI-SDK auf die Basis-URL von inference.eu, verwenden Ihren inference.eu-Schlüssel und wählen eines der Open-Weight-Modelle aus unserem Katalog. Felder, die nur für OpenAIs eigene Modelle gelten, stehen unter Umständen nicht zur Verfügung.

Prompts und Antworten werden in Rechenzentren in der Europäischen Union verarbeitet. Fällt ein Standort aus, wird der Verkehr an einen anderen europäischen Standort geleitet und nicht an einen Anbieter außerhalb der EU. Ihre Anfragen dienen nur der Beantwortung und werden nie zum Training von Modellen verwendet.

Jedes Chat-, Reasoning-, Code- oder Vision-Modell aus unserem Katalog, zum Beispiel \`gpt-oss-120b\`. Mit \`GET /v1/models\` rufen Sie die genauen IDs ab, die für Ihren Schlüssel freigeschaltet sind, und übergeben eine davon im Feld \`model\`. Details zu jedem Modell finden Sie auf den Modellseiten.

Der Endpunkt speichert keine Gespräche. Ihre Anwendung verwaltet die Nachrichtenliste und sendet sie bei jeder Anfrage mit, ergänzt um die letzte Antwort und die neue Frage. Bei langen Chats sollten Sie ältere Runden entfernen oder zusammenfassen, damit die Anfrage ins Kontextfenster passt.

Das Modell hat aufgehört, weil \`max\_tokens\` oder das Ende des Kontextfensters erreicht war. Die Antwort ist also unvollständig. Erhöhen Sie \`max\_tokens\`, kürzen Sie den Prompt oder bitten Sie um eine knappere Antwort. Bei Reasoning-Modellen zählt auch das Nachdenken zu diesem Limit.

Ja. Beide Frameworks bieten OpenAI-kompatible Chat-Klassen, denen Sie eine eigene Basis-URL und einen API-Schlüssel mitgeben. Tragen Sie die Basis-URL von inference.eu ein, lesen Sie den Schlüssel aus \`INFERENCE\_EU\_API\_KEY\` und geben Sie die Modell-ID an. Tool-Aufrufe und Streaming laufen über dieselben Klassen.

Die Limits hängen von Ihrem Tarif und vom gewählten Modell ab. Wir vereinbaren sie bei der Einrichtung mit Ihnen und erhöhen sie für produktiven Verkehr. Wird ein Limit überschritten, antwortet die API mit HTTP 429, und Ihr Client sollte nach der in \`Retry-After\` genannten Zeit erneut senden.

Nein. Was Sie senden, wird ausschließlich zur Beantwortung der Anfrage genutzt. Prompts und Antworten fließen in kein Training und kein Fine-Tuning, weder bei uns noch anderswo. Wenn Sie Einzelheiten zu Protokollierung und Aufbewahrung für Ihren Vertrag benötigen, bestätigen wir Ihnen diese schriftlich.

Chat Completions ist zustandslos und erwartet eine Nachrichtenliste, so wie der meiste bestehende Code. Die Responses API arbeitet mit \`input\` und \`instructions\`, liefert typisierte Ausgabeelemente und unterstützt eingebaute Werkzeuge wie Websuche und entfernte MCP-Server. Beide Endpunkte greifen auf dieselben Modelle zu.

[Frage stellen](https://inference.eu/de/kontakt/)

## Verwandte Seiten

[API-Überblick](https://inference.eu/de/api/)

-   [StreamingStreamen Sie Tokens offener Modelle während der Generierung, mit Server-Sent Events im OpenAI- und Anthropic-Format. Beispiele, Chunk-Format, Fehler.Anleitungen](https://inference.eu/de/api/streaming/)
-   [Tool callingLassen Sie offene Modelle Ihre Funktionen und APIs aufrufen, mit OpenAI-kompatiblem Tool Calling. Werkzeuge definieren, Schleife ausführen, in der EU.Anleitungen](https://inference.eu/de/api/tool-calling/)
-   [Structured outputsErhalten Sie von offenen Modellen gültiges JSON nach Ihrem Schema, mit OpenAI-kompatiblen Structured Outputs. JSON-Modus, json\_schema, strict und Stolperfallen.Anleitungen](https://inference.eu/de/api/structured-outputs/)
-   [List modelsListen Sie mit GET /v1/models im OpenAI-Format alle Open-Weight-Modelle auf, die Ihr inference.eu-Schlüssel nutzen darf, von Chat bis Embeddings.Endpunkte](https://inference.eu/de/api/models/)

## 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
