Zum Inhalt springen
InfercomInfercomInfercom Documentation

Entwickeln

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.

Die folgenden Modelle unterstützen Reasoning. Prüfen Sie immer Unterstützte Modelle 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.

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

{
"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.

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.

{
"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.

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.

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.

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)

Modelle mit konfigurierbarem Thinking (enable_thinking)

Abschnitt betitelt „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.

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)

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

Abschnitt betitelt „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.

  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.

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
  • 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 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.

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.

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.

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.

Tokens für Reasoning budgetieren

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.

Latenz und Kosten

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.

Streaming

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.

Warum erhalte ich eine leere oder abgeschnittene Antwort mit finish_reason: length?

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.

Welche temperature und top_p sollte ich verwenden?

Verwenden Sie die Werte, die der Modellanbieter empfiehlt - sie unterscheiden sich je Modell und sind unter 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”.

Was ist der Unterschied zwischen reasoning_effort und enable_thinking?

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.

Wie schalte ich Reasoning vollständig aus?

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.

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

Siehe die Seite Unterstützte Modelle für die Kontextlänge jedes Modells.

Wo werden diese Modelle gehostet?

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, um die Region jedes Modells zu verifizieren.