HiAPI
Blog

Tutorial

So verwenden Sie imagen-4.0-ultra über die HiAPI API: curl, Python und lauffähige Anfragebeispiele

Eine Schritt-für-Schritt-Anleitung zum Aufruf des Bildmodells mit der höchsten Bildqualität über den OpenAI-kompatiblen Endpunkt von HiAPI

Nov 3, 2026
文章封面图:深青底色上以平面切割面构成的水晶矿物截面,青绿与墨绿刻面均衡排布。

Was imagen-4.0-ultra ist und wann Sie es wählen sollten

imagen-4.0-ultra ist die Stufe mit der höchsten Wiedergabetreue innerhalb der imagen-4.0-Reihe. HiAPI stellt es als Bildgenerierungsmodell auf demselben OpenAI-kompatiblen Endpunkt bereit wie Chat- und andere Modellreihen. Das mentale Modell ist einfach: Sie senden einen strukturierten JSON-Anfragetext, der ein Bild beschreibt, und erhalten Bilddaten zurück – keine Chat-Completion-Ergebnisse.

Die Wahl zwischen den Stufen hängt in erster Linie von der Aufgabe ab, nicht von einem Ranking:

  • Entwürfe und Iteration. Wenn Sie Prompts erkunden, Kompositionen testen oder Miniaturansichten zur Richtungsfindung erzeugen, liefern leichtere Bildmodelle schneller zurück und kosten weniger pro Generierung. Sparen Sie sich ultra für die Runde auf, bei der es wirklich zählt.
  • Finales Material. Key Visuals, Marketing-Visuals und alles, was Menschen in Originalgröße betrachten, profitieren von den Details der ultra-Stufe, der Prompt-Treue und der Fähigkeit, komplexe Szenen mit mehreren Motiven oder textähnlichen Elementen zu verarbeiten.
  • Batch-Pipelines mit Qualitätsschwelle. Ein häufiges Muster besteht darin, zunächst mit einem leichten Modell breit Entwürfe zu erzeugen und dann nur die ausgewählten Prompts erneut auf imagen-4.0-ultra auszuführen. Da HiAPI die Modell-ID im Anfragetext platziert, erfordert der Wechsel der Stufe nur die Änderung einer Zeichenkette statt einer neuen Integration.

Einige Erwartungen sollten Sie vorab setzen. Bildgenerierung ist nicht sofort; eine einzelne ultra-Anfrage kann deutlich länger dauern als eine Text-Completion. Konzipieren Sie Ihren Client daher mit großzügigen Timeouts und gehen Sie nicht von Latenzen im Subsekundenbereich aus. Und da die Antwort Binärbilddaten statt eines choices-Arrays enthält, lässt sich kein Parsing-Code wiederverwenden, der für Chat-Modelle geschrieben wurde – planen Sie dies frühzeitig ein.

Wenn Sie unsicher sind, ob Sie ultra benötigen, senden Sie zunächst eine minimale Anfrage, prüfen Sie die Ausgabe in der Auflösung, die Sie tatsächlich ausliefern wollen, und vergleichen Sie dann mit den leichteren Stufen. Die Bildqualität anhand verkleinerter Vorschauen zu beurteilen, ist irreführend.

Voraussetzungen und Authentifizierungseinrichtung

Bevor Sie die erste Anfrage senden, stellen Sie drei Dinge sicher: Sie haben einen HiAPI API-Schlüssel, Sie kennen die Basis-URL des OpenAI-kompatiblen API-Endpunkts, und Ihr Tool kann HTTPS-Anfragen stellen (curl oder Python mit requests bzw. httpx).

Den Schlüssel aus Ihrem Code heraushalten

Bewahren Sie den Schlüssel in einer Umgebungsvariablen auf, statt ihn in ein Skript einzufügen:

export HIAPI_API_KEY="your_api_key_here"

Verwenden Sie in der Produktion den Secret-Manager Ihrer Plattform und injizieren Sie den Wert zur Laufzeit. Das Einchecken von Schlüsseln in Code-Repositories ist die häufigste Art von Zugangsdaten-Leck, und das Rotieren von Schlüsseln ist weitaus schmerzhafter als das Lesen aus einer Umgebungsvariablen.

Authentifizierungs-Header

Jede Anfrage trägt den standardmäßigen Bearer-Token-Header:

Authorization: Bearer $HIAPI_API_KEY
Content-Type: application/json

Beide Header sind wichtig. Ein fehlendes Content-Type kann dazu führen, dass der Server den Anfragetext ablehnt oder falsch parst, was sich manchmal als verwirrender allgemeiner Fehler statt als klare Validierungsmeldung äußert.

Derselbe Schlüssel und dasselbe Header-Muster gelten für alle Modellreihen bei HiAPI – das ist der praktische Nutzen des einheitlichen Endpunkts: eine Zugangsberechtigung, ein Client, mehrere Modelle.

Schnelle Plausibilitätsprüfung

Wenn Sie zur Hand eine chatfähige Modell-ID haben, ist das Senden einer einfachen Textanfrage eine kostengünstige Möglichkeit, Schlüssel und Header zu bestätigen, bevor Sie den Bild-Anfragetext debuggen. Die Trennung von Authentifizierungsproblemen und Problemen mit dem Anfragetext spart wirklich Zeit. Wenn die Textanfrage erfolgreich ist und die Bildanfrage fehlschlägt, wissen Sie, dass das Problem im Bild-Anfragetext liegt.

Den Anfragetext aufbauen

Beginnen Sie mit dem minimalen Anfragetext, der ein Bild erzeugen kann: Modell-ID plus ein Prompt. Alles andere ist optionale Optimierung.

{
  "model": "imagen-4.0-ultra",
  "prompt": "A sunlit reading room with tall windows, a wooden desk, and shelves of worn books, soft dust motes in the light"
}

Zwei Prinzipien halten ihn wartbar. Erstens muss die Modell-ID exakt der entsprechen, die HiAPI für dieses Modell dokumentiert – keine Leerzeichen, kein selbst erfundener Versionssuffix. Zweitens ist der Prompt reine natürliche Sprache; schreiben Sie ihn so, als würden Sie einem Fotografen das Bild beschreiben, mit konkreten Substantiven sowie Hinweisen zu Licht oder Komposition statt abstrakter Adjektive.

Prompt-Formen, die meist funktionieren

  • Erst Motiv, dann Szene, dann Stil. "A fox in a snowy birch forest, morning light, shallow depth of field" ist zuverlässiger als eine Ansammlung von Stil-Keywords.
  • Seien Sie bei der Komposition konkret. Nennen Sie Kamerawinkel, Bildausschnitt oder Layout, wenn sie für Ihren Anwendungsfall wichtig sind.
  • Vermeiden Sie Widersprüche. Im selben Satz "minimalistisch" und "reich verzierte Details" zu verlangen, führt oft zu einem Kompromissergebnis, das Sie nicht wollten.

Größe und Seitenverhältnis

Bildmodelle akzeptieren üblicherweise Breiten-/Höhen- oder Seitenverhältnis-Optionen, aber die genauen Parameternamen und unterstützten Werte variieren je nach Modell. Raten Sie nicht, sondern konsultieren Sie die Parameterdokumentation für dieses Modell bei HiAPI und verwenden Sie nur die dort aufgelisteten Werte. Wenn Sie eine vom Modell nicht unterstützte Größe oder ein nicht unterstütztes Verhältnis übergeben, erwarten Sie einen Validierungsfehler – keinen stillen Rückfall.

Der sichere Arbeitsablauf: Beginnen Sie mit den Standardwerten, bestätigen Sie eine erfolgreiche Antwort und fügen Sie dann jeweils einen Größenparameter hinzu und prüfen Sie die Ausgabe. Wenn Anfragen nach dem Hinzufügen eines Parameters fehlschlagen, haben Sie die Ursache auf die letzte Änderung eingegrenzt.

Fügen Sie in der ersten Anfrage überhaupt keine optionalen Parameter hinzu. Ein funktionierender Anfragetext mit nur zwei Feldern ist eine bessere Grundlage als einer mit zehn Feldern, der fehlschlägt.

Eine lauffähige curl-Anfrage

Nach dem Exportieren des Schlüssels ist dies die Anfrageform, die Sie kopieren und anpassen können:

curl -sS -X POST "$HIAPI_BASE_URL/images/generations" \
  -H "Authorization: Bearer $HIAPI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "imagen-4.0-ultra",
    "prompt": "A sunlit reading room with tall windows, a wooden desk, and shelves of worn books, soft dust motes in the light"
  }'

Was die einzelnen Teile bewirken:

  • -X POST – die Bildgenerierung ist ein Erzeugungsvorgang, kein Lesevorgang.
  • URL – die Bildgenerierungsroute auf dem OpenAI-kompatiblen Endpunkt von HiAPI. Setzen Sie HIAPI_BASE_URL auf die in der HiAPI-Dokumentation angegebene Basis-URL, damit der Pfad auch bei einem Hostwechsel korrekt bleibt.
  • Zwei Header – Bearer-Authentifizierung und JSON-Inhaltstyp wie oben beschrieben.
  • -d-Anfragetext – dasselbe JSON, das Sie in Python wiederverwenden werden. Die Anführungszeichen sind wichtig: Umschließen Sie die Payload mit einfachen Anführungszeichen, damit die Shell nichts darin expandiert.

Debugging-Tipps

Fügen Sie -i hinzu, um Antwort-Header einzuschließen, sodass Sie den HTTP-Status auch bei einem großen Anfragetext sehen. Wenn Sie bestätigen wollen, was tatsächlich gesendet wurde, fügen Sie -v hinzu und lesen Sie die ausgehende Anfragezeile – das deckt schnell eine fehlerhafte URL oder einen fehlenden Header auf.

Wenn die Ausgabe im Terminal ein großer Block aus Base64- oder Binärrauschen ist, bedeutet das, dass die Anfrage erfolgreich war. Leiten Sie sie nicht in Logs um; für eine sauberere Vorgehensweise siehe den Abschnitt zur Antwortverarbeitung. Die Rohantwort in eine Datei umzuleiten (> out.json) ist für einmalige Prüfungen in Ordnung.

Sobald curl einen Erfolgsstatus und einen parsebaren Anfragetext zurückgibt, haben Sie einen verifizierten Vertrag. Der Python-Schritt sollte exakt dieses JSON (strukturell) bytegenau reproduzieren, damit spätere Fehler dem Code und nicht einer abweichenden Anfrage zugeschrieben werden können.

Dieselbe Anfrage in Python

Mit requests bleibt der äquivalente Aufruf nahe an der curl-Version, was die Gegenprüfung zum Kinderspiel macht:

import os
import requests

base_url = os.environ["HIAPI_BASE_URL"]
api_key = os.environ["HIAPI_API_KEY"]

payload = {
    "model": "imagen-4.0-ultra",
    "prompt": (
        "A sunlit reading room with tall windows, a wooden desk, "
        "and shelves of worn books, soft dust motes in the light"
    ),
}

response = requests.post(
    f"{base_url}/images/generations",
    headers={
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json",
    },
    json=payload,
    timeout=120,
)
response.raise_for_status()
result = response.json()

Einige in der Praxis wichtige Hinweise:

  • json=payload serialisiert das Dictionary und setzt den Inhaltstyp für Sie. Für Klarheit oder Konsistenz mit curl können Sie die Header trotzdem explizit übergeben.
  • timeout=120 ist kein Schmuck. Bildgenerierung kann langsam sein; ohne explizites Timeout erben Sie den Standardwert der Bibliothek, der möglicherweise kürzer ist als erwartet, und ein Client-Abbruch sieht wie ein Serverfehler aus.
  • raise_for_status() verwandelt 4xx- und 5xx-Antworten in Ausnahmen, statt fehlerhafte Fehlerantworttexte in Ihren Parsing-Code fließen zu lassen.

Zur Wiederverwendung kapseln

Stecken Sie den Aufruf in eine kleine Funktion, die den Prompt und optionale Parameter entgegennimmt, das geparste Ergebnis zurückgibt und nur Modell-ID, Prompt-Länge, Statuscode und Ausführungszeit protokolliert. Diese eine Logzeile reicht aus, um die meisten Probleme zu debuggen, ohne Megabyte an Bilddaten in Log-Aggregatoren zu speichern.

Da der Anfragetext reines JSON ist, kann dieselbe Funktion für andere Bildmodelle bei HiAPI verwendet werden – tauschen Sie die Modell-ID und bei Bedarf die unterstützten Größenparameter aus. Halten Sie in einem Testskript einige Beispiel-Prompts bereit, damit Sie nach jedem Client-Upgrade eine bekanntermaßen funktionierende Anfrage erneut ausführen und schnell ein Signal erhalten können.

Die Bildantwort verarbeiten

Die Antwort ist eine Bild-Payload, keine Chat-Completion. Suchen Sie nicht nach choices[0].message.content – schreiben Sie Parsing-Code, der zu dem passt, was die Bildroute tatsächlich zurückgibt, wie in der HiAPI-Dokumentation beschrieben.

Defensives Parsen

Die Antwort enthält die Bilddaten üblicherweise als Base64-String, manchmal zusammen mit Metadaten. Dekodieren Sie erst, nachdem Sie bestätigt haben, dass das Feld vorhanden ist:

import base64

item = result["data"][0]
image_b64 = item.get("b64_json")
if image_b64 is None:
    # 某些响应可能携带 URL 或其他格式;请查阅文档
    raise ValueError(f"Unexpected image payload keys: {list(item)}")

image_bytes = base64.b64decode(image_b64)
with open("output.png", "wb") as f:
    f.write(image_bytes)

list(item) in der Fehlermeldung ist der nützliche Teil: Wenn sich die Payload ändert, zeigt es Ihnen die tatsächlichen Schlüssel, statt Sie raten zu lassen.

Protokollieren, ohne Binärdaten auszuschütten

Protokollieren Sie niemals den Rohantworttext einer Bildanfrage – er ist groß und größtenteils unlesbar. Protokollieren Sie Statuscode, Inhaltslänge, Modell-ID und einen Hash oder die Bytemenge des dekodierten Bildes. Das reicht aus, um zu bestätigen, dass jeder Prompt ein anderes Bild ergeben hat, ohne den Speicher aufzublähen.

Betriebliche Gepflogenheiten

  • Vor dem Speichern validieren. Bestätigen Sie, dass die dekodierten Bytes mit einer erkennbaren Bildsignatur beginnen, und fangen Sie Dekodierungsfehler an der Stelle ab, wo Dateien geschrieben werden.
  • Atomar schreiben. Speichern Sie in einen temporären Pfad und benennen Sie nach Erfolg um, damit ein Absturz mitten im Schreiben keine scheinbar gültige abgeschnittene Datei hinterlässt.
  • Prompts zusammen mit der Ausgabe speichern. Speichern Sie neben jedem Bild den Prompt, die Modell-ID und etwaige Größenparameter. Wenn Stakeholder später eine Variante anfordern, brauchen Sie die ursprüngliche Anfrage.
  • Aufbewahrungsregeln festlegen. Generierte Bilder sammeln sich ständig an; entscheiden Sie früh, wo sie gespeichert werden und wie lange sie aufbewahrt werden.

Fehlgeschlagene Anfragen diagnostizieren

Die meisten fehlgeschlagenen ersten Anfragen lassen sich in drei Kategorien einordnen. Prüfen Sie sie in dieser Reihenfolge, bevor Sie den Prompt ändern.

Authentifizierungsfehler

401 oder 403 bedeutet fast immer, dass ein Header falsch ist. Verifizieren Sie, dass das Schema exakt Bearer ist, gefolgt von einem Leerzeichen und dem Schlüssel, ohne nachgestellte Leerzeichen oder überflüssige Anführungszeichen. Stellen Sie sicher, dass die Umgebungsvariable tatsächlich in der Shell oder dem Prozess gesetzt ist, in dem Sie die Anfrage ausführen – ein in einem Terminal exportierter Schlüssel existiert in einem anderen nicht. Wenn Sie den Schlüssel kürzlich rotiert haben, stellen Sie sicher, dass der alte Wert nicht noch in einer Konfigurationsdatei oder einem Deployment-Secret zwischengespeichert ist.

Falsche Modell-ID

Eine Modell-nicht-gefunden-Antwort bedeutet, dass das Feld model nicht mit der bei HiAPI registrierten ID übereinstimmt. Kopieren Sie den Bezeichner aus der HiAPI-Modell-Dokumentation, statt ihn neu einzutippen; ein falsches Zeichen oder ein selbst erfundener Versionssuffix reicht aus, um einen Fehler zu verursachen. Wenn Sie die Modell-ID wechseln, um Stufen zu vergleichen, prüfen Sie, ob die Ersetzung im Anfragetext erfolgt ist und nicht nur in einem Kommentar.

Abgelehnte Parameter

Ein Validierungsfehler, der ein bestimmtes Feld benennt, bedeutet üblicherweise eine nicht unterstützte Größe, ein nicht unterstütztes Seitenverhältnis oder einen optionalen Parameter, den das Modell nicht akzeptiert. Entfernen Sie alle optionalen Felder, bestätigen Sie, dass die minimale Anfrage mit zwei Feldern erfolgreich ist, und fügen Sie dann die Parameter einen nach dem anderen wieder hinzu. Das isoliert das Problem sofort.

Weitere Symptome

  • 200, aber der Antworttext ist leer oder nicht parsebar – Sie lesen möglicherweise das falsche Feld. Prüfen Sie die Schlüssel der obersten Ebene, bevor Sie innerhalb der Payload indexieren.
  • Client-Timeout, aber serverseitig wurde abgerechnet – Ihr Timeout ist möglicherweise zu kurz; erhöhen Sie es und wiederholen Sie die Anfrage einmal mit demselben Prompt, bevor Sie einen Fehler annehmen.
  • JSON in curl und Python unterscheidet sich – geben Sie die serialisierte Payload in Python aus und vergleichen Sie sie mit dem -d-String von curl. Abweichungen hier erklären die meisten Berichte der Art "funktioniert in curl".

Wenn Sie diese Punkte der Reihe nach abarbeiten, lösen Sie die überwiegende Mehrheit der First-Integration-Probleme, ohne ein Wort am Prompt zu ändern. Führen Sie danach nach jedem Client- oder SDK-Upgrade mit einem kleinen Testskript einen bekanntermaßen funktionierenden Prompt aus, um Regressionen frühzeitig zu erkennen.

Ä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