Tutorial · Chat de atención al cliente con IA

Cómo agregar un chat de atención al cliente con IA a un sitio web

Esta es la guía paso a paso de cómo se construyó el widget de chat con IA para Fate Icon: un botón flotante que abre un panel de conversación conectado a un modelo de lenguaje, entrenado con la información real del negocio.

Cloudflare Pages Cloudflare Workers AI Claude Code
1

Punto de partida: un sitio ya publicado en Cloudflare Pages

El chat se agrega sobre un sitio que ya existe y ya está desplegado. En este caso, el sitio vivía en un proyecto de Cloudflare Pages con este comando de despliegue, ejecutado desde la carpeta del proyecto:

terminal
wrangler pages deploy . --project-name=tu-proyecto-web

Si tu sitio no está en Cloudflare Pages todavía, ese es el primer requisito — es el servicio que te da tanto el hosting como la IA integrada sin pagar aparte.

2

Activar el "binding" de IA en el proyecto

Para que el sitio pueda usar Cloudflare Workers AI (el motor de IA), hay que activarlo en el archivo de configuración wrangler.toml del proyecto:

wrangler.toml
name = "tu-proyecto-web"
pages_build_output_dir = "."
compatibility_date = "2024-09-23"

[ai]
binding = "AI"
DATO ÚTIL

No hace falta tocar nada manualmente en el dashboard de Cloudflare — al desplegar con wrangler, el binding de IA se activa solo, siempre que esté declarado en el wrangler.toml.

3

Construir el botón y el panel de chat (frontend)

Es un botón circular flotante, fijo en la esquina inferior derecha, que al hacer clic abre un panel con historial de mensajes arriba y una caja de texto abajo. La instrucción que se le dio a Claude Code para construirlo fue:

INSTRUCCIÓN PARA CLAUDE CODE

"Agrega un botón de chat flotante en la esquina inferior derecha, redondo, con ícono de burbuja de chat, en los colores de marca. Al hacer clic, abre un panel de chat: historial de mensajes arriba, input de texto abajo con botón de enviar. Debe verse coherente con el resto del diseño del sitio (misma tipografía y paleta de colores)."

Reemplaza "colores de marca" y "tipografía" por los tuyos — entre más específico seas (los códigos de color exactos, la fuente exacta), más fiel sale el resultado a la primera.

4

Crear la función backend que conecta con la IA

El botón por sí solo no piensa nada — necesita una función en el servidor que reciba el mensaje del visitante y se lo pase al modelo de IA. Esta función vive en una ruta especial de Cloudflare Pages:

/functions/api/chat.js
export async function onRequestPost(context) {
  const { request, env } = context;
  const { message, history } = await request.json();

  const response = await env.AI.run(
    '@cf/meta/llama-3.3-70b-instruct-fp8-fast',
    {
      messages: [
        { role: 'system', content: SYSTEM_PROMPT },
        ...history,
        { role: 'user', content: message }
      ]
    }
  );

  return new Response(JSON.stringify(response));
}

"env.AI" es el binding que activaste en el paso 2 — sin eso declarado en wrangler.toml, esta función no tendría acceso a la IA.

5

Escribir el "system prompt" con la información real del negocio

Esta es la parte más importante: es el texto que le da a la IA todo lo que necesita saber para responder bien — quién es, qué vende, cuánto cuesta cada cosa — y las reglas de cómo debe comportarse. Ejemplo real usado:

system prompt (resumido)
Eres el asistente virtual de [Nombre del negocio].
Su eslogan es "[tu eslogan]". Responde en español,
de forma breve, cálida y profesional.

Servicios/planes disponibles:
- Plan A: $XXX (qué incluye exactamente)
- Plan B: $XXX (qué incluye exactamente)
- Plan C: cotización personalizada

Reglas:
- Sé preciso con los precios, nunca inventes inclusiones
- Si preguntan algo fuera de tema, redirige
  amablemente de vuelta a los servicios
ERROR COMÚN QUE SE DETECTÓ Y CORRIGIÓ

La primera versión del chat decía que el plan más económico incluía algo que en realidad no incluía. La solución fue ser explícito en el prompt sobre qué incluye CADA plan, línea por línea, en vez de dejar que la IA "adivine" o generalice.

6

Hacerlo conversacional, no un menú de precios

Una mejora clave sobre la primera versión: en vez de que la IA recite precios de inmediato, se le pidió que primero preguntara a qué se dedica el negocio del visitante, y usara esa respuesta para recomendar el plan más adecuado — sin volver a preguntar lo mismo si ya se lo dijeron antes en la misma conversación.

INSTRUCCIÓN PARA CLAUDE CODE

"Si el visitante no ha mencionado su rubro de negocio, pregúntalo de forma natural y breve antes de recomendar un plan. Una vez que lo sepa, recomienda el plan más adecuado con un ejemplo relevante a ese rubro. Si ya lo mencionó antes en la misma conversación, no lo vuelvas a preguntar — recuérdalo dentro de esa sesión."

Esto funciona porque el historial completo de la conversación se envía en cada mensaje nuevo (mira el parámetro "history" en el código del paso 4) — así la IA "recuerda" lo que ya se dijo dentro de esa misma sesión de chat.

7

Agregar links directos de pago al final

Último ajuste: cuando la conversación llega al punto de que el visitante ya está listo para avanzar, la IA da el link directo de pago o contacto correspondiente, en vez de mandarlo a buscarlo por su cuenta en el sitio — un pequeño gesto de cortesía con el tiempo del cliente.

8

Probar y publicar

Antes de dar por terminado cualquier cambio, se prueba la conversación completa de principio a fin: saludo, pregunta sobre precios, una pregunta fuera de tema (para confirmar que redirige bien), y el flujo de recomendación de plan. Luego se publica con el mismo comando del paso 1:

terminal
wrangler pages deploy . --project-name=tu-proyecto-web