106 lines
No EOL
3.7 KiB
Markdown
106 lines
No EOL
3.7 KiB
Markdown
# Rony Chat Bot — Portfolio Bot HTTP
|
|
|
|
> 🤖 **Chatbot HTTP que presenta tu portfolio y responde preguntas sobre tus proyectos.**
|
|
|
|
**Rony Chat Bot** es un chatbot basado en [`rony-llm-agent`](https://github.com/VictorVargas/rony-llm-agent) que se integra con un sitio Astro/React para responder preguntas sobre Victor Hugo Vargas y sus proyectos, usando **RAG sobre archivos markdown**.
|
|
|
|
## ✨ Features
|
|
|
|
- 🌐 **HTTP server** con streaming SSE (Server-Sent Events)
|
|
- 🧠 **RAG sobre markdown** — indexa automáticamente los `.md` en `data/projects/`
|
|
- 🎭 **Persona customizable** — responde como "asistente de Victor"
|
|
- ⚡ **Self-hosted** con Ollama o llama.cpp (no requiere API key de cloud)
|
|
- 🔌 **Integrable** con Astro/React via proxy HTTP
|
|
- 🛡️ **Rate limiting** y logging estructurado
|
|
- 📦 **Portable** — se puede adaptar a otros contextos (clientes, productos, etc.)
|
|
|
|
## 🚀 Quick start
|
|
|
|
```bash
|
|
# 1. Instalar
|
|
git clone https://github.com/VictorVargas/rony-chat-bot.git
|
|
cd chat-bot
|
|
|
|
# 2. Resolver dependencias (crea go.sum con hashes)
|
|
go mod tidy
|
|
|
|
# 3. Configurar provider (ejemplo: Ollama)
|
|
# Asegúrate de tener Ollama corriendo: ollama serve
|
|
# Modelo descargado: ollama pull qwen2.5:1.5b
|
|
|
|
# 4. Cargar tus proyectos en data/projects/
|
|
echo "# Mi Proyecto Cool\nDescripción..." > data/projects/mi-proyecto.md
|
|
|
|
# 5. Build
|
|
go build -o bin/chat-bot ./cmd/chat-bot
|
|
|
|
# 6. Run
|
|
./bin/chat-bot serve
|
|
# → Sirve en http://localhost:7331
|
|
```
|
|
|
|
## 📁 Estructura
|
|
|
|
```
|
|
chat-bot/
|
|
├── cm./rony-chat-bot/ # Entry point (CLI)
|
|
├── internal/
|
|
│ ├── server/ # HTTP handlers + SSE
|
|
│ ├── portfolio/ # Data loader (markdown → RAG)
|
|
│ ├── persona/ # Persona override
|
|
│ └── streaming/ # SSE helpers
|
|
├── data/projects/ # ← TUS PROYECTOS EN MARKDOWN
|
|
│ ├── rony-tui.md
|
|
│ ├── rony-llm-agent.md
|
|
│ └── ...
|
|
├── configs/
|
|
│ └── portfolio-bot.yaml # Provider config
|
|
├── docs/
|
|
│ └── architecture.md # ← Especificación técnica completa
|
|
└── go.mod # require rony-llm-agent
|
|
```
|
|
|
|
## 🎯 Uso desde Astro
|
|
|
|
Ver [`docs/architecture.md`](./docs/architecture.md) §5 — patrón recomendado de proxy.
|
|
|
|
```typescript
|
|
// portfolio/src/pages/api/chat.ts
|
|
export const POST: APIRoute = async ({ request }) => {
|
|
const body = await request.json();
|
|
const resp = await fetch('http://localhost:7331/api/chat', {
|
|
method: 'POST',
|
|
body: JSON.stringify(body),
|
|
});
|
|
return new Response(resp.body, {
|
|
headers: { 'Content-Type': 'text/event-stream' },
|
|
});
|
|
};
|
|
```
|
|
|
|
## 🔄 Adaptar a otro cliente
|
|
|
|
Este bot está diseñado para ser **atómico** y reusable. Para adaptarlo (ej. chatbot para un concesionario):
|
|
|
|
1. Fork/clone este repo
|
|
2. Reemplaza `data/projects/` con `data/inventory/` (u otro dominio)
|
|
3. Actualiza `configs/portfolio-bot.yaml` con la nueva persona
|
|
4. Deploy
|
|
|
|
La librería `rony-llm-agent` no cambia.
|
|
|
|
## 📚 Documentación
|
|
|
|
- [**Architecture doc**](./docs/architecture.md) — Especificación técnica completa
|
|
- [Library: `rony-llm-agent`](https://github.com/VictorVargas/rony-llm-agent) — Core reutilizable
|
|
- [Harness](https://github.com/VictorVargas/rony-harness) — El otro proyecto que usa la misma librería
|
|
|
|
## 📄 Licencia
|
|
|
|
MIT — ver [`LICENSE`](./LICENSE).
|
|
|
|
## 🔗 Proyectos del workspace
|
|
|
|
- [`rony-llm-agent`](https://github.com/VictorVargas/rony-llm-agent) — Librería core
|
|
- [`harness`](https://github.com/VictorVargas/rony-harness) — AI agent harness (TUI)
|
|
- [`portfolio`](https://github.com/VictorVargas/portfolio) — Astro + React site (integra este bot) |