Spaces:
Sleeping
Sleeping
import json | |
import os | |
from typing import Dict, List | |
from datetime import datetime | |
class PromptTemplateManager: | |
def __init__(self): | |
self.templates_dir = "templates" | |
self.ensure_template_directory() | |
self._templates: Dict[str, Dict] = {} | |
self.load_templates() | |
def ensure_template_directory(self): | |
"""テンプレートディレクトリが存在しない場合は作成""" | |
if not os.path.exists(self.templates_dir): | |
os.makedirs(self.templates_dir) | |
def load_templates(self): | |
"""保存されているテンプレートを読み込む""" | |
template_file = os.path.join(self.templates_dir, "templates.json") | |
if os.path.exists(template_file): | |
try: | |
with open(template_file, "r", encoding="utf-8") as f: | |
self._templates = json.load(f) | |
except Exception as e: | |
print(f"テンプレート読み込みエラー: {str(e)}") | |
self._templates = {} | |
def save_templates(self): | |
"""テンプレートをファイルに保存""" | |
template_file = os.path.join(self.templates_dir, "templates.json") | |
try: | |
with open(template_file, "w", encoding="utf-8") as f: | |
json.dump(self._templates, f, ensure_ascii=False, indent=2) | |
except Exception as e: | |
raise Exception(f"テンプレート保存エラー: {str(e)}") | |
def add_template(self, name: str, content: str, description: str = "") -> bool: | |
"""新しいテンプレートを追加""" | |
if not name or not content: | |
return False | |
template_id = datetime.now().strftime("%Y%m%d_%H%M%S") | |
self._templates[template_id] = { | |
"name": name, | |
"content": content, | |
"description": description, | |
"created_at": datetime.now().strftime("%Y-%m-%d %H:%M:%S") | |
} | |
self.save_templates() | |
return True | |
def get_template(self, template_id: str) -> Dict: | |
"""指定されたIDのテンプレートを取得""" | |
return self._templates.get(template_id, {}) | |
def list_templates(self) -> List[Dict]: | |
"""全てのテンプレートをリスト形式で取得""" | |
return [ | |
{"id": k, **v} | |
for k, v in self._templates.items() | |
] | |
def delete_template(self, template_id: str) -> bool: | |
"""テンプレートを削除""" | |
if template_id in self._templates: | |
del self._templates[template_id] | |
self.save_templates() | |
return True | |
return False | |
def update_template( | |
self, | |
template_id: str, | |
name: str | None = None, | |
content: str | None = None, | |
description: str | None = None | |
) -> bool: | |
"""テンプレートを更新""" | |
if template_id not in self._templates: | |
return False | |
template = self._templates[template_id] | |
if name is not None: | |
template["name"] = name | |
if content is not None: | |
template["content"] = content | |
if description is not None: | |
template["description"] = description | |
self.save_templates() | |
return True |