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

# Ondersteuning voor Interleaved Thinking

> **Laatst bijgewerkt**: 2025-12-03 <br />
> **Status**: Ondersteund (OpenAI-compatibel)

## 1. Overzicht

**Interleaved Thinking** is een geavanceerd redeneerframework waarmee modellen expliciete redeneerstappen kunnen uitvoeren tussen toolaanroepen.

Modellen met Interleaved Thinking kunnen:

* Reflecteren op de huidige omgeving en tooluitvoer
* De volgende actie bepalen op basis van bijgewerkte redenering
* Een doorlopende redeneerketen behouden over meerdere toolaanroepen
* Transparant, inspecteerbaar meerstapsdenken bieden via `reasoning_details` of `reasoning_content`

Deze mogelijkheid transformeert traditioneel function-calling naar **toolgebruik op agentniveau**, waardoor complexe workflows nauwkeuriger, betrouwbaarder en contextbewuster worden.

Novita ondersteunt Interleaved Thinking volledig voor alle modellen die native redeneerstromen beschikbaar maken (bijv. MiniMax-M2 en andere OpenAI-compatibele redeneermodellen).

## 2. Kernconcepten

### 2.1 Interleaving

In plaats van één redeneerfase uit te voeren gevolgd door een toolaanroep, voert het model het volgende uit:

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

Hierdoor kan het model zijn strategie dynamisch aanpassen op basis van eerdere tooluitvoer.

### 2.2 Redeneerdetails (`reasoning_details`)

Voor sommige modellen wordt de inhoud van het denken van het model geretourneerd in de vorm van een afzonderlijke structuur:

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

Voor dergelijke modellen ondersteunt Novita het retourneren van dit veld in zowel streaming- als niet-streamingmodi.

### 2.3 Vereiste voor gespreksgeheugen

Om de continuïteit van de redenering te behouden: je **moet de volledige respons van het model toevoegen** inclusief `reasoning_details`, `tool_calls` en `content` aan daaropvolgende `messages`.

Als je de keten niet behoudt, kan dit leiden tot:

* Onjuist toolgebruik
* Verloren redeneercontext
* Herhaalde of circulaire toolaanroepen
* Verminderde betrouwbaarheid

Deze vereiste komt overeen met OpenAI’s reasoning APIs.

## 3. API-gedrag

### 3.1 Request-indeling

Aan de gebruikerszijde zijn geen wijzigingen vereist.
Interleaved Thinking werkt met de standaard OpenAI-compatibele Chat Completions API.

### 3.2 Response-indeling

Het model kan de volgende velden retourneren:

* `reasoning_content`: oorspronkelijke denkinhoud
* `reasoning_details`: gestructureerde redeneersegmenten; dit veld is optioneel
* `tool_calls`: plan voor toolaanroep
* `content`: uitvoer in natuurlijke taal

Deze breiden het standaard OpenAI-formaat uit.

## 4. Voorbeeldrequest (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. Voorbeeldresponse (niet-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. Voorbeeld van streamingresponse

```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. Ontwikkelaarsnotities

### 7.1 Modellen die Interleaved Thinking ondersteunen

Alle modellen die `reasoning_details` beschikbaar maken via OpenAI-compatibele API’s, waaronder:

* MiniMax-M2
* (Binnenkort) Novita Reasoning Series
* Andere partnermodellen met redeneermogelijkheden

### 7.2 Prijzen

Facturering is gebaseerd op redeneertokens, volgens de prijsregels van het model.
`reasoning_details` verhoogt het tokengebruik.

### 7.3 Foutafhandeling

Je kunt het volgende tegenkomen:

* Ontbrekende toolparameters
* Recursieve of herhaalde toolaanroepen
* Onjuiste aannames in de redeneerfase

Zorg ervoor dat je applicatie toolargumenten valideert en modelfouten netjes afhandelt.

## 8. Best practices

**✓ Neem altijd volledige modelberichten op in de volgende request**

Neem op:

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

**✓ Schakel streaming in voor redenering met lange ketens**

Streaming stelt de client in staat om:

* Het redeneerproces te monitoren
* Onjuiste toolplannen vroegtijdig te detecteren
* Snellere gebruikersfeedback te geven

**✓ Combineer met server-side state machines voor stabiliteit**

Voor productiesystemen raden we aan Interleaved Thinking te combineren met deterministische guardrails, bijv.:

* Parametervalidators
* Uitvoeringssandbox
* Beveiligingen voor maximale recursie

## 9. Samenvatting

Interleaved Thinking verbetert meerstapsredenering en de betrouwbaarheid van toolgebruik aanzienlijk:

* Transparante en inspecteerbare stapsgewijze redenering
* Adaptieve planning tussen toolaanroepen
* Sterker contextbehoud over lange workflows
* Volledig compatibel met OpenAI-achtige Chat Completions API

Novita blijft de ondersteuning voor geavanceerde redeneermodellen uitbreiden en brengt intelligentie op agentniveau naar de API-laag.
