# Хранение и загрузка промптов --- ## Загрузчик (PromptLoader) ```python from pathlib import Path import yaml, re AGENT_SPECS_DIR = Path("docs/specs/agents") AGENT_PROMPTS_YAML = Path("docs/agent_prompts.yaml") def get_prompt_config(role: str) -> dict | None: """Get prompt config for a role.""" # 1. Пробуем YAML config = _load_from_yaml(role) if config: return config # 2. Пробуем MD return _load_from_spec(role) def _load_from_yaml(role: str) -> dict | None: """Load from docs/agent_prompts.yaml.""" if not AGENT_PROMPTS_YAML.exists(): return None data = yaml.safe_load(AGENT_PROMPTS_YAML.read_text(encoding="utf-8")) return data.get(role) if data else None def _load_from_spec(role: str) -> dict | None: """Load from docs/specs/agents/.md.""" spec_path = AGENT_SPECS_DIR / f"{role}.md" if not spec_path.exists(): return None content = spec_path.read_text(encoding="utf-8") match = re.search(r"## Prompt Template\n+```\n(.+?)\n```", content, re.DOTALL) if not match: return None return { "system_prompt": match.group(1).strip(), "provider": "yandex_gpt", "temperature": 0.7, "max_tokens": 2000, } ``` --- ## Пример YAML-файла `docs/agent_prompts.yaml` ```yaml coordinator: system_prompt: "Ты — координатор..." provider: yandex_gpt temperature: 0.7 max_tokens: 2000 business_analyst: system_prompt: "Ты — бизнес-аналитик..." provider: yandex_gpt temperature: 0.5 max_tokens: 3000 legal_expert: system_prompt: "Ты — юрист..." provider: gigachat # Для юридических вопросов temperature: 0.3 max_tokens: 3000 ``` --- ## Пример MD-файла `docs/specs/agents/business_analyst.md` ```markdown # Бизнес-аналитик **Провайдер:** Yandex GPT **Температура:** 0.5 **Макс. токенов:** 3000 ## Prompt Template ``` Ты — бизнес-аналитик. Проанализируй идею и оцени: 1. Целевую аудиторию 2. ROI 3. Сроки реализации ... ``` ``` --- ## [ASK] - Какой формат использовать по умолчанию? (рекомендация: YAML + MD fallback) - Нужна ли валидация placeholder'ов в промптах? (да, {...} должны быть заменены) - Нужна ли версионирование промптов? (да, через git — каждый промпт MD/YAML файл)