2025-03-09 21:33:45 +08:00
|
|
|
from abc import ABC, abstractmethod
|
|
|
|
|
from typing import List, Dict
|
|
|
|
|
from config.logger import setup_logging
|
|
|
|
|
|
|
|
|
|
TAG = __name__
|
|
|
|
|
logger = setup_logging()
|
|
|
|
|
|
2025-03-11 00:25:33 +08:00
|
|
|
|
2025-03-09 21:33:45 +08:00
|
|
|
class IntentProviderBase(ABC):
|
|
|
|
|
def __init__(self, config):
|
|
|
|
|
self.config = config
|
|
|
|
|
|
|
|
|
|
def set_llm(self, llm):
|
|
|
|
|
self.llm = llm
|
2025-03-25 14:27:10 +08:00
|
|
|
# 获取模型名称和类型信息
|
2025-04-07 13:23:22 +08:00
|
|
|
model_name = getattr(llm, "model_name", str(llm.__class__.__name__))
|
2025-03-25 14:27:10 +08:00
|
|
|
# 记录更详细的日志
|
2025-03-28 17:17:14 +08:00
|
|
|
logger.bind(tag=TAG).info(f"意图识别设置LLM: {model_name}")
|
2025-03-11 00:25:33 +08:00
|
|
|
|
2025-03-09 21:33:45 +08:00
|
|
|
@abstractmethod
|
2025-03-13 00:54:01 +08:00
|
|
|
async def detect_intent(self, conn, dialogue_history: List[Dict], text: str) -> str:
|
2025-03-09 21:33:45 +08:00
|
|
|
"""
|
|
|
|
|
检测用户最后一句话的意图
|
|
|
|
|
Args:
|
|
|
|
|
dialogue_history: 对话历史记录列表,每条记录包含role和content
|
|
|
|
|
Returns:
|
|
|
|
|
返回识别出的意图,格式为:
|
|
|
|
|
- "继续聊天"
|
2025-04-07 13:23:22 +08:00
|
|
|
- "结束聊天"
|
2025-03-09 21:33:45 +08:00
|
|
|
- "播放音乐 歌名" 或 "随机播放音乐"
|
2025-03-25 14:27:10 +08:00
|
|
|
- "查询天气 地点名" 或 "查询天气 [当前位置]"
|
2025-03-09 21:33:45 +08:00
|
|
|
"""
|
|
|
|
|
pass
|