Construir un chatbot RAG en español que responda con precisión sobre tu base de conocimiento — guía práctica pensada para equipos de producto en España y Latinoamérica. Cubrimos la elección del modelo, cómo manejar variantes regionales del español, costes por consulta y cómo evitar las alucinaciones.
El stack base
- Embebido de documentos con text-embedding-3-large
- Búsqueda vectorial (pgvector, Pinecone o Qdrant)
- Generación de respuesta con Claude Sonnet 4.6 + prompt caching
- Fallback a Gemini 3 Flash para alta carga / costes mínimos
Snippet básico
from openai import OpenAI
client = OpenAI(
api_key="sk-kunavo-...",
base_url="https://api.kunavo.com/v1",
)
def responder(pregunta: str, contexto: list[str]) -> str:
"""Responde en español usando contexto recuperado de la base de conocimiento."""
resp = client.chat.completions.create(
model="claude-sonnet-4-6",
messages=[
{
"role": "system",
"content": [
{
"type": "text",
"text": (
"Eres un asistente que responde en español neutro, "
"claro y conciso, basándote exclusivamente en el "
"contexto proporcionado. Si la respuesta no está en "
"el contexto, di 'No tengo esa información' en lugar "
"de inventar."
),
"cache_control": {"type": "ephemeral"},
},
],
},
{
"role": "user",
"content": (
f"## Contexto\n{chr(10).join(contexto)}\n\n"
f"## Pregunta\n{pregunta}"
),
},
],
max_tokens=600,
)
return resp.choices[0].message.contentCoste por consulta: aproximadamente $0.007 (unos 6,5 €) con caching activo. Sin caching, alrededor de $0.02. La diferencia compensa configurar correctamente el cache_control.
Español neutro vs variantes regionales
Si tu producto sirve a usuarios de España y LATAM al mismo tiempo, tienes tres opciones:
- Español neutro (recomendado por defecto): pide al modelo que use "usted/ustedes" en formal y evite localismos. Funciona en todos los países pero suena ligeramente impersonal
- Detección de país + prompt específico: usa la IP o la configuración del usuario para elegir entre "voseo" (Argentina, Uruguay), "tuteo" (España, México), "ustedeo" (Colombia, ciertas regiones). Pasa el dialecto en el system prompt
- Un modelo por mercado: solo si tienes equipos dedicados y volumen alto en cada región. Para la mayoría es overkill
Claude Sonnet 4.6 y Gemini 3 Pro entienden todas las variantes; la salida sigue el estilo del prompt. Una línea como "Responde en español rioplatense (voseo, ej. 'vos podés')" basta.
Tokens en español
El español consume aproximadamente 1.3-1.5x más tokens que el inglés para el mismo contenido (por las terminaciones largas y los artículos). Ajusta tus presupuestos de input y output en consecuencia. Un contexto de 5K tokens en inglés se convierte en ~6.5K en español.
Anti-alucinaciones — lo que de verdad funciona
- System prompt explícito: "si la respuesta no está en el contexto, di 'No tengo esa información'". El modelo lo respeta más en español neutro que en otros idiomas, no sabemos por qué
- Citar la fuente: pídele que devuelva el id del documento del que sacó cada afirmación. Si el id es inventado, sabes que alucinó
- Limitar el output: max_tokens=300 reduce mucho la tentación de inventar relleno
- Tests adversarios: 50 preguntas de tu dataset marcadas como "no contestables con el contexto actual". Tu chatbot debe rechazar todas
Coste mensual estimado (español)
- 100 consultas/día: ~$21/mes con caching
- 1.000 consultas/día: ~$210/mes
- 10.000 consultas/día: ~$2.100/mes
Si llegas a 10.000+ y necesitas más recorte, baja a Gemini 3 Flash para las consultas sencillas (~3x más barato) y reserva Sonnet 4.6 solo para las complejas. Patrón de tiering descrito en cost optimization playbook.
Pagos desde España y LATAM
Stripe procesa el pago según el país: Bizum (España vía Link), SEPA, OXXO (México), Pix y Boleto (Brasil), tarjetas internacionales, Apple Pay y Google Pay. Recarga mínima $5 USD. El saldo no caduca.
Soporte y documentación
Soporte en español por contact@kunavo.com en menos de 24 horas laborables. Documentación técnica completa en /docs/quickstart; guía completa de prompt caching en prompt caching deep dive.
¿Listo? Regístrate gratis con $2 de crédito para construir un primer prototipo funcional.