Torna al blog
Guida tecnica·25 maggio 2026·7 min di lettura

Costruire un chatbot RAG in spagnolo con Claude — guida pratica per LATAM e Spagna

Stack completo per il RAG in spagnolo: text-embedding-3-large (tramite chiamate dirette a OpenAI — Kunavo non fornisce embeddings) + pgvector + Claude Sonnet 4.6 + prompt caching. ~$0,007 per query, sommando entrambi i provider. Varianti regionali (voseo, tuteo, ustedeo), token in spagnolo (1,3-1,5 volte più dell'inglese), difese contro le allucinazioni e costi mensili reali per 100-10.000 query giornaliere.

Costruire un chatbot RAG in spagnolo che risponda con precisione sulla tua base di conoscenza — guida pratica pensata per team di prodotto in Spagna e America Latina. Copriamo la scelta del modello, la gestione delle varianti regionali dello spagnolo, i costi per richiesta e come evitare le allucinazioni.

Lo stack di base

  1. Embedding dei documenti con text-embedding-3-large, chiamato direttamente a OpenAI —— Kunavo non fornisce embedding, ma solo il passaggio di generazione
  2. Ricerca vettoriale (pgvector, Pinecone o Qdrant)
  3. Generazione delle risposte con Claude Sonnet 4.6 + prompt caching
  4. Fallback a Gemini 2.5 Flash per carichi elevati / costi minimi

Snippet di base

responder.py
from openai import OpenAI

client = OpenAI(
    api_key="sk-kn-...",
    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.content

Costo per richiesta: circa $0,004 (meno di mezzo centesimo di euro) con caching attivo. Senza caching, circa $0,01. La differenza giustifica la corretta configurazione di cache_control.

Spagnolo neutro vs varianti regionali

Se il tuo prodotto serve contemporaneamente utenti in Spagna e in America Latina, hai tre opzioni:

  • Spagnolo neutro (consigliato come impostazione predefinita): chiedi al modello di usare "usted/ustedes" nel registro formale e di evitare i localismi. Funziona in tutti i Paesi, ma suona leggermente impersonale
  • Rilevamento del Paese + prompt specifico: usa l'IP o le impostazioni dell'utente per scegliere tra "voseo" (Argentina, Uruguay), "tuteo" (Spagna, Messico), "ustedeo" (Colombia, alcune regioni). Passa il dialetto nel system prompt
  • Un modello per mercato: solo se hai team dedicati e un volume elevato in ogni regione. Per la maggior parte dei casi è eccessivo

Claude Sonnet 4.6 e Gemini 2.5 Pro comprendono tutte le varianti; l'output segue lo stile del prompt. Basta una riga come "Rispondi in spagnolo rioplatense (voseo, es. 'vos podés')".

Token in spagnolo

Lo spagnolo consuma circa 1.3-1.5x più token dell'inglese per lo stesso contenuto (a causa delle desinenze più lunghe e degli articoli). Adegua di conseguenza i budget di input e output. Un contesto di 5K token in inglese diventa circa 6.5K in spagnolo.

Anti-allucinazioni — ciò che funziona davvero

  • System prompt esplicito: "se la risposta non è nel contesto, di' 'Non ho queste informazioni'". Il modello lo rispetta maggiormente nello spagnolo neutro che in altre lingue; non sappiamo perché
  • Citare la fonte: chiedigli di restituire l'id del documento da cui ha ricavato ogni affermazione. Se l'id è inventato, sai che ha avuto un'allucinazione
  • Limitare l'output: max_tokens=300 riduce molto la tentazione di inventare contenuti riempitivi
  • Test avversari: 50 domande del tuo dataset contrassegnate come "non rispondibili con il contesto attuale". Il chatbot deve rifiutarle tutte

Costo mensile stimato (spagnolo)

  • 100 richieste/giorno: circa $11/mese con caching
  • 1.000 richieste/giorno: circa $110/mese
  • 10.000 richieste/giorno: circa $1.100/mese

Se raggiungi 10.000+ richieste e ti serve un'ulteriore riduzione, passa a Gemini 2.5 Flash per le richieste semplici (da 4 a 10 volte più economico) e riserva Sonnet 4.6 solo a quelle complesse. Il modello di tiering è descritto in cost optimization guide.

Pagamenti dalla Spagna e dall'America Latina

Stripe elabora il pagamento in base al Paese: Pix (Brasile), carte internazionali, Apple Pay, Google Pay e Link. I prezzi sono in USD e Stripe può mostrare l'importo nella tua valuta; il tasso include una commissione di conversione del 2–4% a carico dell'acquirente, evitabile pagando in USD (documentazione di Stripe Adaptive Pricing, letta il 2026-10-03). Bizum, PayPal, OXXO e Mercado Pago non sono disponibili, né lo è Pay by Bank: nel checkout di Kunavo è offerto solo agli acquirenti di Regno Unito, Irlanda e Finlandia, mentre in Francia e Germania Stripe lo offre ancora in anteprima privata (documentazione di Stripe Pay by Bank, letta il 2026-10-03). Ricarica minima $10 USD. Il saldo non scade.

Supporto e documentazione

Supporto in spagnolo tramite contact@kunavo.com entro 24 ore lavorative. Documentazione tecnica completa in /docs/quickstart; guida completa al prompt caching in prompt caching deep dive.

Pronto? Registrati gratuitamente, ricarica da $10 e paga solo ciò che utilizzi per costruire un primo prototipo funzionante.