#wip(py): Building PseudoLoRAs filter.
This commit is contained in:
parent
8bd5f46c3a
commit
3412ff05b5
@ -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,
|
||||||
|
|||||||
@ -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({
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
@ -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
|
||||||
|
|||||||
@ -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] = []
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user