> ## Documentation Index
> Fetch the complete documentation index at: https://docs.infercom.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Reasoning-Modelle mit Infercom implementieren

> Reasoning-Modelle auf Infercom nutzen. Konfigurierbares Thinking, das reasoning-Antwortfeld, Token-Budgetierung und Fehlerbehebung bei abgeschnittenen Antworten.

Reasoning-Modelle verarbeiten Informationen systematisch, um logische Schlussfolgerungen zu ziehen und komplexe Probleme Schritt für Schritt zu lösen. Bevor sie eine endgültige Antwort erzeugen, generieren sie eine interne Gedankenkette - sie durchdenken das Problem, prüfen Alternativen und korrigieren sich selbst. Das macht sie besonders geeignet für Mathematik, Programmierung, mehrstufige Planung und die Analyse mehrdeutiger oder komplexer Eingaben.

## Reasoning-Modelle auf Infercom

Die folgenden Modelle unterstützen Reasoning. Prüfen Sie immer [Unterstützte Modelle](/de/models/infercomcloud-models) für aktuelle Verfügbarkeit und Regionen.

| **Modell-ID**                 | **Region** | **Wie Reasoning gesteuert wird**                       | **Standard**           |
| :---------------------------- | :--------- | :----------------------------------------------------- | :--------------------- |
| `gpt-oss-120b`                | EU         | `reasoning_effort` (`low`, `medium`, `high`)           | `medium`               |
| `gemma-4-31B-it`              | EU         | `chat_template_kwargs: {"enable_thinking": true}`      | **Aus**                |
| `DeepSeek-V3.1`               | Nicht-EU   | Nicht konfigurierbar - reasoniert immer                | Aktiv                  |
| `DeepSeek-V3.2`               | Nicht-EU   | Nicht konfigurierbar - reasoniert immer                | Aktiv                  |
| `MiniMax-M3`                  | Nicht-EU   | Nicht konfigurierbar - reasoniert immer                | Aktiv                  |

Die beiden Steuerungen sind nicht austauschbar und gelten jeweils nur für ein Modell:

- `reasoning_effort` steuert, **wie viel** `gpt-oss-120b` reasoniert. Reasoning lässt sich damit nicht abschalten.
- `enable_thinking` schaltet Reasoning für `gemma-4-31B-it` **ein oder aus**. Dieses Modell reasoniert nur, wenn Sie es anfordern.

Wenn Sie einen dieser Parameter an ein Modell senden, das ihn nicht implementiert, wird er akzeptiert und stillschweigend ignoriert - Sie erhalten keinen Fehler und keine Verhaltensänderung.

## Wie Reasoning in der Antwort erscheint

Reasoning-fähige Modelle geben ihre Gedankenkette in einem dedizierten `reasoning`-Feld der Nachricht zurück, getrennt von der endgültigen Antwort in `content`:

```json
{
  "choices": [
    {
      "message": {
        "role": "assistant",
        "reasoning": "Der Nutzer möchte 17 * 23. 17 * 20 = 340, 17 * 3 = 51, 340 + 51 = 391.",
        "content": "17 * 23 = 391"
      },
      "finish_reason": "stop"
    }
  ]
}
```

Verwenden Sie `reasoning` für Transparenz oder Debugging und `content` für die Antwort, die Sie Nutzern anzeigen.

<Aside type="note">
  Fügen Sie bei mehrteiligen Konversationen nur den endgültigen `content` des Modells zurück in den Nachrichtenverlauf ein - geben Sie vorheriges `reasoning` nicht an die nächste Runde weiter.
</Aside>

## Reasoning-Tokens auslesen

Jede Antwort meldet das erzeugte Reasoning in `usage.completion_tokens_details.reasoning_tokens`. Verwenden Sie dieses Feld für Budgetierung und Abrechnung. Es wird bei allen EU-Modellen befüllt, auch bei Anfragen, die ein Bild enthalten.

```json
{
  "usage": {
    "prompt_tokens": 21,
    "completion_tokens": 872,
    "completion_tokens_details": {
      "reasoning_tokens": 595
    },
    "total_tokens": 893
  }
}
```

Für den Prompt "What is 15 * 37? Explain.":

| Modell | Anfrage | `reasoning_tokens` |
| :----- | :------ | :----------------- |
| `gpt-oss-120b` | Standard | 39 |
| `gemma-4-31B-it` | `chat_template_kwargs: {"enable_thinking": true}` | 595 |
| `gemma-4-31B-it` | Standard, Thinking aus | 0 |

`reasoning_tokens` zählen zu `completion_tokens` und damit zu `max_tokens`. Ziehen Sie den Wert von `completion_tokens` ab, um zu sehen, wie viele Tokens in die sichtbare Antwort geflossen sind. `MiniMax-M3` meldet keine `reasoning_tokens`.

<Aside type="note">
  Das Array `reasoning_details` aus dem OpenAI-Harmony-Format wird nicht zurückgegeben. Verfügbar sind nur der String `reasoning` und die Anzahl `reasoning_tokens`.
</Aside>

## Token-Budget für Reasoning

<ReasoningTokenBudget />

Dies ist die häufigste Ursache für "leere" oder "fehlerhafte" Antworten von Reasoning-Modellen. Da die Gedankenkette zuerst generiert wird und auf Ihr Token-Limit angerechnet wird, wird ein niedriger `max_tokens`-Wert vom Reasoning aufgebraucht, bevor eine Antwort erzeugt wird.

Als Faustregel gilt: Planen Sie je nach Aufgabenkomplexität einige Hundert bis einige Tausend Tokens Spielraum über die erwartete Antwortlänge hinaus ein. Bei schwierigen Mathematik-, Programmier- oder Planungsaufgaben kann das Reasoning lang sein - budgetieren Sie entsprechend.

<Aside type="caution">
  **Eine niedrige Temperatur kann zu nicht endendem Reasoning führen.** Reasoning-Modelle können in eine Wiederholungsschleife geraten und denselben Punkt in leicht abgewandelten Worten wiederholen, bis `max_tokens` aufgebraucht ist. Sie sehen dann `finish_reason: "length"`, eine sehr hohe Anzahl an `reasoning_tokens` und keine brauchbare Antwort.

  Je niedriger die Temperatur, desto wahrscheinlicher ist dies, am ausgeprägtesten bei `temperature=0`. Ein höheres `max_tokens` hilft hier nicht - die Schleife läuft dann lediglich länger.

  **Wenn Sie gar kein `temperature` senden, befinden Sie sich genau in diesem Zustand.** Die Infercom API wendet keinen Standardwert an, sodass die meisten Modelle greedy dekodieren. Das verhält sich wie `temperature=0`. Siehe [Wenn Sie temperature weglassen](/de/models/infercomcloud-models#wenn-sie-temperature-weglassen).

  Eine niedrige Temperatur bleibt eine legitime Wahl für reproduzierbare oder strukturierte Ausgaben. Wenn Sie jedoch eine niedrige Temperatur verwenden und abgeschnittene Antworten sehen, erhöhen Sie zuerst die Temperatur in Richtung des vom Modellanbieter empfohlenen Werts, bevor Sie `max_tokens` weiter erhöhen. Siehe [Empfohlene Sampling-Parameter](/de/models/infercomcloud-models#empfohlene-sampling-parameter).
</Aside>

<Aside type="caution">
  **Eine niedrige Temperatur schaltet zudem `top_k` stillschweigend ab.** Liegt `temperature` unter 0.001 oder fehlt sie, wird `top_k` unabhängig vom gesendeten Wert auf 1 gesetzt. Eine Anfrage mit `top_k: 40` und ohne `temperature` liefert Argmax, ohne dass die Antwort darauf hinweist. Setzen Sie `temperature` explizit, bevor Sie `top_k` anpassen. Siehe [Wie top_k mit temperature zusammenwirkt](/de/models/infercomcloud-models#wie-top_k-mit-temperature-zusammenwirkt).
</Aside>

## Reasoning steuern

### Modelle mit `reasoning_effort`

`gpt-oss-120b` akzeptiert einen `reasoning_effort`-Parameter (`low`, `medium`, `high`), der Latenz und Token-Verbrauch gegen Antwortqualität abwägt. Wenn Sie ihn weglassen, verwendet das Modell `medium`.

<Aside type="note">
  Reasoning lässt sich bei `gpt-oss-120b` nicht deaktivieren. `low` ist das Minimum und erzeugt weiterhin eine kurze Gedankenkette. Werte wie `"none"` oder `"off"` werden mit einem `400` abgelehnt. Wenn Sie ein Modell benötigen, das ohne Reasoning antwortet, verwenden Sie `gemma-4-31B-it`, bei dem Thinking standardmäßig ausgeschaltet ist.
</Aside>

<Tabs syncKey="code">
<TabItem label="Python (OpenAI)">

```python
from openai import OpenAI

client = OpenAI(
    base_url="https://api.infercom.ai/v1",
    api_key="ihr-infercom-api-schluessel",
)

response = client.chat.completions.create(
    model="gpt-oss-120b",
    messages=[{"role": "user", "content": "Ein Schläger und ein Ball kosten zusammen 1,10 €. Der Schläger kostet 1 € mehr als der Ball. Wie viel kostet der Ball?"}],
    reasoning_effort="high",
    max_tokens=2000,
)

print("Reasoning:", response.choices[0].message.reasoning)
print("Antwort:", response.choices[0].message.content)
```

</TabItem>
<TabItem label="cURL">

```bash
curl -s "https://api.infercom.ai/v1/chat/completions" \
  -H "Authorization: Bearer $INFERCOM_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-oss-120b",
    "messages": [{"role": "user", "content": "Ein Schläger und ein Ball kosten zusammen 1,10 €. Der Schläger kostet 1 € mehr als der Ball. Wie viel kostet der Ball?"}],
    "reasoning_effort": "high",
    "max_tokens": 2000
  }'
```

</TabItem>
</Tabs>

### Modelle mit konfigurierbarem Thinking (`enable_thinking`)

`gemma-4-31B-it` verfügt über einen konfigurierbaren Thinking-Modus, den Sie über `chat_template_kwargs` ein- oder ausschalten. Setzen Sie `enable_thinking` auf `true`, damit das Modell vor der Antwort nachdenkt, oder auf `false` für eine direkte Antwort.

**Thinking ist standardmäßig ausgeschaltet.** Wenn Sie `enable_thinking` weglassen, antwortet das Modell direkt und das Feld `reasoning` bleibt leer - das Weglassen verhält sich exakt wie `false`. Sie müssen `true` übergeben, um eine Gedankenkette zu erhalten.

<Aside type="caution">
  `reasoning_effort` hat bei `gemma-4-31B-it` keine Wirkung. Die Anfrage ist erfolgreich, die Ausgabe bleibt jedoch unverändert, ob Sie `low`, `medium` oder `high` senden. Verwenden Sie stattdessen `enable_thinking`.
</Aside>

<Tabs syncKey="code">
<TabItem label="Python (OpenAI)">

```python
from openai import OpenAI

client = OpenAI(
    base_url="https://api.infercom.ai/v1",
    api_key="ihr-infercom-api-schluessel",
)

response = client.chat.completions.create(
    model="gemma-4-31B-it",
    messages=[{"role": "user", "content": "Ein Schläger und ein Ball kosten zusammen 1,10 €. Der Schläger kostet 1 € mehr als der Ball. Wie viel kostet der Ball?"}],
    extra_body={"chat_template_kwargs": {"enable_thinking": True}},
    max_tokens=2000,
)

print("Reasoning:", response.choices[0].message.reasoning)
print("Antwort:", response.choices[0].message.content)
```

</TabItem>
<TabItem label="cURL">

```bash
curl -s "https://api.infercom.ai/v1/chat/completions" \
  -H "Authorization: Bearer $INFERCOM_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gemma-4-31B-it",
    "messages": [{"role": "user", "content": "Ein Schläger und ein Ball kosten zusammen 1,10 €. Der Schläger kostet 1 € mehr als der Ball. Wie viel kostet der Ball?"}],
    "chat_template_kwargs": {"enable_thinking": true},
    "max_tokens": 2000
  }'
```

</TabItem>
</Tabs>

<Aside type="note">
  Übergeben Sie beim OpenAI Python SDK nicht-standardmäßige Parameter wie `chat_template_kwargs` innerhalb von `extra_body`, wie oben gezeigt. Beim direkten Aufruf der API (cURL) fügen Sie `chat_template_kwargs` auf der obersten Ebene des Anfrage-Bodys ein.
</Aside>

### Modelle, die standardmäßig reasonen

`MiniMax-M3` und die DeepSeek-Modelle reasonen standardmäßig - es ist kein zusätzlicher Parameter erforderlich. Senden Sie einfach Ihre Anfrage und lesen Sie die Felder `reasoning` und `content` aus der Antwort.

Diese Modelle bieten keine Steuerung dafür, wie viel sie reasonen. Sie akzeptieren `reasoning_effort` aus Gründen der OpenAI-Kompatibilität, der Parameter ändert ihr Verhalten jedoch nicht. Kalkulieren Sie stattdessen `max_tokens` großzügig, wie oben beschrieben.

## Fehlerbehebung: leere oder abgeschnittene Antworten

Wenn ein Reasoning-Modell ein leeres `content`, eine mitten im Satz abgebrochene Antwort oder scheinbar rohes Thinking in der Ausgabe zurückgibt, liegt die Ursache meist an einem unzureichenden Token-Budget - nicht an einem Modellfehler. Eine zweite, weniger offensichtliche Ursache ist eine Temperatur deutlich unter dem vom Anbieter empfohlenen Wert, die das Modell in eine Wiederholungsschleife führen kann.

<Steps>

1. **finish_reason prüfen**

   Sehen Sie sich `choices[0].finish_reason` in der Antwort an. Der Wert `"length"` bedeutet, dass das Modell Ihr `max_tokens`-Limit erreicht hat, bevor es fertig war. `"stop"` bedeutet, dass es normal abgeschlossen wurde.

2. **max_tokens erhöhen**

   Wenn `finish_reason` `"length"` ist, erhöhen Sie `max_tokens` (bzw. `max_completion_tokens`) und wiederholen Sie die Anfrage. Geben Sie dem Modell genügend Raum sowohl für das Reasoning als auch für die endgültige Antwort.

3. **Temperatur prüfen, wenn ein höheres max_tokens nicht hilft**

   Vergleichen Sie `usage.completion_tokens_details.reasoning_tokens` mit Ihrem `max_tokens`. Wenn das Reasoning auch bei einem höheren Limit erneut das gesamte Budget verbraucht, liegt wahrscheinlich eine Wiederholungsschleife vor. Setzen Sie `temperature` auf den Wert, den der Anbieter für dieses Modell empfiehlt. Prüfen Sie, ob Ihre Anfrage `temperature` überhaupt sendet - ein fehlender Parameter bedeutet Greedy-Decoding, nicht einen mittleren Standardwert.

4. **reasoning- und content-Felder überprüfen**

   Bestätigen Sie, dass `reasoning` die Gedankenkette und `content` die endgültige Antwort enthält. Bei ausreichendem Budget und sinnvoller Temperatur sind beide sauber getrennt.

</Steps>

**Häufige Fehlersignaturen:**

| Symptom | Was Sie sehen | Lösung |
| :------ | :------------ | :----- |
| Leere Antwort | `content` ist `null` oder leer, `finish_reason` ist `"length"` | `max_tokens` erhöhen |
| Abgeschnittene Antwort | `content` bricht mitten im Satz ab, `finish_reason` ist `"length"` | `max_tokens` erhöhen |
| Reasoning gelangt in `content` | Die Gedankenkette erscheint in `content`, weil das Modell abgeschnitten wurde, bevor es die End-of-Thinking-Markierung ausgegeben hat. In diesem Fall bleibt das Feld `reasoning` leer, obwohl `usage.completion_tokens_details.reasoning_tokens` ungleich null ist | `max_tokens` erhöhen |
| Reasoning endet nie | `finish_reason` ist `"length"` und `reasoning_tokens` verbraucht bei jedem gesetzten Limit das gesamte Budget, während die Gedankenkette denselben Punkt wiederholt | Temperatur in Richtung des empfohlenen Werts erhöhen |

## Prompting von Reasoning-Modellen

- Halten Sie System-Prompts minimal. Übermäßige Anweisungen können den Reasoning-Spielraum des Modells einschränken und die Qualität verringern.
- Verzichten Sie auf eigenes "Denke Schritt für Schritt"-Chain-of-Thought-Prompting - das Modell reasont bereits intern. Verwenden Sie klare Zero-Shot- oder Einzelanweisungs-Prompts.
- **Senden Sie `temperature` immer explizit.** Die Infercom API hat keinen Standardwert. Ohne den Parameter dekodieren die meisten Modelle greedy. Das ist die Einstellung, die die oben beschriebene Wiederholungsschleife am ehesten auslöst. Sie setzt zudem `top_k` auf 1, sodass ein gesendetes `top_k` ignoriert wird.
- **Verwenden Sie die Sampling-Parameter, die der Modellanbieter empfiehlt.** Sie unterscheiden sich je Modell und sind unter [Empfohlene Sampling-Parameter](/de/models/infercomcloud-models#empfohlene-sampling-parameter) aufgeführt. Für `gpt-oss-120b` empfiehlt der Anbieter `temperature` 1.0 und `top_p` 1.0.
- `temperature=1.0` bedeutet nicht "maximale Zufälligkeit". Es bedeutet, dass die Wahrscheinlichkeitsverteilung des Modells exakt so verwendet wird, wie sie trainiert wurde. Werte unter 1.0 schärfen sie, Werte über 1.0 flachen sie ab. Die Infercom API akzeptiert Werte von 0 bis 2.

## Anwendungsfälle

### Berichterstellung

Reasoning-Modelle eignen sich gut zur Verarbeitung unstrukturierter Informationen - Rechtsverträge, Finanzberichte oder wissenschaftliche Arbeiten - und erkennen Muster über mehrere Facetten der Eingabe hinweg, bevor sie diese zu einer umfassenden Zusammenfassung verdichten.

### Planung für Workflows und Agenten

Reasoning-Modelle sind hervorragend für mehrdeutige, komplexe Aufgaben geeignet. Sie können komplizierte Probleme zerlegen, Lösungen strategisch planen und Entscheidungen über große Mengen unsicherer Informationen treffen - was sie zu effektiven Planern und Orchestratoren in agentenbasierten Systemen macht.

### Programmierung und Mathematik

Diese Modelle sind effektiv beim Überprüfen und Verbessern von Code, beim Erkennen subtiler Probleme, die bei flüchtigem Lesen übersehen werden, und beim Zerlegen von Mathematikaufgaben in überprüfbare Schritte.

## Best Practices

  <details open>
  <summary>Tokens für Reasoning budgetieren</summary>

    Reasoning wird auf `max_tokens` angerechnet. Setzen Sie das Limit hoch genug für sowohl die Gedankenkette als auch die endgültige Antwort. Wenn Antworten leer oder abgeschnitten zurückkommen, prüfen Sie `finish_reason` - der Wert `"length"` bedeutet, dass Sie `max_tokens` erhöhen müssen.

  </details>
  <details>
  <summary>Latenz und Kosten</summary>

    Reasoning-Ausgaben haben aufgrund des Chain-of-Thought-Prozesses eine höhere Latenz und einen höheren Token-Verbrauch. Erwägen Sie für einfachere Aufgaben ein Nicht-Reasoning-Modell (oder deaktivieren Sie Thinking, sofern das Modell dies unterstützt), um Budget und Antwortzeit zu optimieren.

  </details>
  <details>
  <summary>Streaming</summary>

    Das Aktivieren von Streaming verbessert die wahrgenommene Reaktionsfähigkeit, da Reasoning-Modelle länger für eine vollständige Antwort benötigen. Fügen Sie `stream=True` zu Ihrer Anfrage hinzu, um Tokens anzuzeigen, sobald sie verfügbar sind.

  </details>

## FAQs

  <details>
  <summary>Warum erhalte ich eine leere oder abgeschnittene Antwort mit finish_reason: length?</summary>

    Dafür gibt es zwei häufige Ursachen. Erstens werden Reasoning-Tokens auf `max_tokens` angerechnet, sodass das Budget aufgebraucht sein kann, bevor eine sichtbare Antwort erzeugt wird - erhöhen Sie `max_tokens`. Zweitens kann das Modell bei niedriger Temperatur in eine Wiederholungsschleife geraten, die nie endet - ein höheres `max_tokens` hilft dann nicht, und Sie sollten die Temperatur in Richtung des vom Anbieter empfohlenen Werts für dieses Modell bewegen.

    Um beides zu unterscheiden, prüfen Sie `usage.completion_tokens_details.reasoning_tokens`. Entspricht der Wert exakt Ihrem `max_tokens`, egal wie hoch Sie das Limit setzen, liegt vermutlich eine Schleife vor.

  </details>
  <details>
  <summary>Welche temperature und top_p sollte ich verwenden?</summary>

    Verwenden Sie die Werte, die der Modellanbieter empfiehlt - sie unterscheiden sich je Modell und sind unter [Empfohlene Sampling-Parameter](/de/models/infercomcloud-models#empfohlene-sampling-parameter) aufgeführt. Es gibt keinen einzelnen Wert, der für jedes Modell passt. Die Infercom API akzeptiert eine Temperatur von 0 bis 2, und `temperature=1.0` bedeutet, dass die Verteilung des Modells exakt wie trainiert verwendet wird, nicht "maximale Zufälligkeit".

  </details>
  <details>
  <summary>Was ist der Unterschied zwischen reasoning_effort und enable_thinking?</summary>

    Es sind zwei verschiedene Steuerungen für zwei verschiedene Modelle, und keine wirkt beim Modell der jeweils anderen. `gpt-oss-120b` verwendet `reasoning_effort` (`low`/`medium`/`high`), um zu steuern, wie viel es reasont; der Standard ist `medium` und Reasoning lässt sich nicht abschalten. `gemma-4-31B-it` verwendet `chat_template_kwargs: {"enable_thinking": true/false}`, um Reasoning ein- oder auszuschalten; standardmäßig ist es aus. Wenn Sie einen der Parameter an ein Modell senden, das ihn nicht implementiert, wird er akzeptiert und stillschweigend ignoriert - prüfen Sie daher die Tabelle oben, bevor Sie sich darauf verlassen.

  </details>
  <details>
  <summary>Wie schalte ich Reasoning vollständig aus?</summary>

    Nur `gemma-4-31B-it` kann ohne Reasoning antworten - und tut dies bereits standardmäßig, da `enable_thinking` ausgeschaltet ist, sofern Sie es nicht setzen. Bei `gpt-oss-120b`, `MiniMax-M3` und den DeepSeek-Modellen lässt sich Reasoning nicht deaktivieren; `reasoning_effort: "none"` ist kein gültiger Wert und führt zu einem `400`. Die niedrigste verfügbare Einstellung ist `reasoning_effort: "low"` bei `gpt-oss-120b`, die weiterhin eine kurze Gedankenkette erzeugt. Bei `MiniMax-M3` schaltet `enable_thinking: false` das Reasoning nicht ab: Das Reasoning erscheint dann in `content`, umschlossen von `<mm:think>`-Tags.

  </details>
  <details>
  <summary>Ich habe einen 400-Fehler zur maximalen Kontextlänge erhalten. Wo kann ich das Limit prüfen?</summary>

    Siehe die Seite [Unterstützte Modelle](/de/models/infercomcloud-models) für die Kontextlänge jedes Modells.

  </details>
  <details>
  <summary>Wo werden diese Modelle gehostet?</summary>

    Mit EU gekennzeichnete Modelle laufen in Infercoms EU-Rechenzentren in Deutschland mit vollständiger Datensouveränität. Prüfen Sie die Seite [Unterstützte Modelle](/de/models/infercomcloud-models), um die Region jedes Modells zu verifizieren.

  </details>
