HiAPI
Blog

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.

Sep 9, 2026
Generar imágenes de productos de e-commerce con gpt-6-astra mediante la API de hiapi

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 input en lugar de messages. Envías un array de elementos de entrada, no una lista de messages. 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=true por defecto, con estado mediante store=false. El modelo emite eventos response.output_text.delta a medida que llega el texto, y response.output_item.done cuando se completa un elemento estructurado. Con store=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 array input.
  • Usa reasoning.effort en lugar de temperature. Esta integración no tiene ajustes de temperature, top_p ni max_output_tokens. Controlas la calidad/latencia de la salida mediante reasoning.effort, con valores low, medium, high, xhigh o max (no hay none: el razonamiento no se puede desactivar). Para tareas breves y deterministas como la generación de descripciones, low o medium suelen bastar; reserva high y 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 →

Empieza a crear con artefactos de IA persistentes

Consigue tu API key y llama a modelos de imagen, vídeo y audio a través de una única API basada en tasks.

Leer la documentación de la API