Proyecto 08 — Asistente Conversacional con IA

Mochi

Proyecto
Personal — integrado en este portfolio
Rol
Desarrollo fullstack (backend + IA + BD)
IA
Groq — llama-3.3-70b-versatile
Estado
En producción

Reto → Solución → Resultado

01
El reto

Integrar un asistente conversacional con IA directamente en mi propio portfolio, con memoria persistente entre mensajes, sobre hosting compartido accedido solo por FTP — sin backend tradicional ni control total del servidor.

02
La solución

Construí el asistente en PHP puro (chat.php) con un frontend en JavaScript (asistente.js), conectado a la API de Groq. Al integrar MySQL (con sus consultas SQL) para dar memoria persistente al chat, diagnostiqué y resolví yo misma tres problemas reales: errores de configuración del host, columnas que faltaban en el esquema de la base de datos, y una doble lectura del input stream de PHP que rompía las peticiones. Entendí cada fallo antes de aplicar la corrección.

03
El resultado

Asistente funcionando en producción, con memoria persistente en MySQL, corriendo en hosting compartido con las limitaciones que eso implica. Actualicé además su system prompt con conocimiento de COBOL, adaptándolo a mi propio objetivo profesional.

Lo que hice
concretamente

Memoria persistente sobre hosting compartido

Sin backend tradicional ni acceso root al servidor, integré MySQL para que Mochi recordara la conversación entre mensajes. El reto no fue conectar la base de datos — fue depurar los fallos reales que aparecieron al hacerlo: configuración del host mal interpretada, columnas ausentes en el esquema, y una doble lectura del input stream de PHP que provocaba que las peticiones llegaran vacías o duplicadas.

Chat de Mochi respondiendo sobre proyectos
Mochi respondiendo una pregunta técnica de COBOL

Alcance controlado, no un chatbot genérico

Diseñé el system prompt para que Mochi se mantenga siempre dentro de su propósito: hablar sobre mí, mis proyectos y mi experiencia. Si le preguntan por algo ajeno a eso, lo dice explícitamente en vez de intentar responder cualquier cosa — una decisión pensada tanto para no desviar la conversación como para no gastar tokens de la API en preguntas fuera de contexto.

Alcance controlado, no un chatbot genérico

Diseñé el system prompt para que Mochi se mantenga siempre dentro de su propósito: hablar sobre mí, mis proyectos y mi experiencia. Si le preguntan por algo ajeno a eso, lo dice explícitamente en vez de intentar responder cualquier cosa — una decisión pensada tanto para no desviar la conversación como para no gastar tokens de la API en preguntas fuera de contexto.

Mochi rechazando una pregunta fuera de su ámbito
// Leer el cuerpo de la petición UNA sola vez
// y reutilizar la variable — php://input no se
// puede leer de forma fiable más de una vez.
$raw = file_get_contents('php://input');
$body = json_decode($raw, true);

if (empty($body['messages']) || !is_array($body['messages'])) {
    http_response_code(400);
    echo json_encode(['error' => 'Faltan mensajes']);
    exit;
}

$messages = array_slice($body['messages'], -10);

Qué se consiguió

↑
En producción

Asistente funcionando en vivo en mi propio portfolio, sobre hosting compartido, sin backend dedicado.

✓
Memoria persistente

Conversación guardada en MySQL, con los bugs de host, esquema e input stream diagnosticados y resueltos.

◎
Adaptado a un objetivo real

System prompt actualizado con conocimiento de COBOL para apoyar mi propia búsqueda de empleo mainframe.

Tecnologías usadas

PHP MySQL SQL Groq API JavaScript FTP

Diseñando y desarrollando
experiencias digitales

Frontend, email development y proyectos web desarrollados para clientes y entornos reales.