Zum Hauptinhalt springen

Anwendungsfälle

Die Funktion Structured Outputs ermöglicht es dem Modell, Antworten zu generieren, die dem von Ihnen bereitgestellten JSON Schema entsprechen. Dadurch werden die generierten Ergebnisse besser kontrollierbar und leichter zu parsen. Diese Funktion erleichtert sowohl das Parsen und Verarbeiten in nachgelagerten Logiken als auch die Integration der Ergebnisse in Geschäftssysteme und eignet sich für verschiedene Automatisierungs- und Datenverarbeitungsszenarien.

Unterstützte Modelle

Die folgenden Modelle unterstützen strukturierte Ausgaben:

Verwendung

Fügen Sie Ihrer Anfrage die folgenden Informationen hinzu:
  • Parameter festlegen: Geben Sie über den Parameter response_format das von Ihnen definierte JSON Schema an.
  • Prompt-Anleitung: Leiten Sie das Modell im Prompt dazu an, strukturierte Ausgaben zu erzeugen.

Beispiel

Im Folgenden finden Sie ein vollständiges Python-Codebeispiel, das zeigt, wie Sie mit der Funktion Structured Outputs eine JSON-Antwort generieren, die dem von Ihnen bereitgestellten JSON Schema entspricht.

1. Client initialisieren

Sie müssen den Client mit Ihrem JieKou AI API-Schlüssel initialisieren.
from openai import OpenAI

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

model = "qwen/qwen-2.5-72b-instruct"

2. JSON Schema definieren

Sie müssen ein JSON Schema definieren. Das folgende Beispiel erstellt ein JSON Schema, das Ausgabeninformationen aus der Benutzereingabe extrahiert.
# System-Prompt für die Ausgabenverfolgung definieren.
system_prompt = """You are an expense tracking assistant.
Extract expense information from the user's input and format it according to the provided schema."""

# JSON Schema für strukturierte Antworten definieren.
response_format = {
    "type": "json_schema",
    "json_schema": {
        "name": "expense_tracking_schema",
        "schema": {
            "type": "object",
            "properties": {
                "expenses": {
                    "type": "array",
                    "items": {
                        "type": "object",
                        "properties": {
                            "description": {
                                "type": "string",
                                "description": "Description of the expense"
                            },
                            "amount": {
                                "type": "number",
                                "description": "Amount spent in dollars"
                            },
                            "date": {
                                "type": "string",
                                "description": "When the expense occurred"
                            },
                            "category": {
                                "type": "string",
                                "description": "Category of expense (e.g., food, office, travel)"
                            }
                        },
                        "required": [
                            "description",
                            "amount"
                        ]
                    }
                },
                "total": {
                    "type": "number",
                    "description": "Total amount of all expenses"
                }
            },
            "required": [
                "expenses",
                "total"
            ],
        },
    },
}

3. API-Anfrage senden

Erstellen Sie die API-Anfrage. Diese Anfrage enthält den Parameter response_format, der das im vorherigen Schritt definierte JSON schema angibt.
chat_completion = client.chat.completions.create(
    model=model,
    messages=[
        {
            "role": "system",
            "content": system_prompt,
        },
        {
            "role": "user",
            "content": """I spent $120 on dinner at an Italian restaurant last Friday with my colleagues.
Also bought office supplies for $45 on Monday.""",
        },
    ],
    max_tokens=1024,
    temperature=0.8,
    stream=False,
    response_format=response_format,
)

response_content = chat_completion.choices[0].message.content

# JSON parsen und formatieren
try:
    json_response = json.loads(response_content)
    prettified_json = json.dumps(json_response, indent=2)
    print(prettified_json)
except json.JSONDecodeError:
    print("Could not parse response as JSON. Raw response:")
    print(response_content)
Ausgabe:
{
  "expenses": [
    {
      "date": "2023-03-17",
      "description": "Dinner at Italian restaurant",
      "amount": 120,
      "category": "Food & Dining"
    },
    {
      "date": "2023-03-13",
      "description": "Office supplies",
      "amount": 45,
      "category": "Office Supplies"
    }
  ],
  "total": 165
}

Vollständiger Code

from openai import OpenAI
import json

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

model = "qwen/qwen-2.5-72b-instruct"

# Beispiel für strukturierte Ausgaben mit JSON Schema
# Dieses Beispiel erstellt ein Schema zum Extrahieren von Ausgabeninformationen

# System-Prompt für die Ausgabenverfolgung definieren
system_prompt = """You are an expense tracking assistant.
Extract expense information from the user's input and format it according to the provided schema."""

# JSON schema für strukturierte Antworten definieren
response_format = {
    "type": "json_schema",
    "json_schema": {
        "name": "expense_tracking_schema",
        "schema": {
            "type": "object",
            "properties": {
                "expenses": {
                    "type": "array",
                    "items": {
                        "type": "object",
                        "properties": {
                            "description": {
                                "type": "string",
                                "description": "Description of the expense"
                            },
                            "amount": {
                                "type": "number",
                                "description": "Amount spent in dollars"
                            },
                            "date": {
                                "type": "string",
                                "description": "When the expense occurred"
                            },
                            "category": {
                                "type": "string",
                                "description": "Category of expense (e.g., food, office, travel)"
                            }
                        },
                        "required": [
                            "description",
                            "amount"
                        ]
                    }
                },
                "total": {
                    "type": "number",
                    "description": "Total amount of all expenses"
                }
            },
            "required": [
                "expenses",
                "total"
            ],
        },
    },
}

chat_completion = client.chat.completions.create(
    model=model,
    messages=[
        {
            "role": "system",
            "content": system_prompt,
        },
        {
            "role": "user",
            "content": """I spent $120 on dinner at an Italian restaurant last Friday with my colleagues.
Also bought office supplies for $45 on Monday.""",
        },
    ],
    max_tokens=1024,
    temperature=0.8,
    stream=False,
    response_format=response_format,
)

response_content = chat_completion.choices[0].message.content

# JSON parsen und formatieren
try:
    json_response = json.loads(response_content)
    prettified_json = json.dumps(json_response, indent=2)
    print(prettified_json)
except json.JSONDecodeError:
    print("Could not parse response as JSON. Raw response:")
    print(response_content)