Add new file
This commit is contained in:
72
bots/commands/expert.py
Normal file
72
bots/commands/expert.py
Normal file
@@ -0,0 +1,72 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Экспертные команды: !summary (суммаризация документа) и !metrics (извлечение KPI).
|
||||
Используют RAGClient с intent_override.
|
||||
"""
|
||||
|
||||
import logging
|
||||
from core.commands.base import Command
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class SummaryCommand(Command):
|
||||
name = "!summary"
|
||||
aliases = ["/summary"]
|
||||
|
||||
async def execute(self, msg, args: str, user_jid: str, room_jid: str = None):
|
||||
"""
|
||||
Суммаризация последнего загруженного документа.
|
||||
Отправляет запрос на RAG-сервер с intent_override = 'SUMMARY'.
|
||||
"""
|
||||
try:
|
||||
result = await self.bot.rag_client.query(
|
||||
query=args.strip() or "Сделай суммаризацию последнего документа",
|
||||
user_jid=user_jid,
|
||||
room_jid=room_jid,
|
||||
prompts=self.bot.prompts,
|
||||
intent_override="SUMMARY",
|
||||
last_file_path=None,
|
||||
last_file_text=self.bot.last_file_texts.get(user_jid)
|
||||
)
|
||||
answer = result.get('answer', '⚠️ Не удалось получить суммаризацию.')
|
||||
reply = msg.reply(answer)
|
||||
except Exception as e:
|
||||
logger.exception(f"Ошибка в !summary: {e}")
|
||||
reply = msg.reply(f"❌ Ошибка: {e}")
|
||||
if reply:
|
||||
reply.send()
|
||||
|
||||
def get_help(self) -> str:
|
||||
return "Суммаризация последнего документа. Использование: `!summary`"
|
||||
|
||||
|
||||
class MetricsCommand(Command):
|
||||
name = "!metrics"
|
||||
aliases = ["/metrics"]
|
||||
|
||||
async def execute(self, msg, args: str, user_jid: str, room_jid: str = None):
|
||||
"""
|
||||
Извлечение метрик (KPI) из базы знаний.
|
||||
Отправляет запрос на RAG-сервер с intent_override = 'METRICS'.
|
||||
"""
|
||||
try:
|
||||
result = await self.bot.rag_client.query(
|
||||
query="Извлеки все KPI из документов",
|
||||
user_jid=user_jid,
|
||||
room_jid=room_jid,
|
||||
prompts=self.bot.prompts,
|
||||
intent_override="METRICS",
|
||||
last_file_path=None,
|
||||
last_file_text=None
|
||||
)
|
||||
answer = result.get('answer', '⚠️ Не удалось извлечь метрики.')
|
||||
reply = msg.reply(answer)
|
||||
except Exception as e:
|
||||
logger.exception(f"Ошибка в !metrics: {e}")
|
||||
reply = msg.reply(f"❌ Ошибка: {e}")
|
||||
if reply:
|
||||
reply.send()
|
||||
|
||||
def get_help(self) -> str:
|
||||
return "Извлечение KPI из базы знаний. Использование: `!metrics`"
|
||||
Reference in New Issue
Block a user