mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-03-20 03:57:30 +08:00
51 lines
1.5 KiB
Python
51 lines
1.5 KiB
Python
"""提示词管理器"""
|
|
|
|
from pathlib import Path
|
|
from typing import Dict
|
|
|
|
from app.log import logger
|
|
|
|
|
|
class PromptManager:
|
|
"""提示词管理器"""
|
|
|
|
def __init__(self, prompts_dir: str = None):
|
|
if prompts_dir is None:
|
|
self.prompts_dir = Path(__file__).parent
|
|
else:
|
|
self.prompts_dir = Path(prompts_dir)
|
|
self.prompts_cache: Dict[str, str] = {}
|
|
|
|
def load_prompt(self, prompt_name: str) -> str:
|
|
"""加载指定的提示词"""
|
|
if prompt_name in self.prompts_cache:
|
|
return self.prompts_cache[prompt_name]
|
|
|
|
prompt_file = self.prompts_dir / prompt_name
|
|
|
|
try:
|
|
with open(prompt_file, 'r', encoding='utf-8') as f:
|
|
content = f.read().strip()
|
|
|
|
# 缓存提示词
|
|
self.prompts_cache[prompt_name] = content
|
|
|
|
logger.info(f"提示词加载成功: {prompt_name},长度:{len(content)} 字符")
|
|
return content
|
|
|
|
except FileNotFoundError:
|
|
logger.error(f"提示词文件不存在: {prompt_file}")
|
|
raise
|
|
except Exception as e:
|
|
logger.error(f"加载提示词失败: {prompt_name}, 错误: {e}")
|
|
raise
|
|
|
|
def get_agent_prompt(self) -> str:
|
|
"""获取智能体提示词"""
|
|
return self.load_prompt("Agent Prompt.txt")
|
|
|
|
def clear_cache(self):
|
|
"""清空缓存"""
|
|
self.prompts_cache.clear()
|
|
logger.info("提示词缓存已清空")
|