Improve RAG on TUI

This commit is contained in:
Dita Aji Pratama 2026-07-21 18:23:56 +07:00
parent 9ded4e7b9e
commit 685e97d4ef
2 changed files with 50 additions and 43 deletions

View File

@ -7,6 +7,8 @@ from .render import init_colors, draw
from .input import handle_key from .input import handle_key
from .agent import log, WELCOME_ART from .agent import log, WELCOME_ART
from services.session_manager_neo import NeoSessionManager, NeoSession from services.session_manager_neo import NeoSessionManager, NeoSession
from lib import ragroleplay
from lib import personality as personality_mod
class HendrikTUI: class HendrikTUI:
@ -51,23 +53,20 @@ class HendrikTUI:
"model": self.llm.model, "model": self.llm.model,
} }
def new_session(self): def _inject_user_context(self) -> str | None:
self.current_session = None
# --- Context Injection for TUI ---
import config
from lib import ragroleplay
user_id = config.TUI_USER_ID user_id = config.TUI_USER_ID
context_text = None if not user_id:
return None
if user_id:
try: try:
# Meniru logika telegram_client.py untuk load user context results = ragroleplay.user_load(
results = ragroleplay.user_load(config.ragroleplay_db_path, unique_id=user_id, character=config.AGENT_CHARACTER or "Lily") config.ragroleplay_db_path,
user_id=user_id,
character=personality_mod.PERSONALITY.name
)
if results: if results:
u = results[0] u = results[0]
context_text = ( return (
f'[User Context]\n' f'[User Context]\n'
f'ID: {u["id"]}\n' f'ID: {u["id"]}\n'
f'Nama: {u["fullname"]} ({u["nickname"]})\n' f'Nama: {u["fullname"]} ({u["nickname"]})\n'
@ -78,28 +77,33 @@ class HendrikTUI:
f'Persona: {u.get("persona", "-") or "-"}\n' f'Persona: {u.get("persona", "-") or "-"}\n'
f'Telegram: {u.get("telegram_id", "-") or "-"} / @{u.get("telegram_username", "-") or "-"}\n' f'Telegram: {u.get("telegram_id", "-") or "-"} / @{u.get("telegram_username", "-") or "-"}\n'
f'XMPP: {u.get("xampp_username", "-") or "-"}\n' f'XMPP: {u.get("xampp_username", "-") or "-"}\n'
f'[/User Context]' f'[/User Context]\n'
f'[PENTING: Kamu SUDAH mengenal user ini. WAJIB panggil memories_latest(character="{personality_mod.PERSONALITY.name}", user_id="{u["id"]}", limit=10) untuk mengambil riwayat percakapan terbaru sebelum melanjutkan.]'
) )
else: else:
context_text = ( return (
f'[User Context: Pengguna baru — belum ada di database]\n' f'[User Context: Pengguna baru — belum ada di database]\n'
f'[Platform: TUI]\n' f'[Platform: TUI]\n'
f'[PENTING: Kamu BELUM mengenal user ini. WAJIB tanya nama sebagai pembuka.]' f'[PENTING: Kamu BELUM mengenal user ini. WAJIB tanya nama sebagai pembuka. '
f'Setelah nama diketahui, simpan via users_store. '
f'Lanjutkan percakapan natural dan proaktif melengkapi data user lainnya di pesan berikutnya.]'
) )
except Exception as e: except Exception:
# Log error silently like in telegram_client return None
pass
def new_session(self):
self.current_session = None
system_prompt = self.build_system_prompt( system_prompt = self.build_system_prompt(
tools_definition=self.tools_def, tools_definition=self.tools_def,
character=config.AGENT_CHARACTER or None, character=config.AGENT_CHARACTER or None,
skills=config.AGENT_SKILLS.split(",") if config.AGENT_SKILLS else None, skills=config.AGENT_SKILLS.split(",") if config.AGENT_SKILLS else None,
) )
# Inject context if found
messages = [{"role": "system", "content": system_prompt}] messages = [{"role": "system", "content": system_prompt}]
if context_text:
messages.append({"role": "system", "content": context_text}) context = self._inject_user_context()
if context:
messages.append({"role": "system", "content": context})
self.messages = messages self.messages = messages
# --------------------------------- # ---------------------------------
@ -165,6 +169,9 @@ class HendrikTUI:
character=config.AGENT_CHARACTER or None, character=config.AGENT_CHARACTER or None,
skills=config.AGENT_SKILLS.split(",") if config.AGENT_SKILLS else None, skills=config.AGENT_SKILLS.split(",") if config.AGENT_SKILLS else None,
)}] )}]
context = self._inject_user_context()
if context:
self.messages.append({"role": "system", "content": context})
log(self, "welcome", WELCOME_ART) log(self, "welcome", WELCOME_ART)
while self.running: while self.running:

View File

@ -26,7 +26,7 @@ schema_users_store = {
"telegram_username" : {"type": "string", "description": "Telegram username"}, "telegram_username" : {"type": "string", "description": "Telegram username"},
"xampp_username" : {"type": "string", "description": "XAMPP username"} "xampp_username" : {"type": "string", "description": "XAMPP username"}
}, },
"required": ["fullname", "nickname", "character", "telegram_id"] "required": ["fullname", "nickname", "character"]
} }
} }
} }