#wip(py): Building PseudoLoRAs filter.

This commit is contained in:
KyMAN 2026-06-01 17:20:17 +02:00
parent 8bd5f46c3a
commit 3412ff05b5
6 changed files with 58 additions and 13 deletions

View File

@ -86,17 +86,28 @@
"default_ai_interpreters" : { "default_ai_interpreters" : {
"anp_titles" : { "anp_titles" : {
"type" : "OllamaDriver", "type" : "OllamaDriver",
"host" : "localhost", "url" : "http://localhost:11434/api/generate/",
"port" : 11434,
"model" : "gemma3:1b", "model" : "gemma3:1b",
"pool" : "anp" "pool" : "anp",
"stream" : false,
"format" : {
"type" : "array",
"items" : {
"type" : "string"
}
},
"orders" : [
"En base al mensaje del usuario y los Tokens que tengas de la conversación, selecciona posibles títulos que tengan que ver con ello.",
"Devuelve una lista con los títulos seleccionados, sin ningún otro texto.",
"Si el mensaje del usuario no tiene relación con ningún título, devuelve una lista vacía."
]
}, },
"anp_responses" : { "anp_responses" : {
"type" : "OllamaDriver", "type" : "OllamaDriver",
"host" : "localhost", "url" : "http://localhost:11434/api/generate/",
"port" : 11434,
"model" : "gemma4:e4b", "model" : "gemma4:e4b",
"pool" : "anp" "pool" : "anp",
"stream" : true
} }
}, },
"AnP_AIInterpretersManager_end" : null, "AnP_AIInterpretersManager_end" : null,

View File

@ -4,8 +4,8 @@
from typing import Self, Any, Callable from typing import Self, Any, Callable
from Abstracts.ModelAbstract import ModelAbstract from Abstracts.ModelAbstract import ModelAbstract
from Abstracts.ControllerAbstract import ControllerAbstract from Abstracts.ControllerAbstract import ControllerAbstract
from Interfaces.Application.AnPInterface import AnPInterface
from Models.RequestModel import RequestModel from Models.RequestModel import RequestModel
from Models.PseudoLoRAModel import PseudoLoRAModel
class AIController(ControllerAbstract, ModelAbstract): class AIController(ControllerAbstract, ModelAbstract):
@ -17,6 +17,19 @@ class AIController(ControllerAbstract, ModelAbstract):
# def __get_data(self:Self, request:RequestModel, callback:Callable[..., Any|None]) -> None: # def __get_data(self:Self, request:RequestModel, callback:Callable[..., Any|None]) -> None:
# self.anp.pseudoloras.get("anp_titles") # self.anp.pseudoloras.get("anp_titles")
def __filter_loras_callback()
def __filter_loras(self:Self, message:str, loras:list[PseudoLoRAModel], keys:list[str]) -> None:
has_keys:bool = len(keys) > 0
self.anp.ai_interpreters.request("anp_titles", None, "# Títulos\n\n" + "\n".join(
"- " + lora.title + "" for lora in loras if not has_keys or lora.key in keys
) + "\n\n# Mensaje\n\n" + message, lambda id, response:None, [])
def get_pseudoloras(self:Self, request:RequestModel) -> None:
pass
def test(self:Self, request:RequestModel) -> None: def test(self:Self, request:RequestModel) -> None:
self.anp.ai_interpreters.request("anp_titles", None, request.get("message", "Hola"), lambda id, response: print((id, response.response))) self.anp.ai_interpreters.request("anp_titles", None, request.get("message", "Hola"), lambda id, response: print((id, response.response)))
request.set_response({ request.set_response({

View File

@ -23,8 +23,8 @@ class OllamaDriver(AIInterpretersAbstract, ModelAbstract):
def request(self:Self, def request(self:Self,
session:int|None, session:int|None,
message:str, message:str,
orders:list[str] = [], callback:Optional[Callable[[int, AIResponseModel], None]] = None,
callback:Optional[Callable[[int, AIResponseModel], None]] = None orders:list[str] = []
) -> tuple[int|None, AIResponseModel]: ) -> tuple[int|None, AIResponseModel]:
response:Response response:Response

View File

@ -23,7 +23,13 @@ class AIInterpretersManagerInterface(ABC):
def remove(self:Self, keys:Optional[str|list[str]] = None) -> None:pass def remove(self:Self, keys:Optional[str|list[str]] = None) -> None:pass
@abstractmethod @abstractmethod
def request(self:Self, key:str, session:int|None, message:str, callback:Callable[[int, AIResponseModel], None]) -> int|None:pass def request(self:Self,
key:str,
session:int|None,
message:str,
callback:Callable[[int, AIResponseModel], None],
orders:list[str] = []
) -> int|None:pass
@abstractmethod @abstractmethod
def cancel_request(self:Self, key:str, id:int) -> None:pass def cancel_request(self:Self, key:str, id:int) -> None:pass

View File

@ -88,7 +88,13 @@ class AIInterpretersManager:
if not has_interpreters and pool in self.__pool_requests: if not has_interpreters and pool in self.__pool_requests:
del self.__pool_requests[pool] del self.__pool_requests[pool]
def request(self:Self, key:str, session:int|None, message:str, callback:Callable[[int, AIResponseModel], None]) -> int|None: def request(self:Self,
key:str,
session:int|None,
message:str,
callback:Callable[[int, AIResponseModel], None],
orders:list[str] = []
) -> int|None:
i:int|None = None i:int|None = None
@ -96,7 +102,7 @@ class AIInterpretersManager:
pool:str = self.__interpreters[key].pool pool:str = self.__interpreters[key].pool
i = self.__pool_requests[pool].add(self.__interpreters[key], session, message, callback) i = self.__pool_requests[pool].add(self.__interpreters[key], session, message, callback, orders)
self.__pool_requests[pool].execute() self.__pool_requests[pool].execute()
return i return i

View File

@ -1,7 +1,7 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from typing import Self, Any, Sequence, Callable from typing import Self, Any, Sequence, Callable, Optional
from Interfaces.Application.AnPInterface import AnPInterface from Interfaces.Application.AnPInterface import AnPInterface
from Models.PseudoLoRAModel import PseudoLoRAModel from Models.PseudoLoRAModel import PseudoLoRAModel
from Utils.Common import Common from Utils.Common import Common
@ -89,6 +89,15 @@ class PseudoLoRAsManager:
for lora in self.__loras: for lora in self.__loras:
lora.clean_cache() lora.clean_cache()
def get_asynchronous(self:Self,
each_callback:Callable[[list[PseudoLoRAModel], list[PseudoLoRAModel], Callable[[list[PseudoLoRAModel]], None]], bool],
end_callback:Callable[[list[PseudoLoRAModel]], None],
keys:list[str] = [],
loras:Optional[list[PseudoLoRAModel]] = None,
results:list[PseudoLoRAModel] = []
) -> None:
Common.execute(each_callback, )
def get(self:Self, callback:Callable[[list[PseudoLoRAModel]], bool], keys:list[str] = []) -> list[tuple[str, str]]: def get(self:Self, callback:Callable[[list[PseudoLoRAModel]], bool], keys:list[str] = []) -> list[tuple[str, str]]:
next:list[PseudoLoRAModel] = [] next:list[PseudoLoRAModel] = []