cerebro: el modelo conoce sus areas del indice real, no de una lista fija (honesto en cualquier clon)
This commit is contained in:
parent
29860fac86
commit
12987539a4
2 changed files with 55 additions and 15 deletions
|
|
@ -155,5 +155,39 @@ def contexto(pregunta: str, cuantos: int = 5, minimo: float = 0.35) -> str:
|
|||
return "\n".join(lineas)
|
||||
|
||||
|
||||
def resumen(tope_temas: int = 10) -> str:
|
||||
"""Un resumen de QUE hay indexado, para que el modelo sepa de que sabe.
|
||||
|
||||
Se deriva del indice de VERDAD, no de una lista fija en el prompt. Asi es
|
||||
honesto en cualquier maquina: en la del usuario dice sus areas reales; en un
|
||||
clon sin apuntes propios dira lo que haya (comandos de Linux) o nada. Lo usa
|
||||
el cerebro para el prompt de sistema; evita que presuma de un conocimiento
|
||||
que en esa maquina no tiene."""
|
||||
if not _carga() or not _entradas:
|
||||
return ""
|
||||
from collections import Counter
|
||||
perfiles, temas = Counter(), Counter()
|
||||
n_comandos = 0
|
||||
for e in _entradas:
|
||||
t = e.get("tipo")
|
||||
if t == "comando":
|
||||
n_comandos += 1
|
||||
elif t in ("apunte", "metodologia", "ficha", "pregunta") and e.get("perfil"):
|
||||
perfiles[e["perfil"]] += 1
|
||||
if e.get("tema"):
|
||||
temas[e["tema"]] += 1
|
||||
partes = []
|
||||
if perfiles:
|
||||
partes.append("apuntes de " + ", ".join(p for p, _ in perfiles.most_common(6)))
|
||||
if temas:
|
||||
partes.append("metodologia en " + ", ".join(t for t, _ in temas.most_common(tope_temas)))
|
||||
if n_comandos:
|
||||
partes.append(f"{n_comandos} comandos de Linux")
|
||||
if not partes:
|
||||
return ""
|
||||
return ("En los apuntes que tienes indexados (buscalos con buscar_en_apuntes) "
|
||||
"hay: " + "; ".join(partes) + ".")
|
||||
|
||||
|
||||
def disponible() -> bool:
|
||||
return os.path.exists(INDICE)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue