| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- # coding=utf-8
- """
- 提示词模板加载工具
- 从配置目录中加载 [system] / [user] 格式的提示词文件,
- 供 analyzer、translator、filter 等模块共享使用。
- """
- from pathlib import Path
- from typing import Tuple
- # 项目 config 根目录
- _CONFIG_ROOT = Path(__file__).parent.parent.parent / "config"
- def load_prompt_template(
- prompt_file: str,
- config_subdir: str = "",
- label: str = "AI",
- ) -> Tuple[str, str]:
- """
- 加载提示词模板文件,解析 [system] 和 [user] 部分。
- Args:
- prompt_file: 提示词文件名
- config_subdir: config 下的子目录(如 "ai_filter"),为空则直接在 config/ 下查找
- label: 日志标签,用于提示文件缺失时的打印
- Returns:
- (system_prompt, user_prompt_template) 元组
- """
- config_dir = _CONFIG_ROOT / config_subdir if config_subdir else _CONFIG_ROOT
- prompt_path = config_dir / prompt_file
- if not prompt_path.exists():
- print(f"[{label}] 提示词文件不存在: {prompt_path}")
- return "", ""
- content = prompt_path.read_text(encoding="utf-8")
- system_prompt = ""
- user_prompt = ""
- if "[system]" in content and "[user]" in content:
- parts = content.split("[user]")
- system_part = parts[0]
- user_part = parts[1] if len(parts) > 1 else ""
- if "[system]" in system_part:
- system_prompt = system_part.split("[system]")[1].strip()
- user_prompt = user_part.strip()
- else:
- user_prompt = content
- return system_prompt, user_prompt
|