* Prompt messi in una cartella apposta * Aggiorna importazioni demo per riflettere la nuova struttura delle cartelle API * Aggiunto configurazione dell'applicazione * Spostato ChatManager in app.interface * Update README.md * Aggiornato config per app & api * Rinominato il modulo NewsAPI * fix main infinite loop * API base --> core * pattern singleton per AppConfig. * Estratto i tools nella loro cartella --> api/tools * fix main KeyboardInterrupt * update tests * Docker & libs * fix copilot suggestions
59 lines
1.8 KiB
Python
59 lines
1.8 KiB
Python
import json
|
|
import os
|
|
|
|
class ChatManager:
|
|
"""
|
|
Gestisce la conversazione con la Pipeline:
|
|
- mantiene lo storico dei messaggi
|
|
- invoca la Pipeline per generare risposte
|
|
- salva e ricarica le chat
|
|
"""
|
|
|
|
def __init__(self):
|
|
self.history: list[dict[str, str]] = [] # [{"role": "user"/"assistant", "content": "..."}]
|
|
|
|
def send_message(self, message: str) -> None:
|
|
"""
|
|
Aggiunge un messaggio utente, chiama la Pipeline e salva la risposta nello storico.
|
|
"""
|
|
# Aggiungi messaggio utente allo storico
|
|
self.history.append({"role": "user", "content": message})
|
|
|
|
def receive_message(self, response: str) -> str:
|
|
"""
|
|
Riceve un messaggio dalla pipeline e lo aggiunge allo storico.
|
|
"""
|
|
# Aggiungi risposta assistente allo storico
|
|
self.history.append({"role": "assistant", "content": response})
|
|
|
|
return response
|
|
|
|
def save_chat(self, filename: str = "chat.json") -> None:
|
|
"""
|
|
Salva la chat corrente in src/saves/<filename>.
|
|
"""
|
|
with open(filename, "w", encoding="utf-8") as f:
|
|
json.dump(self.history, f, ensure_ascii=False, indent=2)
|
|
|
|
def load_chat(self, filename: str = "chat.json") -> None:
|
|
"""
|
|
Carica una chat salvata da src/saves/<filename>.
|
|
"""
|
|
if not os.path.exists(filename):
|
|
self.history = []
|
|
return
|
|
with open(filename, "r", encoding="utf-8") as f:
|
|
self.history = json.load(f)
|
|
|
|
def reset_chat(self) -> None:
|
|
"""
|
|
Resetta lo storico della chat.
|
|
"""
|
|
self.history = []
|
|
|
|
def get_history(self) -> list[dict[str, str]]:
|
|
"""
|
|
Restituisce lo storico completo della chat.
|
|
"""
|
|
return self.history
|