
Asistente de AI para Shopify Sin Costos de API de OpenAI: El Enfoque de Modelo Local
Las tiendas Shopify que gastan $500-5,000/mes en costos de API de AI pueden reemplazar esas llamadas con un modelo local ajustado. Aquí está la arquitectura, la integración con Shopify y las matemáticas de costos.
Si tu tienda Shopify tiene funciones de AI — preguntas sobre productos, chat de soporte, recomendaciones de tallas, búsqueda — tu factura de API crece con cada usuario. Con 50,000 sesiones mensuales y 3 interacciones de AI cada una, estás haciendo 150,000 llamadas API por mes. A $0.01-0.03 por llamada, eso es $1,500-4,500/mes y subiendo.
La alternativa: un modelo ajustado que corre en tu propio servidor. Un costo mensual fijo de infraestructura independiente del volumen. Mejor rendimiento en el catálogo específico de tu tienda y sus políticas. Sin cargos por token.
La Realidad de Costos
| Métrica | API de OpenAI (GPT-4o) | Modelo Local Ajustado |
|---|---|---|
| 150,000 llamadas API/mes | $1,500-4,500/mes | — |
| Infraestructura (VPS) | — | $20-40/mes |
| Fine-tuning + configuración | — | $8,000-12,000 (único) |
| Precisión en preguntas específicas de marca | 65-75% | 85-93% |
| Período de recuperación | — | 3-6 meses |
Para una tienda que hace 150,000 interacciones de AI/mes, el modelo recupera su costo de desarrollo en menos de 3 meses, luego ahorra $1,500-4,500/mes indefinidamente.
Descripción General de la Arquitectura
Shopify Storefront
↓
Shopify Theme JS (widget de chat / componente de página de producto)
↓ HTTP POST
Tu API Gateway (Node.js / Python FastAPI — puede hostear en Railway, Fly.io, o tu VPS)
↓
Ollama API (compatible con OpenAI) — ejecutando tu modelo GGUF ajustado
↓
Respuesta devuelta al storefront
La pieza crítica: Ollama expone una API compatible con OpenAI. Cualquier código escrito para el SDK de OpenAI puede apuntar a tu endpoint de Ollama con un cambio de una línea.
Paso 1: Preparar los Datos de tu Tienda
Catálogo de productos: Exporta todos los datos de productos desde Shopify Admin, Productos, Exportar CSV. Limpia y convierte a JSON. Cada producto se convierte en contexto de entrenamiento.
Historial de soporte: Si tienes Gorgias o Zendesk, exporta los tickets resueltos de los últimos 12 meses. Estos se convierten en pares de entrenamiento (pregunta, respuesta).
Políticas: Escribe tu política de devoluciones, política de envíos, guía de tallas y términos de garantía como texto estructurado. Estos van en el mensaje del sistema.
Paso 2: Entrenar Con Ertas
Construye tu dataset JSONL a partir de los pares de preguntas y respuestas sobre productos y el historial de soporte. Agrega ejemplos que cubran:
- Preguntas sobre productos ("¿Viene en talla XL?", "¿Es impermeable?")
- Preguntas sobre envíos ("¿Cuánto tarda la entrega?", "¿Envían internacionalmente?")
- Preguntas sobre devoluciones ("¿Puedo devolver esto?", "¿Cómo inicio una devolución?")
- Preguntas sobre tallas/ajuste (usando los datos reales de tu guía de tallas)
Sube a Ertas, valida, entrena. Para una tienda Shopify típica, el dataset es de 800-2,000 ejemplos. El entrenamiento toma 30-60 minutos.
Paso 3: Desplegar el Modelo en Ollama
En tu VPS (Hetzner CX22, DigitalOcean Droplet, o similar):
# Install Ollama
curl -fsSL https://ollama.ai/install.sh | sh
# Import your fine-tuned GGUF from Ertas
# Download the GGUF file from Ertas exports
# Create a Modelfile
cat > Modelfile << EOF
FROM ./your-shopify-model.gguf
SYSTEM "You are the AI shopping assistant for [Brand Store]. Help customers with product questions, sizing, shipping, and returns based on our current catalog and policies."
EOF
# Create the model
ollama create shopify-assistant -f Modelfile
# Verify it works
ollama run shopify-assistant "Do you have blue sneakers in size 10?"
Paso 4: Construir el API Gateway
Una API simple en Express.js que reenvía solicitudes de tu tema Shopify a Ollama:
// server.js
import express from 'express';
import cors from 'cors';
const app = express();
app.use(express.json());
app.use(cors({ origin: 'https://your-store.myshopify.com' }));
app.post('/chat', async (req, res) => {
const { message, productContext } = req.body;
const prompt = productContext
? `Customer is viewing: ${productContext.title} (${productContext.description}). Question: ${message}`
: message;
try {
const response = await fetch('http://localhost:11434/api/chat', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
model: 'shopify-assistant',
messages: [{ role: 'user', content: prompt }],
stream: false
})
});
const data = await response.json();
res.json({ response: data.message.content });
} catch (error) {
res.status(500).json({ error: 'Assistant unavailable' });
}
});
app.listen(3000);
Despliega esto en el mismo VPS o en Railway/Fly.io para hosting gestionado.
Paso 5: Agregar a tu Tema de Shopify
En el product.liquid de tu tema o en una sección personalizada:
// chat-widget.js
class ShopifyAIChat {
constructor(apiUrl, productHandle) {
this.apiUrl = apiUrl;
this.productHandle = productHandle;
this.productContext = window.ShopifyProductData || null; // Set via liquid
}
async ask(question) {
const response = await fetch(`${this.apiUrl}/chat`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
message: question,
productContext: this.productContext
})
});
const data = await response.json();
return data.response;
}
}
// Initialize
const chat = new ShopifyAIChat('https://your-api.fly.dev', '{{ product.handle }}');
Pasa el contexto del producto vía Liquid:
<!-- In your product template -->
<script>
window.ShopifyProductData = {
title: "{{ product.title | json }}",
description: "{{ product.description | strip_html | json }}",
tags: {{ product.tags | json }},
variants: {{ product.variants | json }}
};
</script>
Mantenimiento: Mantener el Modelo Actualizado
Tu tienda cambia. Nuevos productos, políticas actualizadas, inventario estacional. El modelo necesita reflejar estos cambios.
Proceso de actualización trimestral:
- Exportar nuevos tickets de los últimos 3 meses
- Revisar adiciones de nuevos productos (agregar pares de preguntas y respuestas para nuevas líneas de productos)
- Actualizar secciones de políticas si cambiaron
- Reentrenar con dataset expandido en Ertas
- Descargar nuevo GGUF, desplegar vía actualización de Ollama
La mayoría de las tiendas necesitan reentrenamiento trimestral. Tiendas con muchos cambios (promociones activas, lanzamientos frecuentes de nuevos productos) pueden necesitar reentrenamiento mensual.
Ship AI that runs on your users' devices.
Ertas early bird pricing starts at $14.50/mo — locked in for life. Plans for builders and agencies.
Lectura Adicional
- Oportunidad de Agencia de AI para E-Commerce — La visión general completa del vertical de e-commerce
- AI de Servicio al Cliente para E-Commerce con Fine-Tuning — Tutorial de automatización de soporte
- Clasificación de Catálogo de Productos con AI — Categorización automática de productos
- Lanzar un SaaS de AI Sin Costos de API — La economía de la inferencia con modelo local
Ship AI that runs on your users' devices.
Early bird pricing starts at $14.50/mo — locked in for life. Plans for builders and agencies.
Keep reading

MCP Servers + Local Models: Zero API Costs for Domain-Specific AI Tools
The combination of MCP servers and fine-tuned local models eliminates per-token costs for AI tools built on Claude, Cursor, and other MCP-compatible clients. Here's the cost math and the architecture.

Replit App AI Costs Exploding? Replace OpenAI with a Fine-Tuned Local Model
Replit's always-on deployment and easy AI integration create a specific API cost problem. Here's how to replace OpenAI with a fine-tuned local model and cut costs to flat rate.

Windsurf + Fine-Tuned Local Model: The Zero-API-Cost Dev Stack
Apps built with Windsurf default to OpenAI API patterns. Here's how to fine-tune a local model for your specific use case and cut inference costs to zero per token.