Guía de uso
Generar imágenes de productos de e-commerce con gpt-6-astra mediante la API de hiapi
No genera fotos, pero redacta todo lo demás que rodea a la ficha de producto.
GPT-6 Astra no genera imágenes: este es su verdadero papel en el stack de e-commerce
Si has llegado aquí esperando que GPT-6 Astra dibuje las fotos de tus productos, no puede hacerlo: es un modelo puramente de texto y razonamiento al que se accede mediante el endpoint /v1/responses, y no emite imágenes, audio ni vídeo. Pero para los equipos de e-commerce esto no es un callejón sin salida. Cada imagen de producto vive en una página, y esa página también necesita descripciones, texto alternativo, respuestas de atención al cliente y tres versiones del mismo argumento de venta para tres canales publicitarios distintos, y GPT-6 Astra está hecho precisamente para esa capa. Esta guía cubre la parte textual del flujo de trabajo de imágenes de producto: generación de descripciones por lotes, extracción de datos estructurados para listados de productos y preguntas y respuestas de clientes, con ejemplos reales de solicitudes a la API de Responses. Si necesitas la foto en sí, combínalo con un modelo de imagen como GPT Image 2 y deja que GPT-6 Astra se encargue de todo el texto que rodea a la foto.
Por qué usar la API de Responses en lugar de Chat Completions
GPT-6 Astra solo se expone mediante POST /v1/responses, la misma familia de endpoints que OpenAI usa para sus modelos de razonamiento más recientes, y no mediante la forma más antigua de Chat Completions. Si vas a integrarlo en un flujo de productos, hay tres diferencias que importan:
- Usa
inputen lugar demessages. Envías un array de elementos de entrada, no una lista demessages. Adapta tu cliente de Chat Completions en lugar de reutilizar tal cual el código con el que construyes las solicitudes. - En la práctica,
stream=truepor defecto, con estado mediantestore=false. El modelo emite eventosresponse.output_text.deltaa medida que llega el texto, yresponse.output_item.donecuando se completa un elemento estructurado. Constore=false, el servidor no conserva nada entre llamadas: si mantienes una conversación de atención al cliente de varios turnos, tendrás que reenviar tú mismo los turnos anteriores de usuario/asistente en el siguiente arrayinput. - Usa
reasoning.efforten lugar detemperature. Esta integración no tiene ajustes detemperature,top_pnimax_output_tokens. Controlas la calidad/latencia de la salida mediantereasoning.effort, con valoreslow,medium,high,xhighomax(no haynone: el razonamiento no se puede desactivar). Para tareas breves y deterministas como la generación de descripciones,lowomediumsuelen bastar; reservahighy superiores para escenarios que requieren criterio, como redactar respuestas de atención al cliente que abordan cuestiones sensibles de políticas.
La URL base es https://api.hiapi.ai/v1, y la clave es la misma que usas con tus otros modelos de hiapi.
Caso de uso 1: generación por lotes de descripciones de producto con salida estructurada
El encaje de e-commerce más directo es transformar hojas de especificaciones en textos de listado de producto alineados con la marca a gran escala. En lugar de analizar después el texto libre que devuelve el modelo, usa text.format.type=json_schema para que cada respuesta llegue con una forma que tu CMS pueda ingerir directamente: título, descripción corta, descripción larga y lista de puntos clave, todo en una sola llamada.
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()
Ejecuta este código por SKU sobre tu base de datos de productos y obtendrás textos coherentes y validados por esquema, en lugar de prosa copiada y pegada desde una ventana de chat. Haz que el mensaje de sistema prohíba estrictamente inventar especificaciones: si lo dejas a su aire, el modelo se explayará encantado sobre funciones que ni siquiera le has proporcionado.
Caso de uso 2: preguntas y respuestas de atención al cliente basadas en tu propia documentación
Para un asistente de atención al cliente, el patrón clave es el bucle de reenvío con store=false. En cada turno, envías de vuelta en input la conversación actual más cualquier resultado de herramientas; lo que no envías, el modelo no lo recuerda. Es un compromiso intencionado: a cambio de que reenviar los tokens de entrada salga algo más caro, el estado de la conversación pasa a ser propiedad de tu aplicación y no del proveedor (lo cual resulta útil si necesitas redactar, ramificar o restaurar conversaciones desde tu propia base de datos).
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
Para cualquier acción que requiera consultar el estado de un pedido o iniciar una devolución, declárala como función en tools: el modelo devolverá un function_call, tu backend lo ejecutará y después, antes de que el modelo continúe, devolverás el resultado mediante function_call_output con el mismo call_id. Así te aseguras de que el modelo nunca toque directamente tu base de datos de pedidos.
Caso de uso 3: variantes de copy de marketing para distintos canales
Los mismos datos de producto necesitan una redacción distinta en la página de producto, en el asunto de un correo y en un titular publicitario de 30 caracteres. Como GPT-6 Astra emite eventos response.output_text.delta en streaming, puedes generar varias variantes de canal en una sola llamada y renderizarlas al vuelo a medida que llega el contenido, sin esperar a la respuesta completa; resulta útil si esto alimenta una vista previa en tiempo real dentro de una herramienta interna. Aquí también conviene mantener reasoning.effort en low: hacer coincidir el tono de textos cortos no requiere un razonamiento más potente y mantiene baja la latencia mientras los responsables de marketing iteran en tiempo real.
Cómo se calculan los costes
GPT-6 Astra se factura por tokens y tiene un salto de tarifa fijo, no un recargo marginal, algo que conviene conocer antes de procesar por lotes un catálogo grande de productos en una sola solicitud:
| Tarifa | Entrada | Salida | Entrada en caché | Escritura en caché |
|---|---|---|---|---|
| Estándar (≤272.000 tokens de entrada/solicitud) | $2.50 / 1 millón de tokens | $12.50 / 1 millón de tokens | $0.25 / 1 millón de tokens | $3.125 / 1 millón de tokens |
| Contexto largo (>272.000 tokens de entrada/solicitud) | $5.00 / 1 millón de tokens | $18.75 / 1 millón de tokens | $0.50 / 1 millón de tokens | $6.25 / 1 millón de tokens |
El umbral se comprueba sobre la entrada total de la solicitud, incluidas las lecturas y escrituras de caché, y una vez superado, la solicitud entera se factura a la tarifa de contexto largo, no solo los tokens que exceden de 272.000. Para los casos de uso anteriores (generación de descripciones de un solo producto, una ronda de conversación de atención al cliente, una variante de copy), estás muy lejos de esa línea; solo importa cuando metes un catálogo completo o un documento largo en una sola llamada. Antes de comprometerte con una tarea por lotes, consulta hiapi.ai/pricing para ver las tarifas vigentes, ya que se basan en el uso y pueden cambiar.
Cómo encaja esto con el resto del stack
Nada de lo anterior sustituye a un modelo de imagen real: GPT-6 Astra no tiene acceso a /v1/tasks ni puede producir salida visual. Si tu flujo de trabajo necesita fotografía de producto o imágenes de ambiente que acompañen a estos textos, eso requiere una llamada aparte a un modelo de imagen como GPT Image 2, y los formatos de solicitud y los endpoints de ambos no son interoperables. Para los detalles completos de configuración, incluidos el ID de modelo y la forma exacta de la solicitud, consulta la guía de la API de GPT-6 Astra y la página del modelo.
Preguntas frecuentes
¿Puede GPT-6 Astra generar imágenes de producto?
No. Es un modelo puramente de texto al que se accede mediante /v1/responses y no emite imágenes, audio ni vídeo. Para la parte visual del listado de producto, combínalo con un modelo de imagen.
¿Cuál es la diferencia entre input y el array messages que usaba en Chat Completions?
input es el campo de solicitud que usa la API de Responses para los turnos de conversación y el contenido; no es un sustituto directo de messages, así que el código de tu cliente de Chat Completions necesita adaptarse, no solo cambiar el nombre de un campo.
Para tareas sencillas como generar descripciones, ¿tengo que desactivar el razonamiento?
No puedes desactivarlo: no existe reasoning.effort=none. Para tareas de generación breves y de bajo riesgo usa low; es el más rápido y barato de los cinco niveles.
¿store=false significa que perderé el historial de la conversación?
No: significa que la plataforma no lo almacena por ti. Tu aplicación reenvía en el siguiente array input los turnos que necesita, lo que te da control sobre qué contexto incluir (y te permite redactar o ramificar conversaciones) a cambio de pagar otra vez esos tokens como entrada.
Si repito el mismo mensaje de sistema en muchas llamadas de descripción de producto, ¿obtengo descuento de caché?
No está garantizado. Los aciertos de caché dependen de la política y el momento del servidor, no solo de la repetición literal; comprueba cached_tokens en el objeto usage de la respuesta en lugar de dar por hecho que el descuento se aplicará.
¿Qué pasa si meto todo un catálogo de productos en una sola solicitud? Si el total de tokens de entrada (incluido cualquier contenido en caché) supera los 272.000, la solicitud entera —entrada, salida y uso de caché— se factura a la tarifa de contexto largo, no solo la parte que excede el umbral. Para la mayoría de llamadas de un solo producto o de una sola conversación esto no aplica, pero merece la pena comprobar el número de tokens antes de meter un catálogo grande en una sola llamada.
Artículos relacionados
Ver todos los artículos →-
Guía de uso
seedream-5.0-pro/image-to-image: guía de introducción — capacidades, precios y puntos clave de integración
Límites de capacidad, modelo de facturación y prácticas de integración técnica del modelo de edición de imágenes de ByteDance
-
Guía de uso
Guía de inicio de seedream-5.0-pro texto a imagen: límites de capacidad, integración de API y control de costes
Perspectiva práctica para desarrolladores: desde los puntos clave de los parámetros hasta la estimación de coste de $0.05 por imagen
-
Guía de uso
Guía de inicio de Hailuo 2.3 Fast de imagen a video: límites de capacidad, precios e integración práctica
Claves de selección e integración del modelo MiniMax de imagen a video para desarrolladores