max-linux / max-desktop

Paquetes, personalizaciones y scripts del MAX Escritorio
12 stars 7 forks source link

MAX 12: propuesta de inclusión de nuevas IA de código libre distintas a MLearning #1079

Open maxezek opened 6 months ago

maxezek commented 6 months ago

ESTA ISSUE NACE CON EL PROPOSITO DE OBTENER UN LISTADO DE HERRAMIENTAS DE IA ABIERTAS Y DE POSIBLES MODELOS DE USO LIBRE.

OLLAMA

Esto es quizás para cursos de bachillerato o de FP y para ponerlo en +Aplicaciones.

Ollama es un equivalente a chatgpt de código abierto que puede utilizarse para generar modelos propios.

En el blog lunacoin se tiene una explicación de su instalación y de las limitaciones que tienen los modelos. Creo que puede ser muy didáctico.

Se hace en local lo cual es muy interesante y además L204 - Entendiendo la Inteligencia Artificial y los LLM tiene una explicación sobre los LLM y la IA interesante.

Dispone de:

JAN

Jan es una alternativa de código abierto a ChatGPT que se ejecuta 100% sin conexión a Internet en local. Privacidad e Inteligencia artificial a la vez.

Jan proporciona un servidor API de OpenAI en localhost:1337 que se puede utilizar como reemplazo de entrega con aplicaciones compatibles.

DaniMAdridlinuX commented 6 months ago

En Kdenlive se integra Whisper para subtitular en local los vídeos y esta es otra IA que llevamos de serie en MAX12.

maxezek commented 1 week ago

Otra opción interesante, RASA y ChatterBot.

Son dos ia especializadas en asistentes o bots de ayuda. No sé que asistente usa ahora EducaMadrid. Sería o ese mismo o uno similar como estos.

Se puede ver como se instala y entrena chatterbot en esta página web.

Con RASA y usando un chatGPT para ello he visto que se puede crear un un chatbot integrado en MAX que sirva como asistente para resolver dudas de los usuarios con el siguiente proceso

Usar para programar Python y/o JavaScript (Node.js) (si se hace como app web)

El data sheet o base de Conocimiento y Respuestas puedes ser la documentación oficial de MAX, los foros y las soluciones aportadas en Telegram

Se debe definir el alcance y funcionadades como qué tipo de preguntas que el chatbot debe responder y como se integración con comandos del sistema para ofrecer asistencia directa, por ejemplo la instalación de paquetes.

Una vez entrenado se debe crear un script que ejecute el chatbot al inicio del sistema y configurarlo como un servicio de systemd.

Y luegor realizar pruebas para asegurar la precisión de las respuestas junto con el feedback de los usuarios para actualizar el modelo.

Ejemplo de un proceso de iinstalación en MAX

Instalar Rasa

pip install rasa

Crear un nuevo proyecto Rasa

rasa init

Entrenar el modelo

rasa train

Ejecutar el servidor del chatbot

rasa run

Integración como Servicio en Systemd

Crear un archivo de servicio en /etc/systemd/system/chatbot.service

[Unit] Description=Chatbot Asistente para Madrid_linux, MAX y EducaMadrid.

[Service] ExecStart=/usr/bin/python3 /path/to/your/chatbot_script.py Restart=always

[Install] WantedBy=multi-user.target

Luego, habilita y arranca el servicio:

sudo systemctl enable chatbot.service sudo systemctl start chatbot.service

Según chatGPT la estructura del Proyecto sería:

  1. Directorio del Proyecto:- actions/: Carpeta para las acciones personalizadas.
    • data/: Carpeta para los datos de entrenamiento (nlu, stories).
    • models/: Carpeta donde se guardan los modelos entrenados.
    • domain.yml: Archivo de configuración del dominio Rasa.
    • config.yml: Archivo de configuración del pipeline de Rasa.
    • endpoints.yml: Archivo de configuración de los endpoints.
    • credentials.yml: Archivo de configuración de las credenciales.

Ejemplo de config.yml

language: "en"

pipeline:

policies:

Ejemplo de domain.yml

intents:

entities:

slots: package: type: text

responses: utter_greet:

actions:

Ejemplo de data/nlu.yml

version: "2.0" nlu:

Ejemplo de data/stories.yml

version: "2.0" stories:

Ejemplo de actions/action_install_package.py

from typing import Any, Text, Dict, List

from rasa_sdk import Action, Tracker from rasa_sdk.executor import CollectingDispatcher import subprocess

class ActionInstallPackage(Action):

def name(self) -> Text:
    return "action_install_package"

def run(self, dispatcher: CollectingDispatcher,
        tracker: Tracker,
        domain: Dict[Text, Any]) -> List[Dict[Text, Any]]:

    package = tracker.get_slot("package")
    if package:
        try:
            result = subprocess.run(
                ["sudo", "apt-get", "install", "-y", package],
                check=True, capture_output=True, text=True)
            dispatcher.utter_message(text=f"El paquete {package} ha sido instalado correctamente.")
        except subprocess.CalledProcessError:
            dispatcher.utter_message(text=f"Hubo un error al intentar instalar el paquete {package}.")
    else:
        dispatcher.utter_message(text="No se especificó ningún paquete para instalar.")

    return []

Ejemplo de actions/action_update_system.py

from typing import Any, Text, Dict, List

from rasa_sdk import Action, Tracker from rasa_sdk.executor import CollectingDispatcher import subprocess

class ActionUpdateSystem(Action):

def name(self) -> Text:
    return "action_update_system"

def run(self, dispatcher: CollectingDispatcher,
        tracker: Tracker,
        domain: Dict[Text, Any]) -> List[Dict[Text, Any]]:

    try:
        result = subprocess.run(
            ["sudo", "apt-get", "update"],
            check=True, capture_output=True, text=True)
        dispatcher.utter_message(text="El sistema se ha actualizado correctamente.")
    except subprocess.CalledProcessError:
        dispatcher.utter_message(text="Hubo un error al intentar actualizar el sistema.")

    return []

Ejecutar el Chatbot

  1. Entrenar el Modelo:

rasa train

  1. Ejecutar el Servidor del Chatbot:

rasa run actions & rasa run --enable-api --cors "*"

DaniMAdridlinuX commented 1 week ago

A propuesta de Pedro Sánchez Alguacil estamos probando Pinokio https://pinokio.computer/ que permite integrar distinas herramientas de IA en local. https://github.com/pinokiocomputer/pinokio

DaniMAdridlinuX commented 6 days ago

AnythingLLM y LM Studio son otras dos opciones que estamos probando aunque depende demasiado de disponer de tarjeta gráfica potente.