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

# Strukturierte Antworten

> Strukturierte Antworten in der Venice API verwenden

Venice unterstützt strukturierte Ausgaben über das Feld "response\_format" in der API. Dieses Feld ermöglicht es Ihnen, Antworten auf Ihre Prompts in einem vordefinierten Format zu generieren. Mit dieser neuen Methode ist es unwahrscheinlicher, dass die Modelle falsche Schlüssel oder Werte in der Antwort halluzinieren, was bei der Manipulation über System-Prompts oder Function Calling häufiger vorkam.

Das Feld "response\_format" für strukturierte Ausgaben verwendet das OpenAI-API-Format und wird im OpenAI-Leitfaden [hier](https://platform.openai.com/docs/guides/structured-outputs) näher beschrieben. OpenAI hat zudem [hier](https://openai.com/index/introducing-structured-outputs-in-the-api/) einen Einführungsartikel speziell zur Verwendung von strukturierten Ausgaben in der API veröffentlicht. Da es sich um fortgeschrittene Funktionalität handelt, gibt es einige "Gotchas" am Ende dieser Seite, die beachtet werden sollten.

Diese Funktionalität ist nicht nativ für alle Modelle verfügbar. Bitte schauen Sie in den Modell-Bereich [hier](https://docs.venice.ai/api-reference/endpoint/models/list?playground=open) und suchen Sie nach "supportsResponseSchema" für die anwendbaren Modelle.

```json theme={"dark"}
    {
      "id": "venice-uncensored",
      "type": "text",
      "object": "model",
      "created": 1726869022,
      "owned_by": "venice.ai",
      "model_spec": {
        "availableContextTokens": 32768,
        "capabilities": {
          "supportsFunctionCalling": true,
          "supportsResponseSchema": true,
          "supportsWebSearch": true
        },
```

### Verwendung von strukturierten Antworten

Um "response\_format" korrekt zu verwenden, können Sie Ihr Schema mit verschiedenen "properties" definieren, die Kategorien von Ausgaben darstellen, jeweils mit individuell konfigurierten Datentypen. Diese Objekte können verschachtelt werden, um fortgeschrittenere Ausgabe-Strukturen zu erstellen.

Hier ist ein Beispiel für einen API-Aufruf mit response\_format, der den Schritt-für-Schritt-Prozess der Lösung einer mathematischen Gleichung erklärt.

Sie können sehen, dass die Properties so konfiguriert wurden, dass sowohl "steps" als auch "final\_answer" in der Antwort erforderlich sind. In der Verschachtelung besteht die Kategorie "steps" aus einer "explanation" und einem "output", jeweils als Strings.

```json theme={"dark"}
curl --request POST \
  --url https://api.venice.ai/api/v1/chat/completions \
  --header 'Authorization: Bearer <api-key>' \
  --header 'Content-Type: application/json' \
  --data '{
  "model": "venice-uncensored",
  "messages": [
    {
      "role": "system",
      "content": "You are a helpful math tutor."
    },
    {
      "role": "user",
      "content": "solve 8x + 31 = 2"
    }
  ],
  "response_format": {
    "type": "json_schema",
    "json_schema": {
      "name": "math_response",
      "strict": true,
      "schema": {
        "type": "object",
        "properties": {
          "steps": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "explanation": {
                  "type": "string"
                },
                "output": {
                  "type": "string"
                }
              },
              "required": ["explanation", "output"],
              "additionalProperties": false
            }
          },
          "final_answer": {
            "type": "string"
          }
        },
        "required": ["steps", "final_answer"],
        "additionalProperties": false
      }
    }
  }
}

```

Hier ist die Antwort, die vom Modell empfangen wurde. Sie können sehen, dass die Struktur den Anforderungen entspricht, indem zunächst die "steps" mit "explanation" und "output" jedes Schritts und dann die "final answer" bereitgestellt werden.

```json theme={"dark"}
{
  "steps": [
    {
      "explanation": "Subtract 31 from both sides to isolate the term with x.",
      "output": "8x + 31 - 31 = 2 - 31"
    },
    {
      "explanation": "This simplifies to 8x = -29.",
      "output": "8x = -29"
    },
    {
      "explanation": "Divide both sides by 8 to solve for x.",
      "output": "x = -29 / 8"
    }
  ],
  "final_answer": "x = -29 / 8"
}

```

Obwohl dies ein einfaches Beispiel ist, kann es auf fortgeschrittenere Use Cases wie Datenextraktion, Chain-of-Thought-Übungen, UI-Generierung, Datenkategorisierung und viele andere extrapoliert werden.

### Gotchas

Hier sind einige wichtige Anforderungen, die Sie bei der Verwendung strukturierter Ausgaben über response\_format beachten sollten:

* Erste Anfragen mit response\_format können länger dauern, bis eine Antwort generiert wird. Folgeanfragen erfahren nicht dieselbe Latenz wie die erste Anfrage.

* Bei größeren Anfragen kann das Modell scheitern, wenn entweder `max_tokens` oder Modell-Timeout erreicht werden oder Rate-Limits verletzt werden

* Ein falsches Schema-Format führt zu Fehlern bei der Completion, in der Regel aufgrund von Timeout

* Obwohl response\_format sicherstellt, dass das Modell auf eine bestimmte Weise ausgibt, garantiert es nicht, dass das Modell die korrekten Informationen darin bereitgestellt hat. Der Inhalt wird durch den Prompt und die Modellleistung bestimmt.

* Strukturierte Ausgaben über response\_format sind nicht kompatibel mit parallelen Function Calls

* Wichtig: Alle Felder oder Parameter müssen ein `required`-Tag enthalten. Um ein Feld optional zu machen, müssen Sie eine `null`-Option innerhalb des `type` des Feldes hinzufügen, wie folgt: `"type": ["string", "null"]`&#x20;

* Es ist möglich, Felder optional zu machen, indem Sie eine `null`-Option innerhalb des required-Feldes angeben, um eine leere Antwort zuzulassen.

* Wichtig: `additionalProperties` muss auf false gesetzt sein, damit response\_format korrekt funktioniert

* Wichtig: `strict` muss auf true gesetzt sein, damit response\_format korrekt funktioniert
