77 lines
2.5 KiB
Python
77 lines
2.5 KiB
Python
#!/usr/bin/env python3
|
||
"""
|
||
System prompt loader utilities
|
||
"""
|
||
import os
|
||
|
||
|
||
def load_system_prompt(project_dir: str, language: str = None) -> str:
|
||
"""
|
||
优先使用项目目录的system_prompt,没有才使用默认的system_prompt_default.md
|
||
|
||
Args:
|
||
project_dir: 项目目录路径
|
||
language: 语言代码,如 'zh', 'en', 'jp' 等(此参数将被忽略)
|
||
|
||
Returns:
|
||
str: 加载到的系统提示词内容,如果都未找到则返回空字符串
|
||
"""
|
||
system_prompt = None
|
||
|
||
# 1. 优先读取项目目录中的system_prompt
|
||
system_prompt_file = os.path.join(project_dir, "system_prompt.md")
|
||
if os.path.exists(system_prompt_file):
|
||
try:
|
||
with open(system_prompt_file, 'r', encoding='utf-8') as f:
|
||
system_prompt = f.read()
|
||
print(f"Using project-specific system prompt")
|
||
except Exception as e:
|
||
print(f"Failed to load project system prompt: {str(e)}")
|
||
system_prompt = None
|
||
|
||
# 2. 如果项目目录没有,使用默认提示词
|
||
if not system_prompt:
|
||
try:
|
||
default_prompt_file = os.path.join("prompt", "system_prompt_default.md")
|
||
with open(default_prompt_file, 'r', encoding='utf-8') as f:
|
||
system_prompt = f.read()
|
||
print(f"Using default system prompt from prompt folder")
|
||
except Exception as e:
|
||
print(f"Failed to load default system prompt: {str(e)}")
|
||
system_prompt = None
|
||
|
||
return system_prompt or ""
|
||
|
||
|
||
def get_available_prompt_languages() -> list:
|
||
"""
|
||
获取可用的提示词语言列表
|
||
|
||
Returns:
|
||
list: 可用语言代码列表,如 ['zh', 'en', 'jp']
|
||
"""
|
||
prompt_dir = "prompt"
|
||
available_languages = []
|
||
|
||
if os.path.exists(prompt_dir):
|
||
for filename in os.listdir(prompt_dir):
|
||
if filename.startswith("system_prompt_") and filename.endswith(".md"):
|
||
# 提取语言代码,如从 "system_prompt_zh.md" 中提取 "zh"
|
||
language = filename[len("system_prompt_"):-len(".md")]
|
||
available_languages.append(language)
|
||
|
||
return available_languages
|
||
|
||
|
||
def is_language_available(language: str) -> bool:
|
||
"""
|
||
检查指定语言的提示词是否可用
|
||
|
||
Args:
|
||
language: 语言代码
|
||
|
||
Returns:
|
||
bool: 如果可用返回True,否则返回False
|
||
"""
|
||
prompt_file = os.path.join("prompt", f"system_prompt_{language}.md")
|
||
return os.path.exists(prompt_file) |