Skip to content

Latest commit

 

History

History
156 lines (134 loc) · 4 KB

File metadata and controls

156 lines (134 loc) · 4 KB
# Ejemplos de Uso de la API

## Ejemplo 1: Título y Descripción para Amazon

### Solicitud
```python
import requests
import json

url = "http://localhost:8000/descriptions/generate"
headers = {"Content-Type": "application/json"}
data = {
    "SKU": "SSRSB041K",
    "MK": [
        {
            "id": "AMAZON",
            "Textos": [
                {
                    "Campo": "title",
                    "Prompt": "Generate a concise title under 200 characters with key features.",
                    "max_tokens": 100,
                    "temperature": 0.7
                },
                {
                    "Campo": "long_description",
                    "Prompt": "Create a detailed description highlighting technical features and benefits.",
                    "max_tokens": 500
                }
            ]
        }
    ]
}

response = requests.post(url, headers=headers, json=data)
print(json.dumps(response.json(), indent=2))

Respuesta:

{
  "SKU": "SSRSB041K",
  "MK": [
    {
      "id": "AMAZON",
      "Textos": [
        {
          "Campo": "title",
          "Texto_IA": "Placa de Inducción Svan 60cm 7400W Negro",
          "tokens_used": 48
        },
        {
          "Campo": "long_description",
          "Texto_IA": "Placa de inducción Svan de 60cm con 7400W de potencia total. Diseño elegante en negro con bordes biselados, 4 zonas de cocción y control táctil. Ideal para cocinas modernas, ofrece eficiencia energética y seguridad con bloqueo de control.",
          "tokens_used": 150
        }
      ]
    }
  ],
  "status": "success"
}

Ejemplo 2: Procesamiento Masivo con PIM:

import base64
import requests

url = "http://localhost:8000/pim/process-base64-direct"
headers = {"Content-Type": "application/json"}
data = [
    {
        "SKU": "TV-QLED-55",
        "idProducto": 1234,
        "idTextoGenerado": 0,
        "email": "user@example.com",
        "marketplacePromptId": 20,
        "MK": [
            {
                "id": "MEDIA_MARKT",
                "Textos": [
                    {
                        "Campo": "technical_specs",
                        "Prompt": "Generate detailed technical specs for a QLED TV.",
                        "max_tokens": 200,
                        "temperature": 0.5
                    }
                ]
            }
        ]
    }
]
encoded_data = base64.b64encode(json.dumps(data).encode()).decode()
payload = {"data": encoded_data}

response = requests.post(url, headers=headers, json=payload)
print(json.dumps(response.json(), indent=2))

Respuesta:

{
  "status": "success",
  "processed_products": [
    {
      "SKU": "TV-QLED-55",
      "idTextoGenerado": 0,
      "status": "success",
      "message": "Textos enviados con éxito"
    }
  ],
  "processing_time": 2.34,
  "total_processed": 1
}

Buenas Prácticas:

*	Prompts Efectivos
*	Incluye detalles específicos del producto.
*	Define claramente el tono (ej. profesional, comercial).
*	Especifica límites de longitud si es necesario.
*	Manejo de Errores
*	Implementa reintentos para errores 500.
*	Valida las respuestas antes de usarlas.
*	Registra errores para diagnóstico.
*	Optimización
* Usa max_tokens ajustado al campo.
* Agrupa solicitudes masivas en /pim/process-base64-direct.
* Monitorea costes con /monitoring/cost-analysis.

Scripts de Utilidad

Validador de Respuestas:

def validate_response(response):
    if response.status_code != 200:
        print(f"Error: {response.status_code}")
        print(response.json())
        return False
    data = response.json()
    if data["status"] != "success":
        print(f"Error: {data.get('error')}")
        return False
    return True

Procesamiento Asíncrono:

import asyncio
import aiohttp

async def generate_async(data):
    async with aiohttp.ClientSession() as session:
        async with session.post(url, json=data, headers=headers) as resp:
            return await resp.json()

async def batch_process(products):
    tasks = [generate_async(product) for product in products]
    return await asyncio.gather(*tasks)