HiAPI
Blog

Benutzerhandbuch

E-Commerce-Produktbilder mit DeepSeek V4.1 Flash über die hiapi API verarbeiten

Es generiert keine Bilder – aber es schreibt alles andere rund um dein Produkt-Listing.

Sep 11, 2026
E-Commerce-Produktbilder mit DeepSeek V4.1 Flash über die hiapi API verarbeiten

DeepSeek V4.1 Flash generiert keine Produktbilder – hier erfährst du, worin es in einem E-Commerce-Stack wirklich stark ist

Wenn du wegen des Begriffs „Produktbilder“ hier gelandet bist: DeepSeek V4.1 Flash kann diese nicht generieren – es ist ein reines Textmodell ohne Bild-, Audio- oder Videoausgabe. Doch ein E-Commerce-Katalog hängt weit mehr von Text als von Bildern ab: Jedes Listing braucht eine Beschreibung, jedes Bild einen Alternativtext, jede Kundenfrage eine Antwort, jeder Werbekanal eine andere Version desselben Verkaufsarguments. Genau auf dieser Ebene ist das Modell stark, und es ist für diese Aufgabe ausgesprochen günstig und flexibel – es unterstützt sowohl /v1/chat/completions als auch /v1/responses, sodass du deine Integration nicht um ein einziges Anfrageformat herum neu aufbauen musst. Dieser Leitfaden behandelt die textlichen Teile eines Produktbild-Workflows: die Batch-Generierung von Beschreibungen mit strukturierter Ausgabe, Q&A im Kundensupport und mehrkanalige Textvarianten – mit echten Anfragebeispielen auf Basis der hiapi API. Wenn du die Bilder selbst brauchst, kannst du es mit einem Bildmodell wie GPT Image 2 kombinieren und DeepSeek V4.1 Flash den gesamten Text rund um das Bild übernehmen lassen.

Warum die duale API-Schnittstelle wichtig ist

Die meisten Inferenzmodelle auf hiapi wählen nur einen Pfad – Chat Completions oder Responses – und bleiben dabei. DeepSeek V4.1 Flash unterstützt nativ POST /v1/chat/completions und POST /v1/responses, was bedeutet, dass du es in deine bestehende Integration einbinden kannst, ohne einen neuen Client eigens für dieses Modell zu bauen. Die folgenden Punkte gelten auf beiden Endpunkten:

  • reasoning_effort hat fünf praktische Stufen. Der Text auf der Preisseite nennt nur none, high und max, aber das Modell akzeptiert in tatsächlichen Anfragen auch low und medium – alle fünf Stufen sind gültig. Für kurze, deterministische Aufgaben wie Listing-Texte reichen none oder low aus; high/max solltest du Szenarien vorbehalten, die Urteilsvermögen erfordern, etwa richtlinienkritische Support-Antworten.
  • Strukturierte Ausgabe verhält sich auf den verschiedenen Endpunkten unterschiedlich. Bei diesem Modell liefert response_format: {"type": "json_schema", ...} auf /v1/chat/completions keine schema-validierten Ergebnisse – verwende stattdessen response_format: {"type": "json_object"} und beschreibe die Struktur im Prompt. Wenn du eine erzwungene Schema-Validierung brauchst, sende dieselbe Anfrage an /v1/responses und setze text.format.type=json_schema – das wird eingehalten.
  • Funktionsaufrufe und Streaming funktionieren wie erwartet auf /v1/chat/completions – tools, tool_choice und stream: true verhalten sich genauso wie bei jedem anderen OpenAI-kompatiblen Chat-Modell auf hiapi, sodass dein bestehender Tool-Calling-Code nicht angepasst werden muss.

Die Base-URL lautet https://api.hiapi.ai/v1, verwendet wird derselbe Schlüssel wie bei deinen anderen hiapi-Modellen. Die vollständigen Anfrage-/Antwortformate beider Endpunkte findest du auf der Modellseite.

Anwendungsfall 1: Batch-Generierung von Produktbeschreibungen mit strukturierter Ausgabe

Die naheliegendste Anwendung ist, Spezifikationstabellen im großen Maßstab in markengerechte Listing-Texte umzuwandeln und sie in einem Format auszugeben, das dein CMS direkt importieren kann, ohne Nachbearbeitung. Auf Chat Completions lässt sich das mit dem json_object-Modus plus einem klaren Schema im Prompt zuverlässig erreichen:

import json
import requests

resp = requests.post(
    "https://api.hiapi.ai/v1/chat/completions",
    headers={
        "Authorization": f"Bearer {HIAPI_KEY}",
        "Content-Type": "application/json",
    },
    json={
        "model": "deepseek-v4.1-flash",
        "reasoning_effort": "none",
        "response_format": {"type": "json_object"},
        "messages": [
            {
                "role": "system",
                "content": (
                    "You write concise, factual e-commerce listing copy. "
                    "Never invent specs that aren't in the input. "
                    "Respond with JSON matching this shape: "
                    '{"title": str, "short_description": str, '
                    '"long_description": str, "bullet_points": [str]}'
                ),
            },
            {
                "role": "user",
                "content": (
                    "Product: ceramic pour-over coffee dripper, 400ml, "
                    "matte white, dishwasher safe, fits standard filters. "
                    "Write listing copy for this product."
                ),
            },
        ],
    },
)
listing = json.loads(resp.json()["choices"][0]["message"]["content"])

Führe dies für jede SKU in deiner Produktdatenbank aus, und du erhältst konsistente Texte, ohne den Text manuell aus einem Chatfenster kopieren zu müssen. Wenn du möchtest, dass die Antwort bei einem Formatfehler ausdrücklich einen Fehler meldet, statt dich auf die Befolgung des Prompts durch das Modell zu verlassen, sende die entsprechende Anfrage an /v1/responses und setze text.format.type=json_schema – dieser Pfad validiert die Ausgabe vor der Rückgabe gegen dein Schema.

Anwendungsfall 2: Kundensupport-Q&A auf Basis eigener Dokumente

Für einen Support-Assistenten musst du bei beiden Endpunkten das laufende Gespräch erneut übermitteln – standardmäßig behält keiner von beiden den Zustand zwischen Aufrufen, daher verwaltet deine Anwendung den Gesprächsverlauf, nicht der Anbieter. Das ist nützlich, wenn du Gespräche aus deiner eigenen Datenbank anonymisieren, verzweigen oder wiederherstellen möchtest, statt dem Sitzungsspeicher des Anbieters zu vertrauen.

history = [
    {"role": "system", "content": "Answer only from the provided product FAQ context. "
                                    "If the answer isn't in context, say so and offer to escalate."},
]

def ask(user_message: str, faq_context: str) -> str:
    history.append({"role": "user", "content": f"Context:\n{faq_context}\n\nQuestion: {user_message}"})
    resp = requests.post(
        "https://api.hiapi.ai/v1/chat/completions",
        headers={"Authorization": f"Bearer {HIAPI_KEY}", "Content-Type": "application/json"},
        json={
            "model": "deepseek-v4.1-flash",
            "reasoning_effort": "low",
            "messages": history,
        },
    )
    answer = resp.json()["choices"][0]["message"]["content"]
    history.append({"role": "assistant", "content": answer})
    return answer

Für alles, was den Bestellstatus prüfen oder eine Rückgabe auslösen soll, deklariere dies als Funktion in tools – das Modell gibt einen tool_calls-Eintrag zurück, dein Backend führt ihn aus, dann hängst du eine role: "tool"-Nachricht mit dem Ergebnis an und rufst erneut auf. So kommt das Modell nie direkt an deine Bestelldatenbank, und es funktioniert genauso wie jedes andere OpenAI-kompatible Chat-Modell auf hiapi.

Anwendungsfall 3: Marketing-Textvarianten für verschiedene Kanäle

Dieselben Produktfakten erfordern unterschiedliche Formulierungen auf der Produktseite, in E-Mail-Betreffzeilen und in 30 Zeichen langen Anzeigentiteln. Mit stream: true auf /v1/chat/completions kannst du mehrere Kanalvarianten in einer Anfrage generieren und sie beim Eintreffen rendern, statt auf die vollständige Antwort zu warten – nützlich, wenn dies eine Live-Vorschau in einem internen Tool speist. Halte auch hier reasoning_effort bei none oder low; um den Ton kurzer Texte zu treffen, braucht es keine schwerere Inferenz, und dies hält die Latenz niedrig, wenn Marketingfachleute in Echtzeit iterieren.

Was kostet es

DeepSeek V4.1 Flash wird einheitlich pro Token abgerechnet, ohne vorab einzuplanende Staffelstufen:

Eingabe Ausgabe Zwischengespeicherte Eingabe
$0.44 / 1M Tokens $1.32 / 1M Tokens $0.014 / 1M Tokens

Für die oben genannten Anwendungsfälle – eine einzelne Produktbeschreibung, ein Support-Gesprächsschritt, eine Charge Kanalvarianten – kostet jeder Aufruf nur einen Bruchteil eines Cents. Der Tarif für zwischengespeicherte Eingabe lohnt sich für den bewussten Einsatz: Wenn dein System-Prompt lang ist und sich über Tausende von SKU-Aufrufen wiederholt, muss er zwischen den Anfragen byte-identisch bleiben, damit er für den Cache-Tarif in Frage kommt. Die Tarife richten sich nach der Nutzung und können sich ändern – bevor du dich zu großen Batch-Aufgaben verpflichtest, sieh unter hiapi.ai/pricing nach.

Wie sich dies in den Rest deines Stacks einfügt

Nichts davon ersetzt das eigentliche Bildmodell – DeepSeek V4.1 Flash hat keinen /v1/tasks-Zugriff und kann keine visuelle Ausgabe erzeugen. Wenn dein Workflow Produktfotografie oder Lifestyle-Aufnahmen passend zu diesen Texten benötigt, ist das ein separater Aufruf an ein Bildmodell wie GPT Image 2; beide teilen weder Anfrageformat noch Endpunkt. Wenn du bereits den GPT-6 Astra E-Commerce-Leitfaden gelesen hast, hat dieses Problem exakt dieselbe Form – der Unterschied besteht darin, dass DeepSeek V4.1 Flash dir Endpunktauswahl und eine flache Kostenkurve statt einer gestaffelten bietet.

FAQ

Kann DeepSeek V4.1 Flash Produktbilder generieren? Nein. Es ist ein reines Textmodell ohne Bild-, Audio- oder Videoausgabe, erreichbar über /v1/chat/completions oder /v1/responses. Kombiniere es mit einem Bildmodell, um den visuellen Teil eines Produkt-Listings abzudecken.

Sollte ich für dieses Modell Chat Completions oder Responses verwenden? Beides funktioniert – wähle das, was zu deiner bestehenden Integration passt. Der einzige Fall, in dem es einen Unterschied macht, ist die erzwungene strukturierte Ausgabe: Die json_schema-Validierung funktioniert auf /v1/responses, aber nicht auf /v1/chat/completions; dort solltest du stattdessen den json_object-Modus verwenden.

Was bewirkt reasoning_effort, und welche Stufe sollte ich verwenden? Es steuert, wie viel interne Inferenz das Modell vor der Antwort durchführt, und tauscht Latenz und Kosten gegen Urteilsqualität. Alle fünf Stufen (none, low, medium, high, max) sind in tatsächlichen Anfragen gültig, obwohl die Preisseite nur drei nennt. Für kurze, deterministische Aufgaben wie die Beschreibungsgenerierung verwende none oder low; high oder max solltest du Support-Antworten vorbehalten, die Urteilsvermögen erfordern.

Kann Streaming zusammen mit Tool-Calling verwendet werden? Ja – stream: true und tools funktionieren auf /v1/chat/completions unabhängig voneinander und lassen sich in derselben Anfrage kombinieren, genau wie bei jedem anderen OpenAI-kompatiblen Chat-Modell auf hiapi.

Muss ich in jeder Runde eines Support-Gesprächs den vollständigen Verlauf erneut übermitteln? Ja, auf beiden Endpunkten. Standardmäßig behält keiner von beiden den Gesprächszustand zwischen Aufrufen, daher muss deine Anwendung jedes Mal den benötigten Verlauf erneut senden. Das erhöht die Kosten für erneut übermittelte Eingabe-Tokens, aber es bedeutet, dass du kontrollierst, welcher Kontext enthalten ist, und Gespräche aus deiner eigenen Datenbank anonymisieren oder verzweigen kannst.

Gilt der Tarif für zwischengespeicherte Eingabe automatisch? Er wird nur dann automatisch angewendet, wenn der führende Teil der Anfrage (normalerweise der System-Prompt) zwischen den Aufrufen byte-identisch ist. Prüfe im usage-Objekt der Antwort auf cached_tokens, statt anzunehmen, dass der Rabatt angewendet wurde.

Ähnliche Artikel

Alle Artikel ansehen →

Starte mit persistenten KI-Artefakten

Hol dir deinen API-Key und rufe Bild-, Video- und Audiomodelle über eine einzige task-basierte API auf.

API-Dokumentation lesen