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

# Unterstützung für Interleaved Thinking

> **Zuletzt aktualisiert**: 2025-12-03 <br />
> **Status**: Unterstützt (OpenAI-kompatibel)

## 1. Überblick

**Interleaved Thinking** ist ein erweitertes Reasoning-Framework, das Modellen ermöglicht, explizite Reasoning-Schritte zwischen Tool-Aufrufen auszuführen.

Modelle mit Interleaved Thinking können:

* Über die aktuelle Umgebung und Tool-Ausgaben reflektieren
* Die nächste Aktion auf Grundlage aktualisierten Reasonings entscheiden
* Eine kontinuierliche Reasoning-Kette über mehrere Tool-Aufrufe hinweg aufrechterhalten
* Transparentes, überprüfbares mehrstufiges Denken über `reasoning_details` oder `reasoning_content` bereitstellen

Diese Fähigkeit verwandelt klassisches Function Calling in **Tool-Nutzung auf Agentenebene** und macht komplexe Workflows präziser, zuverlässiger und kontextbewusster.

Novita unterstützt Interleaved Thinking vollständig für alle Modelle, die Reasoning-Streams nativ bereitstellen (z. B. MiniMax-M2 und andere OpenAI-kompatible Reasoning-Modelle).

## 2. Zentrale Konzepte

### 2.1 Interleaving

Anstatt eine einzelne Reasoning-Phase gefolgt von einem Tool-Aufruf auszuführen, führt das Modell Folgendes aus:

```BASH theme={"system"}
Reason → Tool Call → Observe → Reason → Tool Call → ...
```

Dadurch kann das Modell seine Strategie dynamisch auf Grundlage vorheriger Tool-Ausgaben anpassen.

### 2.2 Reasoning Details (`reasoning_details`)

Für einige Modelle wird der Inhalt des Denkprozesses des Modells in Form einer separaten Struktur zurückgegeben:

```JSON theme={"system"}
"reasoning_details": [
  {
    "type": "reasoning.text",
    "format": "openai-responses-v1",
    "text": "Model’s step-by-step reasoning..."
  }
]
```

Für solche Modelle unterstützt Novita die Rückgabe dieses Felds sowohl im Streaming- als auch im Nicht-Streaming-Modus.

### 2.3 Anforderung an den Konversationsspeicher

Um die Reasoning-Kontinuität aufrechtzuerhalten: Sie **müssen die vollständige Antwort des Modells** einschließlich `reasoning_details`, `tool_calls` und `content` an nachfolgende `messages` anhängen.

Wenn die Kette nicht beibehalten wird, kann dies zu Folgendem führen:

* Falsche Tool-Nutzung
* Verlorener Reasoning-Kontext
* Wiederholte oder zirkuläre Tool-Aufrufe
* Geringere Zuverlässigkeit

Diese Anforderung entspricht den Reasoning-APIs von OpenAI.

## 3. API-Verhalten

### 3.1 Anfrageformat

Auf Benutzerseite sind keine Änderungen erforderlich.
Interleaved Thinking funktioniert mit der standardmäßigen OpenAI-kompatiblen Chat Completions API.

### 3.2 Antwortformat

Das Modell kann die folgenden Felder zurückgeben:

* `reasoning_content`: ursprünglicher Denkinhalt
* `reasoning_details`: strukturierte Reasoning-Segmente; dieses Feld ist optional
* `tool_calls`: Plan für Tool-Aufrufe
* `content`: Ausgabe in natürlicher Sprache

Diese erweitern das standardmäßige OpenAI-Format.

## 4. Beispielanfrage (MiniMax-M2)

```JSON theme={"system"}
{
  "model": "minimax/minimax-m2",
  "messages": [
    {
      "role": "user",
      "content": "How's the weather in San Francisco?"
    },
    {
      "role": "assistant",
      "name": "MiniMax AI",
      "content": "",
      "tool_calls": [
        {
          "id": "call_function_asqvfevfc8af_1",
          "type": "function",
          "function": {
            "name": "get_weather",
            "arguments": "{\"location\": \"San Francisco, US\"}"
          }
        }
      ],
      "reasoning_details": [
        {
          "type": "reasoning.text",
          "id": "reasoning-text-1",
          "format": "openai-responses-v1",
          "index": 0,
          "text": "The user is asking about the weather in San Francisco..."
        }
      ]
    },
    {
      "role": "tool",
      "tool_call_id": "call_function_asqvfevfc8af_1",
      "content": "24℃, sunny"
    }
  ],
  "stream": true,
  "reasoning_split": true,
  "max_tokens": 1024,
  "temperature": 0.7,
  "tools": [
    {
      "type": "function",
      "function": {
        "name": "get_weather",
        "description": "Get weather for a specific location",
        "parameters": {
          "type": "object",
          "properties": {
            "location": { "type": "string" }
          },
          "required": ["location"]
        }
      }
    }
  ]
}
```

## 5. Beispielantwort (Nicht-Streaming)

```JSON theme={"system"}
{
  "id": "07a4dedfdb1498b045498dfd42497639",
  "object": "chat.completion",
  "created": 1764303147,
  "model": "MiniMax",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "",
        "name": "MiniMax",
        "tool_calls": [
          {
            "index": 0,
            "id": "call_function_9w7wq1j9zmpl_1",
            "type": "function",
            "function": {
              "name": "get_weather",
              "arguments": "{\"location\": \"ShangHai\"}"
            }
          }
        ],
        "reasoning_content": "The user asked for Shanghai weather...",
        "reasoning_details": [
          {
            "type": "reasoning.text",
            "text": "The user is asking about the weather in Shanghai...",
            "id": "reasoning-text-1",
            "format": "openai-responses-v1",
            "index": 0
          }
        ]
      },
      "finish_reason": "tool_calls"
    }
  ]
}
```

## 6. Beispiel für eine Streaming-Antwort

```JSON theme={"system"}
{
  "id": "664c5ad870c1888fbcbd267d9829e354",
  "object": "chat.completion.chunk",
  "created": 1764303504,
  "model": "minimax-m2",
  "choices": [
    {
      "index": 0,
      "delta": {
        "role": "assistant",
        "reasoning_content": "...\n\nThe user has specifically asked...",
        "reasoning_details": [
          {
            "type": "reasoning.text",
            "text": ".\n\nThe user has specifically asked...",
            "id": "reasoning-text-1",
            "format": "openai-responses-v1",
            "index": 0
          }
        ]
      },
      "finish_reason": null
    }
  ]
}
```

## 7. Hinweise für Entwickler

### 7.1 Modelle, die Interleaved Thinking unterstützen

Alle Modelle, die `reasoning_details` über OpenAI-kompatible APIs bereitstellen, einschließlich:

* MiniMax-M2
* (Demnächst) Novita Reasoning Series
* Andere partnerseitige Modelle mit Reasoning-Unterstützung

### 7.2 Preise

Die Abrechnung basiert auf Reasoning-Tokens gemäß den Preisregeln des jeweiligen Modells.
`reasoning_details` erhöht die Token-Nutzung.

### 7.3 Fehlerbehandlung

Es können folgende Situationen auftreten:

* Fehlende Tool-Parameter
* Rekursive oder wiederholte Tool-Aufrufe
* Falsche Annahmen in der Reasoning-Phase

Stellen Sie sicher, dass Ihre Anwendung Tool-Argumente validiert und Modellfehler ordnungsgemäß behandelt.

## 8. Best Practices

**✓ Nehmen Sie immer vollständige Modellnachrichten in die nächste Anfrage auf**

Einbeziehen:

* `content`
* `tool_calls`
* `reasoning_details`

**✓ Aktivieren Sie Streaming für Reasoning mit langen Ketten**

Streaming ermöglicht dem Client:

* Den Reasoning-Prozess zu überwachen
* Falsche Tool-Pläne frühzeitig zu erkennen
* Schnelleres Benutzerfeedback bereitzustellen

**✓ Kombinieren Sie dies mit serverseitigen Zustandsmaschinen für mehr Stabilität**

Für Produktionssysteme empfehlen wir, Interleaved Thinking mit deterministischen Guardrails zu kombinieren, z. B.:

* Parametervalidierer
* Ausführungs-Sandbox
* Schutzmechanismen für maximale Rekursion

## 9. Zusammenfassung

Interleaved Thinking verbessert mehrstufiges Reasoning und die Zuverlässigkeit der Tool-Nutzung erheblich:

* Transparentes und überprüfbares schrittweises Reasoning
* Adaptive Planung zwischen Tool-Aufrufen
* Stärkere Kontextbeibehaltung über lange Workflows hinweg
* Vollständig kompatibel mit der OpenAI-ähnlichen Chat Completions API

Novita wird die Unterstützung für fortschrittliche Reasoning-Modelle weiter ausbauen und Intelligenz auf Agentenebene in die API-Schicht bringen.
