LIRA és un framework lleuger i extensible per a crear i gestionar agents d'IA, dissenyat per a funcionar amb models de llenguatge locals a través d'Ollama.
LIRA neix amb l'objectiu de crear un sistema d'agents intel·ligents que operi de manera local, aprofitant la potència dels models de llenguatge moderns sense dependre de serveis al núvol.
L'arquitectura es basa en un agent principal (orquestrador) que actua com a cervell del sistema. Aquest agent, impulsat pel model gemma2:9b a través d'Ollama, s'encarrega de:
- Interactuar amb l'usuari: Rep les peticions a través de diferents interfícies (OpenWebUI, CLI, API).
- Processar la petició: Analitza la tasca sol·licitada.
- Delegar a agents especialitzats: Si la tasca requereix una habilitat específica (p. ex., accés a fitxers, execució de codi), l'orquestrador delega la feina a un agent més capacitat.
Aquest disseny modular permet una gran flexibilitat i la possibilitat d'ampliar les capacitats del sistema simplement afegint nous agents.
- Integració amb Ollama: Dissenyat per a funcionar amb models de llenguatge locals a través d'Ollama, amb
gemma2:9bcom a model principal recomanat. - Múltiples Interfícies:
- OpenWebUI: Pensat per a ser integrat com a backend a OpenWebUI per a una interacció visual.
- CLI Opcional: Una interfície de línia de comandes per a un ús més directe i automatitzat.
- API REST (OpenAI-compatible): Una API funcional (a partir de la v0.1.2) que permet interactuar amb el nucli de LIRA des d'altres plataformes. Els models exposats a través d'aquesta API tindran el prefix "Lira-" (p. ex., "Lira-gemma2:9b") per a una identificació clara.
- Sistema d'Agents Extensible: Arquitectura basada en agents especialitzats que poden ser afegits o modificats fàcilment.
- Servei Systemd: S'executa com un servei de systemd per a una gestió fàcil i persistent.
Per a instal·lar LIRA, executa l'script d'instal·lació des del directori scripts:
./scripts/install.shAixò instal·larà LIRA a ~/.lira i configurarà un servei de systemd per a executar l'API de LIRA.
També pots utilitzar la bandera --yes per a executar la instal·lació en mode silenciós:
./scripts/install.sh --yesUn cop instal·lat, l'API de LIRA s'executarà a http://localhost:1312. Pots comprovar l'estat del servei amb:
sudo systemctl status lira.servicePer veure els models exposats per LIRA (amb el prefix "Lira-"), pots fer:
curl http://localhost:1312/v1/modelsLa versió 0.1.2 de LIRA introdueix millores significatives en la funcionalitat i la seguretat:
S'ha implementat una API REST completa que permet la integració de LIRA amb plataformes com OpenWebUI. Aquesta API és compatible amb l'especificació d'OpenAI, facilitant la seva adopció. Els models exposats a través d'aquesta API ara inclouen el prefix "Lira-" (p. ex., "Lira-gemma2:9b") per a una identificació clara i evitar conflictes amb altres models.
S'ha incorporat un robust sistema per a l'execució segura de comandes del sistema, controlat per una whitelist i un mecanisme de permisos interactiu:
- Les comandes permeses es defineixen a
config/lira.yamlsotacommands.whitelistmitjançant expressions regulars. - Quan un agent sol·licita l'execució d'una comanda, el sistema verifica la whitelist i, si cal, demana confirmació a l'usuari amb les opcions:
1= Sí, només una vegada2= Sí, permanent aquesta sessió0= Cancel·la i atura la cadena d'execució
- Si la petició prové d'una interfície remota (com OpenWebUI), la decisió es pot enviar com un objecte JSON:
{"decision":"once"|"session"|"cancel"}. - Per defecte, en mode no interactiu, les comandes es rebutgen per seguretat.
- S'utilitzen pràctiques segures com la normalització de comandes, l'aplicació de timeouts i la no utilització de
shell=Trueper defecte. - Advertència: Ajusteu la whitelist amb extrema cura. Eviteu afegir comandes potencialment perilloses si no esteu completament segur de les seves implicacions.
Les contribucions són benvingudes! Si us plau, no dubtis a enviar un "pull request" o obrir un "issue".
Aquest projecte es distribueix sota una llicència MIT modificada. Consulta el fitxer LICENSE per a més detalls.
Aquest codi s'ofereix tal com és i no es garanteix que funcioni correctament en totes les condicions. No em faig responsable dels danys que puguin resultar de l'ús d'aquesta informació. Utilitzeu-lo sota la vostra pròpia responsabilitat. Si teniu dubtes, pregunteu.