eyes-mdfjbots125 commited on
Commit
d55b9d5
·
verified ·
1 Parent(s): e9c7d43

Add README.md with Apache-2.0 license metadata

Browse files
Files changed (1) hide show
  1. README.md +32 -156
README.md CHANGED
@@ -1,169 +1,45 @@
1
- # NEO-1 / NEO-2 — mdfjbots
2
-
3
- > Chatbot conversacional de código abierto con base de conocimiento, búsqueda web con filtrado de licencias, API Roblox, calculadora y edición cerrada cifrada.
4
-
5
- [![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](LICENSE)
6
- [![Python](https://img.shields.io/badge/python-3.10%2B-blue)](https://www.python.org/)
7
- [![Gradio](https://img.shields.io/badge/gradio-4.44%2B-orange)](https://gradio.app/)
8
- [![Node.js](https://img.shields.io/badge/node-18%2B-green)](https://nodejs.org/)
9
-
10
- ---
11
-
12
- ## Descripción
13
-
14
- **NEO-1** es un chatbot basado en reglas con una base de conocimiento JSON, coincidencia de tokens con similitud ponderada y variación de respuestas para evitar repeticiones.
15
-
16
- **NEO-2** extiende NEO-1 con búsqueda web real (DuckDuckGo) que filtra automáticamente las fuentes por licencia, usando solo contenido bajo **CC BY**, **CC0** o dominio público. Las fuentes con licencias restrictivas (All Rights Reserved, CC BY-ND, CC BY-NC, etc.) son descartadas.
17
-
18
- Ambas ediciones incluyen integración con la API de Roblox, una calculadora matemática y una REST API (NeoAPI) para integración con bots externos.
19
-
20
  ---
21
-
22
- ## Características
23
-
24
- ### NEO-1 (base)
25
- - **Base de conocimiento JSON** — respuestas editables sin tocar código
26
- - **Tokenización con stopwords** — evita falsos positivos en palabras vacías del español
27
- - **Similitud ponderada** — encuentra la mejor coincidencia entre la pregunta y las respuestas conocidas
28
- - **Variación de respuestas** — reformula las respuestas para evitar repetirlas verbatim
29
- - **Streaming palabra por palabra** — efecto de escritura en tiempo real
30
- - **Calculadora integrada** — resuelve operaciones matemáticas (`2 + 2`, `raíz de 144`, etc.)
31
- - **API Roblox** — busca jugadores y juegos por nombre usando la API oficial
32
-
33
- ### NEO-2 (+ búsqueda web)
34
- - **Búsqueda DuckDuckGo** — consultas reales a internet cuando la base de conocimiento no responde
35
- - **Filtrado de licencias** — solo usa fuentes bajo CC BY, CC0 o dominio público
36
- - **Resumen abstractivo** — genera prosa propia a partir de los resultados, no copia textualmente
37
- - **Caché de sesión** — evita búsquedas repetidas para la misma query (hasta 50 entradas)
38
- - **Reintentos automáticos** — reintenta hasta 2 veces con pausa ante fallos de red
39
- - **Errores tipificados** — distingue entre fallo de red, rate-limit y sin resultados
40
-
41
- ### Edición cerrada
42
- - **Cifrado de respuestas** — `respuestas.dat` generado con XOR + zlib + base64
43
- - **Compilador incluido** — `compilar_respuestas.py` convierte `respuestas.json` a `.dat`
44
- - **Clave por variable de entorno** — `NEO_DATA_KEY` nunca aparece en el código
45
-
46
- ### NeoAPI (REST)
47
- - Servidor Node.js/Express independiente en puerto 8080
48
- - Autenticación por API key con prefijo `neo1-`
49
- - Endpoints para consultar el chatbot desde servicios externos
50
- - Panel de administración de claves protegido por `NEO_ADMIN_SECRET`
51
-
52
  ---
53
 
54
- ## Estructura del proyecto
55
-
56
- ```
57
- /
58
- ├── chat-app/
59
- │ ├── app.py # Aplicación Gradio principal (NEO-1 + NEO-2)
60
- │ ├── logica.py # Motor de coincidencia y tokenización
61
- │ ├── buscador.py # Búsqueda web con filtrado de licencias (NEO-2)
62
- │ ├── resumidor.py # Resumen abstractivo de resultados web
63
- │ ├── matematicas.py # Calculadora de operaciones matemáticas
64
- │ ├── roblox_api.py # Cliente de la API pública de Roblox
65
- │ ├── neo_rest.py # Servidor REST en puerto 5001
66
- │ ├── compilar_respuestas.py # Compilador de edición cerrada
67
- │ ├── respuestas.json # Base de conocimiento (editable)
68
- │ ├── respuestas.dat # Base de conocimiento cifrada (edición cerrada)
69
- │ └── requirements.txt
70
-
71
- └── artifacts/
72
- ├── api-server/ # NeoAPI — REST API en Node.js/TypeScript
73
- └── neo1-chat/ # Frontend web (React + Vite)
74
- ```
75
-
76
- ---
77
-
78
- ## Instalación
79
-
80
- ### Requisitos
81
- - Python 3.10+
82
- - Node.js 18+ y pnpm (para NeoAPI y frontend)
83
-
84
- ### Chatbot (NEO-1 / NEO-2)
85
 
86
- ```bash
87
- cd chat-app
88
- pip install -r requirements.txt
89
- ```
90
 
91
- Variables de entorno opcionales:
92
-
93
- | Variable | Descripción |
94
- |---|---|
95
- | `NEO_DATA_KEY` | Clave de cifrado para edición cerrada |
96
- | `NEO_ADMIN_SECRET` | Contraseña de administración de NeoAPI |
97
-
98
- ### Ejecutar
99
-
100
- ```bash
101
- # Chatbot Gradio en puerto 5000 + REST en 5001
102
- PORT=5000 python app.py
103
-
104
- # NeoAPI (desde raíz del proyecto)
105
- pnpm --filter @workspace/api-server run dev
106
- ```
107
-
108
- ---
109
-
110
- ## Uso
111
-
112
- ### Interfaz web (Gradio)
113
- Navega a `http://localhost:5000` — escribe cualquier pregunta en el chat.
114
-
115
- **Ejemplos de consultas:**
116
- - `¿Qué es una supernova?` → busca en base de conocimiento o internet
117
- - `cuánto es 15 * 7 + 3` → calculadora
118
- - `busca el jugador Builderman en Roblox` → API Roblox
119
- - `qué juegos de Roblox tienen más visitas` → API Roblox
120
-
121
- ### NeoAPI (REST)
122
-
123
- ```bash
124
- # Consultar el chatbot
125
- curl -X POST http://localhost:8080/api/chat \
126
- -H "Authorization: Bearer neo1-<tu_api_key>" \
127
- -H "Content-Type: application/json" \
128
- -d '{"message": "Hola, ¿qué eres?"}'
129
-
130
- # Crear una API key (requiere NEO_ADMIN_SECRET)
131
- curl -X POST http://localhost:8080/api/keys \
132
- -H "Authorization: Bearer <NEO_ADMIN_SECRET>" \
133
- -H "Content-Type: application/json" \
134
- -d '{"name": "mi-servicio"}'
135
- ```
136
-
137
- ### Compilar edición cerrada
138
-
139
- ```bash
140
- export NEO_DATA_KEY="mi_clave_secreta"
141
- python compilar_respuestas.py
142
- # genera respuestas.dat cifrado con XOR + zlib + base64
143
- ```
144
-
145
- ---
146
-
147
- ## Filtrado de licencias (NEO-2)
148
-
149
- NEO-2 clasifica las fuentes encontradas en tres categorías:
150
 
151
- | Categoría | Ejemplos | Acción |
152
- |---|---|---|
153
- | ✅ Permitida | Wikipedia, Archive.org, datos.gob.es | Usa el contenido |
154
- | ❓ Desconocida | Dominios sin licencia declarada | Usa como fallback |
155
- | ❌ Bloqueada | Sitios con CC BY-SA, BY-NC, ARR | Descarta silenciosamente |
156
 
157
- Si solo se encuentran fuentes bloqueadas, NEO muestra un mensaje explicativo en lugar de usar contenido no autorizado.
 
 
 
 
 
158
 
159
- ---
160
 
161
- ## Licencia
162
 
163
- Distribuido bajo la licencia **Apache 2.0**. Consulta el archivo [LICENSE](LICENSE) para más detalles.
164
 
165
- ---
166
 
167
- ## Autor
168
 
169
- **mdfjbotss** — [github.com/mdfjbotss](https://github.com/mdfjbotss)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  ---
2
+ license: apache-2.0
3
+ language:
4
+ - en
5
+ - es
6
+ tags:
7
+ - chatbot
8
+ - rule-based
9
+ - roblox
10
+ - calculator
11
+ - gradio
12
+ - conversational
13
+ - web-search
14
+ - duckduckgo
15
+ pipeline_tag: conversational
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
16
  ---
17
 
18
+ # NEO-2 mdfjbots
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
19
 
20
+ > NEO-1 extended with real internet search (DuckDuckGo) filtered by content license. Only CC BY, CC0 and Public Domain sources are used.
 
 
 
21
 
22
+ [![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](LICENSE)
23
+ [![Python](https://img.shields.io/badge/python-3.10%2B-blue)](https://www.python.org/)
24
+ [![Gradio](https://img.shields.io/badge/gradio-4.44%2B-orange)](https://gradio.app/)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
25
 
26
+ ## NEO-2 additions over NEO-1
 
 
 
 
27
 
28
+ - **DuckDuckGo web search** real queries when the knowledge base has no answer
29
+ - **License filtering** — only uses CC BY, CC0 or Public Domain sources; blocks All Rights Reserved, CC BY-ND, CC BY-NC
30
+ - **Abstractive summarization** — builds original prose from search results, never copies verbatim
31
+ - **Session cache** — avoids re-searching the same query (up to 50 entries)
32
+ - **Automatic retries** — retries up to 2 times with pause on network failure
33
+ - **Typed errors** — distinguishes network failure, rate-limit and no-results for clear user messages
34
 
35
+ ## All NEO-1 features included
36
 
37
+ JSON knowledge base · token similarity · response variation · streaming · calculator · Roblox API · closed edition · NeoAPI REST
38
 
39
+ ## Repository
40
 
41
+ Source code: [github.com/mdfjbotss/neo-1](https://github.com/mdfjbotss/neo-1)
42
 
43
+ ## License
44
 
45
+ Apache 2.0 see [LICENSE](LICENSE)