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

# Batch-Inferenz

export const BatchApiModels = () => {
  if (typeof document === "undefined") {
    return null;
  } else {
    let attempts = 0;
    const maxAttempts = 50;
    const INIT_DISPLAY_COUNT = 3;
    const interval = setInterval(() => {
      const clientComponent = document.getElementById("batch-api-models");
      if (clientComponent && window.novitaRemoteData.llmModels.status === 'loaded') {
        const modelList = window.novitaRemoteData.llmModels.data.filter(model => {
          return (model.endpoints || []).includes('batch-api');
        });
        let displayModels = modelList.slice(0, INIT_DISPLAY_COUNT).map(model => {
          return `<li><span class="model-id-item">${model.id}</span></li>`;
        }).join('');
        let showMoreButton = '';
        if (modelList.length > INIT_DISPLAY_COUNT) {
          showMoreButton = `<button id="show-more-batch-api-model-btn" style="margin-left: 32px; color: rgb(40 116 255)">View More</button>`;
        }
        clientComponent.innerHTML = `
          <ul>${displayModels}</ul>
          ${showMoreButton}
        `;
        document.getElementById('show-more-batch-api-model-btn')?.addEventListener('click', () => {
          clientComponent.innerHTML = `
            <ul>${modelList.map(model => {
            return `<li><span class="model-id-item">${model.id}</span></li>`;
          }).join('')}</ul>
          `;
        });
        clearInterval(interval);
      }
      attempts++;
      if (attempts >= maxAttempts) {
        clearInterval(interval);
      }
    }, 200);
    return <div id="batch-api-models"></div>;
  }
};

Die Batch API für Large Language Models ermöglicht die asynchrone Verarbeitung zahlreicher Inferenzanfragen und ist vollständig mit dem OpenAI API-Standard kompatibel.

Die Batch API ist eine kosteneffiziente Lösung, wenn sofortige Inferenzergebnisse nicht erforderlich sind. Sie bietet höhere Ratenlimits als Online-Aufrufe und stellt sicher, dass Ergebnisse innerhalb eines angemessenen Zeitrahmens von 24 Stunden bereitgestellt werden.

Diese API ist ideal für:

* Durchführen von Auswertungen und Datenanalysen.
* Klassifizieren umfangreicher Datensätze.
* Generieren von Dokumentzusammenfassungen im Offline-Modus.

Unterstützte Modelle:

<BatchApiModels />

## Schnellstart

### 1. Batch-Dateien vorbereiten

Die Batch API verwendet Dateien im .jsonl-Format als Eingabe, wobei jede Zeile die Details einer API-Inferenzanfrage darstellt. Verfügbare Endpunkte umfassen `/v1/chat/completions` und `/v1/completions`.

<Warning>
  Setzen Sie den Parameter `endpoint` auf `/v1/chat/completions` oder `/v1/completions` für OpenAI API-Kompatibilität.
</Warning>

Jede Anfrage muss eine eindeutige `custom_id` enthalten, um die Inferenzergebnisse nach Abschluss des Batchs in der Ausgabedatei zu finden. Parameter im Feld `body` jeder Zeile werden als tatsächliche Inferenzanfrageparameter an den Endpunkt gesendet.

<Warning>
  Alle Anfragen innerhalb einer einzelnen Batch-JSONL-Datei müssen dasselbe Modell adressieren. Mischen Sie keine Anfragen für unterschiedliche Modelle in einem Batch.
</Warning>

Unten sehen Sie eine Beispiel-Eingabedatei mit 2 Anfragen:

```JSON theme={"system"}
{"custom_id": "request-1", "body": {"model": "deepseek/deepseek-v3-0324", "messages": [{"role": "user", "content": "Hello, world!"}], "max_tokens": 400}}
{"custom_id": "request-2", "body": {"model": "deepseek/deepseek-v3-0324", "messages": [{"role": "system", "content": "You are a helpful assistant."},{"role": "user", "content": "Hello world!"}],"max_tokens": 1000}}
```

### 2. Batch-Eingabedatei hochladen

Laden Sie die Batch-Eingabedatei hoch, um sicherzustellen, dass sie beim Erstellen eines Batchs korrekt referenziert werden kann. Verwenden Sie die Files API, um Ihre .jsonl-Datei hochzuladen, und setzen Sie den Zweck auf `batch`. Beachten Sie, dass die Datei 15 Tage lang aufbewahrt wird.

<Tip>
  Informationen zum Abrufen eines API-Schlüssels finden Sie unter [API-Schlüsselverwaltung](/docs/de/api-reference/basic-authentication).
</Tip>

Codebeispiel

**Python**

```python theme={"system"}
from openai import OpenAI

client = OpenAI(
    base_url="https://api.novita.ai/openai/v1",
    api_key="<Your API Key>",
)

batch_input_file = client.files.create(
    file=open("batch_input.jsonl", "rb"),
    purpose="batch",
)

print(batch_input_file)
```

**Curl**

```bash theme={"system"}
export API_KEY="<Your API Key>"

curl --request POST \
  --url https://api.novita.ai/openai/v1/files \
  --header 'Authorization: Bearer ${API_KEY}' \
  --form 'file=@"/your/batch_input.jsonl"' \
  --form 'purpose="batch"'
```

Beispielantwort nach erfolgreichem Datei-Upload:

```
{
    "id": "file_d2co***as73c0cjd0",
    "object": "file",
    "bytes": 238,
    "filename": "batch_input.jsonl",
    "created_at": 1754894162,
    "purpose": "batch",
    "metadata": {
        "total_requests": 2
    }
}
```

### 3. Einen Batch erstellen

Sobald die Eingabedatei erfolgreich hochgeladen wurde, können Sie einen Batch mit der ID des hochgeladenen File-Objekts starten. Das Abschlussfenster ist fest auf `24h` gesetzt und derzeit nicht anpassbar.

Codebeispiel

**Python**

```python theme={"system"}
from openai import OpenAI

client = OpenAI(
    base_url="https://api.novita.ai/openai/v1",
    api_key="<Your API Key>",
)

batch = client.batches.create(
  input_file_id="file_d2cor0es1cas73c0cj60",
  endpoint="/v1/chat/completions",
  completion_window="24h"
)
print(batch)
```

**Curl**

```bash theme={"system"}
export API_KEY="<Your API Key>"

curl --request POST \
  --url https://api.novita.ai/openai/v1/batches \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Bearer ${API_KEY}' \
  --data '{
      "input_file_id": "file_d2co***as73c0cjd0",
      "endpoint": "/v1/chat/completions",
      "completion_window": "24h"
  }'
```

Diese Anfrage gibt ein Batch-Objekt zurück, das Metadaten zu Ihrem Batch enthält, wie im folgenden Beispiel dargestellt:

```JSON theme={"system"}
{
    "id": "batch_d2cq***73a68lu0",
    "object": "batch",
    "endpoint": "/v1/chat/completions",
    "input_file_id": "file_d2co***as73c0cjd0",
    "output_file_id": "",
    "error_file_id": "",
    "completion_window": "24h",
    "in_progress_at": null,
    "expires_at": null,
    "finalizing_at": null,
    "completed_at": null,
    "failed_at": null,
    "expired_at": null,
    "cancelling_at": null,
    "cancelled_at": null,
    "status": "validating",
    "errors": "",
    "version": 0,
    "created_at": "2025-08-11T16:31:52.949816948+08:00",
    "updated_at": null,
    "created_by": "8f242aa1-f725-4a67-8***9-cb68025e0976",
    "created_by_key_id": "key_cc19f96c***e7390644a37da21",
    "remark": "",
    "total": 0,
    "completed": 0,
    "failed": 0,
    "metadata": null,
    "request_counts": {
        "total": 0,
        "completed": 0,
        "failed": 0
    }
}
```

### 4. Status eines Batchs prüfen

Sie können den Status eines Batchs jederzeit prüfen, um die neuesten Batch-Informationen zu erhalten.

Die Status-Enumerationswerte des Batch-Objekts lauten wie folgt:

<table class="table table-big">
  <thead>
    <tr>
      <th>Status</th>
      <th>Beschreibung</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>VALIDATING</td>
      <td>Die Eingabedatei wird validiert, bevor der Batch beginnen kann</td>
    </tr>

    <tr>
      <td>PROGRESS</td>
      <td>Batch wird ausgeführt</td>
    </tr>

    <tr>
      <td>COMPLETED</td>
      <td>Batch-Verarbeitung erfolgreich abgeschlossen</td>
    </tr>

    <tr>
      <td>FAILED</td>
      <td>Batch-Verarbeitung fehlgeschlagen</td>
    </tr>

    <tr>
      <td>EXPIRED</td>
      <td>Batch hat die Frist überschritten</td>
    </tr>

    <tr>
      <td>CANCELLING</td>
      <td>Batch wird abgebrochen</td>
    </tr>

    <tr>
      <td>CANCELLED</td>
      <td>Batch wurde abgebrochen</td>
    </tr>
  </tbody>
</table>

Codebeispiel

**Python**

```python theme={"system"}
from openai import OpenAI

client = OpenAI(
    base_url="https://api.novita.ai/openai/v1",
    api_key="<Your API Key>",
)
batch = client.batches.retrieve("batch_d2cq***73a68lu0")
print(batch)
```

**Curl**

```bash theme={"system"}
export API_KEY="<Your API Key>"

curl --request GET \
  --url https://api.novita.ai/openai/v1/batches/{batch_id} \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Bearer ${API_KEY}'
```

### 5. Ergebnisse abrufen

Sobald die Batch-Inferenz abgeschlossen ist, können Sie die Ergebnis-Ausgabedatei über das Feld `output_file_id` aus dem Batch-Objekt herunterladen.

Die Ergebnis-Ausgabedatei wird 30 Tage nach Abschluss der Batch-Inferenz gelöscht. Rufen Sie sie daher bitte zeitnah über die Schnittstelle ab.

Codebeispiel

**Python**

```python theme={"system"}
from openai import OpenAI

client = OpenAI(
    base_url="https://api.novita.ai/openai/v1",
    api_key="<Your API Key>",
)

content = client.files.content("example-250811-1")
print(content.read())
```

**Curl**

```bash theme={"system"}
export API_KEY="<Your API Key>"

curl --request GET \
  --url https://api.novita.ai/openai/v1/files/{file_id}/content \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Bearer ${API_KEY}'
```

Die Antwort gibt den rohen Dateiinhalt zurück. Bei Batch-Ausgabedateien enthält jede Zeile eine Antwort wie diese:

```json theme={"system"}
{
  "custom_id": "request-2589",
  "error": null,
  "id": "batch_req_task_d2c",
  "response": {
    "body": {
      "id": "29e1432c-edfb-44a4-b531-c23c600abfae",
      "object": "chat.completion",
      "created": 1754902266,
      "model": "deepseek-test",
      "choices": [
        {
          "index": 0,
          "message": {
            "role": "assistant",
            "content": "Hello! 👋 How can I assist you today? 😊"
          },
          "finish_reason": "stop"
        }
      ],
      "usage": {
        "prompt_tokens": 5,
        "completion_tokens": 13,
        "total_tokens": 18
      }
    },
    "request_id": "request-2589",
    "status_code": 200
  }
}
```

## Anweisungen

### Einschränkungen

1. Jeder Batch kann bis zu 50.000 Anfragen enthalten.<br />
2. Die maximale Eingabedateigröße pro Batch beträgt 100 MB.

### Fehlerbehandlung

Fehler, die während der Batch-Verarbeitung auftreten, werden in einer separaten Fehlerdatei aufgezeichnet, die über das Feld error\_file\_id zugänglich ist. Häufige Fehlercodes umfassen:

<table class="table table-big">
  <thead>
    <tr>
      <th>Fehlercode</th>
      <th>Beschreibung</th>
      <th>Lösung</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>400</td>
      <td>Ungültiges Anfrageformat</td>
      <td>JSONL-Syntax und erforderliche Felder prüfen</td>
    </tr>

    <tr>
      <td>401</td>
      <td>Authentifizierung fehlgeschlagen</td>
      <td>API-Schlüssel überprüfen</td>
    </tr>

    <tr>
      <td>404</td>
      <td>Batch nicht gefunden</td>
      <td>Batch-ID prüfen</td>
    </tr>

    <tr>
      <td>429</td>
      <td>Ratenlimit überschritten</td>
      <td>Anfragehäufigkeit reduzieren</td>
    </tr>

    <tr>
      <td>500</td>
      <td>Serverfehler</td>
      <td>Kontaktieren Sie uns</td>
    </tr>
  </tbody>
</table>

### Batch-Ablauf

Batchs, die nicht innerhalb von 24 Stunden abgeschlossen werden, wechseln in den Status EXPIRED. Nicht abgeschlossene Anfragen werden abgebrochen, während abgeschlossene Anfragen über eine Ausgabedatei bereitgestellt werden. Sie zahlen nur für Tokens, die von abgeschlossenen Anfragen verbraucht wurden. Der Batch unternimmt alle Anstrengungen, um innerhalb von 24 Stunden abgeschlossen zu werden.

## Alle Batch APIs

1. [Batch erstellen](/docs/de/api-reference/model-apis-llm-create-batch)
2. [Batch abrufen](/docs/de/api-reference/model-apis-llm-retrieve-batch)
3. [Batch abbrechen](/docs/de/api-reference/model-apis-llm-cancel-batch)
4. [Batch auflisten](/docs/de/api-reference/model-apis-llm-list-batches)
5. [Datei hochladen](/docs/de/api-reference/model-apis-llm-upload-batch-input-file)
6. [Dateien auflisten](/docs/de/api-reference/model-apis-llm-list-files)
7. [Datei abrufen](/docs/de/api-reference/model-apis-llm-query-file)
8. [Datei löschen](/docs/de/api-reference/model-apis-llm-delete-file)
9. [Dateiinhalt abrufen](/docs/de/api-reference/model-apis-llm-retrieve-file-content)
