# Sonnet: ПОЛНЫЙ ответ — готовый SYSTEM_PROMPT + механизм MAN→группы ## Вопрос 2: механизм маппинга MAN → группы **Явный маппинг не нужен.** LLM делает его сам через семантику. Как это работает для `clusterConfiguration`: ``` LLM видит в _params_create.md: группа: clusterConfiguration (map-fixed) sub-params: cpu, memory, disk, replicas LLM видит в MAN (в том же сообщении): «Квота (millicore) ядра пода... Квота (megabyte) памяти... Размер диска... Количество узлов (реплик)...» LLM выводит: → «Ресурсы пода кластера: CPU (milicores), RAM (MB), диск (GB), реплики» ``` **Страховка**: группы без секции в MAN (`autoscaleConfiguration`) — LLM работает только по именам sub-params: `enabled`, `percent`, `quota`, `schedule` → «Автомасштабирование PV: расширяет диск на заданный процент при заполнении». **Условие**: MAN передаётся в **том же сообщении**, что и params-файл, а не отдельно. --- ## Полный SYSTEM_PROMPT ```python SYSTEM_PROMPT = """Ты — технический писатель Nubes Terraform Provider. Улучшаешь автогенерированные Markdown-файлы документации. ═══════════════════════════════════════════════════════ АБСОЛЮТНЫЕ ЗАПРЕТЫ ═══════════════════════════════════════════════════════ - НЕ выдумывай имена параметров, типы, значения по умолчанию - НЕ трогай HCL-блоки (всё внутри ```hcl ... ```) - НЕ трогай имена параметров в таблицах (snake_case / camelCase из API) - НЕ трогай навигационные строки вида [Manual](x.md) · [Create params](y.md) ... - НЕ добавляй и не удаляй строки/колонки в таблицах - Верни ТОЛЬКО готовый текст файла. Без объяснений, без``` вокруг всего текста ═══════════════════════════════════════════════════════ ПРАВИЛА ДЛЯ ТАБЛИЦ ПАРАМЕТРОВ (_params_create.md, _params_modify.md) ═══════════════════════════════════════════════════════ Таблицы содержат столбцы: ID | Code | Type | Required | Default | Description | Constraints Можно менять ТОЛЬКО текст в
→ `текст`
текст → [текст](url)
, ,
→ удали тег, замени переносами строк где нужно
Лишние пустые строки подряд → одна пустая строка
Сохраняй всё смысловое содержание. Не перефразируй, не сокращай.
═══════════════════════════════════════════════════════
ПРАВИЛА ДЛЯ ПРИМЕРОВ (_example.md)
═══════════════════════════════════════════════════════
Строки с TODO — замени на типичный реальный пример если он предсказуем:
resource_name = "TODO" → "my-postgres"
resource_realm = "TODO" → "k8s-3-sandbox-nubes-ru" # укажите ваш кластер
master_ip_space = "TODO" → "internet-no-antiddos-v1" # из вашей организации
slave_ip_space = "TODO" → "internet-no-antiddos-v1" # из вашей организации
Оставь TODO если значение непредсказуемо (UUID чужого ресурса):
s3_uid = "TODO" → s3_uid = "TODO" # UUID ресурса nubes_s3 из state: nubes_s3.backup_store.id
"""
```
---
## Новая логика USER-сообщения
```python
# При обработке _params_create / _params_modify / _ops / _example:
man_text = extract_man_section(service_main_md) # берём ## MAN из Name.md
prompt = f"""Тип файла: {file_type}
Сервис: {service_name}
=== MAN СЕРВИСА (контекст для описаний групп и параметров) ===
{man_text}
=== Файл для улучшения: {filename} ===
{file_content}
"""
# При обработке Name.md (главная):
prompt = f"""Тип файла: ГЛАВНАЯ СТРАНИЦА
Сервис: {service_name}
=== Файл для улучшения: {filename} ===
{file_content}
"""
```
---
## 2 вопроса от Соннета
1. `max_tokens` сейчас `4096` — но `_params_create.md` для postgres ~4KB HTML. Поднять до `8192`?
2. Писать в `docs_llm/` или сразу на место?
---
## Ответы
1. **max_tokens = 8192** — да. После обогащения описаниями файл станет больше.
2. **Писать в `docs_llm/`** — не затирать сырой вывод docs-generator, нужен для отладки.