Guide d'utilisation
Générer des images produits e-commerce avec gpt-6-astra via l'API hiapi
Il ne génère pas de photos — mais il rédige tout le reste du contenu de vos fiches produits.
GPT-6 Astra ne génère pas d'images — voici à quoi il sert vraiment dans une stack e-commerce
Si vous êtes ici en espérant que GPT-6 Astra dessine vos photos produits, il ne le fera pas — c'est un modèle purement textuel et de raisonnement, accessible via le point de terminaison /v1/responses, qui ne produit ni image, ni audio, ni vidéo. Mais pour les équipes e-commerce, ce n'est pas une impasse. Chaque image produit vit sur une page, et cette page a aussi besoin de descriptions, de textes alt, de réponses au service client, et de trois versions par canal publicitaire des mêmes arguments de vente — et c'est précisément pour cette couche que GPT-6 Astra est conçu. Ce guide couvre la partie textuelle du workflow des images produits : génération de descriptions en masse, extraction de données structurées pour les fiches produits, et questions-réponses clients — avec de vrais exemples de requêtes pour l'API Responses. Si vous avez besoin des photos elles-mêmes, associez-le à un modèle d'image comme GPT Image 2, et laissez GPT-6 Astra traiter tout le texte qui entoure la photo.
Pourquoi l'API Responses plutôt que Chat Completions
GPT-6 Astra n'est exposé que via POST /v1/responses — la même famille de points de terminaison qu'OpenAI utilise pour ses modèles de raisonnement plus récents — et non via l'ancienne forme Chat Completions. Si vous l'intégrez dans un pipeline produit, trois différences comptent :
- Utilisez
inputet nonmessages. Vous transmettez un tableau d'éléments d'entrée, et non une listemessages. Adaptez votre client Chat Completions plutôt que de réutiliser tel quel le code qui construit la requête. - En pratique,
stream=truepar défaut, avec un état viastore=false. Le modèle émet en flux des événementsresponse.output_text.deltaau fur et à mesure que le texte arrive, etresponse.output_item.donelorsqu'un élément structuré est terminé. Avecstore=false, rien n'est conservé côté serveur entre les appels — si vous menez une conversation de service client multi-tours, vous devez rejouer vous-même les tours précédents utilisateur/assistant dans le tableauinputsuivant. - Utilisez
reasoning.effortet nontemperature. Cette intégration ne propose aucun réglagetemperature,top_poumax_output_tokens. Vous contrôlez la qualité/latence de la sortie viareasoning.effort, avec l'une des valeurslow,medium,high,xhighoumax(il n'y a pas denone— le raisonnement ne peut pas être désactivé). Pour des tâches courtes et déterministes comme la génération de descriptions,lowoumediumsuffisent généralement ; réservezhighet au-delà aux cas nécessitant du jugement, comme la rédaction de réponses au service client sur des questions sensibles en matière de politique.
L'URL de base est https://api.hiapi.ai/v1, et la clé est la même que pour vos autres modèles hiapi.
Cas d'usage 1 : générer en masse des descriptions produits avec une sortie structurée
L'adéquation e-commerce la plus directe consiste à transformer à grande échelle des fiches techniques en textes de fiches produits conformes à votre image de marque. Plutôt que de reparser le texte libre renvoyé par le modèle, utilisez text.format.type=json_schema pour que chaque réponse revienne dans une forme directement ingérable par votre CMS — titre, description courte, description longue et liste à puces, le tout en un seul appel.
import json
import requests
resp = requests.post(
"https://api.hiapi.ai/v1/responses",
headers={
"Authorization": f"Bearer {HIAPI_KEY}",
"Content-Type": "application/json",
},
json={
"model": "gpt-6-astra",
"store": False,
"reasoning": {"effort": "low"},
"input": [
{
"role": "system",
"content": "You write concise, factual e-commerce listing copy. "
"Never invent specs that aren't in the input.",
},
{
"role": "user",
"content": "Product: ceramic pour-over coffee dripper, 400ml, "
"matte white, dishwasher safe, fits standard filters. "
"Write listing copy for this product.",
},
],
"text": {
"format": {
"type": "json_schema",
"name": "listing_copy",
"schema": {
"type": "object",
"properties": {
"title": {"type": "string"},
"short_description": {"type": "string"},
"long_description": {"type": "string"},
"bullet_points": {
"type": "array",
"items": {"type": "string"},
},
},
"required": [
"title",
"short_description",
"long_description",
"bullet_points",
],
"additionalProperties": False,
},
}
},
},
stream=False,
)
data = resp.json()
Exécutez ce code SKU par SKU sur votre base de données produits, et vous obtenez des textes cohérents et validés par schéma, au lieu de prose copiée-collée depuis une fenêtre de chat. Faites en sorte que le prompt système interdise strictement d'inventer des spécifications — si vous le laissez faire, le modèle se fera un plaisir d'écrire avec brio sur des fonctionnalités que vous ne lui avez jamais fournies.
Cas d'usage 2 : questions-réponses du service client fondées sur votre propre documentation
Pour un assistant de service client, le modèle clé est la boucle de rejeu avec store=false. À chaque tour, vous renvoyez dans input la conversation actuelle enrichie des éventuels résultats d'outils ; tout ce que vous n'envoyez pas, le modèle l'oublie. C'est un compromis assumé — le coût est un rejeu légèrement plus cher en tokens d'entrée, mais cela signifie que l'état de la conversation appartient à votre application, et non au fournisseur (ce qui est utile si vous devez masquer, ramifier ou restaurer des conversations depuis votre propre base de données).
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/responses",
headers={"Authorization": f"Bearer {HIAPI_KEY}", "Content-Type": "application/json"},
json={
"model": "gpt-6-astra",
"store": False,
"reasoning": {"effort": "medium"},
"input": history,
},
)
answer = resp.json()["output"][-1]["content"][0]["text"]
history.append({"role": "assistant", "content": answer})
return answer
Pour toute action nécessitant de consulter le statut d'une commande ou de déclencher un retour, déclarez-la comme fonction dans tools — le modèle renvoie un function_call, votre backend l'exécute, puis vous renvoyez le résultat via function_call_output avec le même call_id avant que le modèle ne poursuive. Cela garantit que le modèle n'accède jamais directement à votre base de données de commandes.
Cas d'usage 3 : variantes de textes marketing pour différents canaux
Les mêmes faits produits exigent des formulations différentes selon qu'il s'agit de la page produit, d'un objet d'e-mail ou d'un titre publicitaire de 30 caractères. Comme GPT-6 Astra émet en flux des événements response.output_text.delta, vous pouvez générer plusieurs variantes de canaux en un seul appel et les afficher au fur et à mesure que le contenu arrive, sans attendre la réponse complète — utile si cela alimente un aperçu en temps réel dans un outil interne. Là encore, gardez reasoning.effort à low ; l'adaptation de ton pour des textes courts ne nécessite pas un raisonnement plus poussé, et cela maintient une faible latence pendant que les équipes marketing itèrent en direct.
Comment les coûts sont calculés
GPT-6 Astra est facturé au token, avec un seuil de palier net plutôt qu'un surcoût marginal — ce qu'il vaut la peine de bien comprendre avant de traiter en masse un large catalogue produits en une seule requête :
| Palier | Entrée | Sortie | Entrée en cache | Écriture en cache |
|---|---|---|---|---|
| Standard (≤272 000 tokens d'entrée/requête) | $2.50 / 1 M tokens | $12.50 / 1 M tokens | $0.25 / 1 M tokens | $3.125 / 1 M tokens |
| Contexte long (>272 000 tokens d'entrée/requête) | $5.00 / 1 M tokens | $18.75 / 1 M tokens | $0.50 / 1 M tokens | $6.25 / 1 M tokens |
Le seuil est vérifié sur le total d'entrée de la requête — y compris les lectures et écritures de cache — et une fois franchi, l'ensemble de la requête est facturé au tarif contexte long, et pas seulement les tokens au-delà de 272 000. Pour les cas ci-dessus (génération de description d'un produit, une conversation de service client, une variante de texte), vous êtes encore loin de cette ligne ; elle ne compte surtout lorsque vous injectez tout un catalogue ou un long document dans un seul appel. Avant de vous engager sur des tâches en masse, consultez hiapi.ai/pricing pour les tarifs en vigueur, car ces tarifs dépendent de l'usage et peuvent évoluer.
Comment cela s'articule avec le reste de la stack
Rien de tout cela ne remplace un véritable modèle d'image — GPT-6 Astra n'a pas accès à /v1/tasks et ne peut pas produire de sortie visuelle. Si votre workflow a besoin de photos produits ou de visuels en situation pour accompagner ces textes, cela nécessite un appel séparé à un modèle d'image comme GPT Image 2, et les formats de requête et points de terminaison des deux ne sont pas interchangeables. Pour les détails complets de configuration, y compris l'ID du modèle et la forme exacte des requêtes, consultez le guide de l'API GPT-6 Astra et la page du modèle.
FAQ
GPT-6 Astra peut-il générer des images produits ?
Non. C'est un modèle purement textuel accessible via /v1/responses, qui ne produit ni image, ni audio, ni vidéo. Associez un modèle d'image pour la partie visuelle de vos fiches produits.
Quelle différence entre input et le tableau messages que j'utilisais avec Chat Completions ?
input est le champ de requête de l'API Responses pour les tours de conversation et le contenu — ce n'est pas un substitut direct de messages, donc le code de votre client Chat Completions doit être adapté, et pas seulement renommé.
Dois-je désactiver le raisonnement pour des tâches simples comme la génération de descriptions ?
Vous ne pouvez pas le désactiver — reasoning.effort=none n'existe pas. Pour des tâches de génération courtes et à faible risque, utilisez low ; c'est le plus rapide et le moins cher des cinq paliers.
store=false signifie-t-il que je perds l'historique de conversation ?
Non, cela signifie que la plateforme ne le stocke pas pour vous. Votre application rejoue les tours dont elle a besoin dans le tableau input suivant, ce qui vous donne le contrôle sur le contexte inclus (et vous permet de masquer ou de ramifier les conversations), au prix de ces tokens refacturés en entrée.
Répéter le même prompt système sur de nombreux appels de description produit donne-t-il droit à une remise de cache ?
Pas garanti. Les hits de cache dépendent de la politique et du timing côté serveur, et pas seulement de la répétition littérale — vérifiez cached_tokens dans l'objet usage de la réponse, plutôt que de supposer qu'une remise s'applique.
Que se passe-t-il si j'injecte tout un catalogue en une seule requête ? Si le total des tokens d'entrée (y compris tout contenu en cache) dépasse 272 000, toute la requête — entrée, sortie et usage du cache — est facturée au tarif contexte long, et pas seulement la partie au-delà du seuil. Pour la plupart des appels sur un produit ou une conversation, cela ne s'applique pas, mais il vaut la peine de vérifier le nombre de tokens avant d'injecter un large catalogue en un seul appel.
Articles similaires
Voir tous les articles →-
Guide d'utilisation
Guide de démarrage pour seedream-5.0-pro/image-to-image : capacités, tarification et points d'intégration
Limites de capacité, mode de facturation et pratiques d'intégration technique du modèle d'édition d'image de ByteDance
-
Guide d'utilisation
Guide de prise en main de la génération d'images par texte avec seedream-5.0-pro : limites de capacités, intégration API et maîtrise des coûts
Point de vue pratique pour les développeurs : des points clés des paramètres à l'estimation du coût de 0,05 $ par image
-
Guide d'utilisation
Guide de prise en main de Hailuo 2.3 Fast image-to-video : limites de capacités, tarification et intégration pratique
Points clés pour les développeurs : choisir et intégrer le modèle image-to-video de MiniMax