Files
contracts/History/llm-analysis/opus-prompt-v2.md
T

62 lines
3.3 KiB
Markdown

# Opus Prompt Improvement — Few-Shot + Domain Glossary
Дата: 2026-06-23 | Источник: Opus (раунд 3, старый чат)
Связано: llm_prompt.py, prompt-strategy.md, provenance-columns.md
---
## Что попросили у Opus
Улучшить промпты для extract (первый документ) и diff (сравнение ДС). Ключевые требования:
- Few-shot примеры на домене ЦОД/colocation
- Доменный глоссарий (кВт, юнит, стойко-место, IP, каналы)
- Edge-cases инструкция
- JSON-формат не менять
- Новые actions не добавлять
## Что Opus выдал
### EXTRACT
- Добавлен доменный глоссарий
- 1 few-shot пример (стойко-место + IP-адрес)
- Усилены правила чисел и null
### DIFF
- Добавлен доменный глоссарий
- 4 few-shot примера:
1. `partial`, UPDATE цены
2. `partial`, ADD + UPDATE qty + UPDATE мощности (внутри name)
3. `full_replace` (новая редакция приложения)
4. `UNRESOLVED` (не с чем сопоставить)
- Edge-cases: сопоставление по смыслу (не по символам), qty++ = UPDATE, мощность внутри name, приоритет full_replace, null при отсутствии данных
## Какие проблемы решает
| Проблема | Решение |
|----------|---------|
| Модель путает единицы (кВт vs шт.) | Глоссарий |
| Не понимает что «Аренда стойко-места» = «Colocation» | Сопоставление по смыслу |
| При увеличении qty создаёт ADD вместо UPDATE | Пример 2 |
| full_replace: пишет UPDATE вместо ADD | Пример 3 |
| Не создаёт UNRESOLVED для незнакомых услуг | Пример 4 |
| «55 000,00 руб.» → строка вместо числа | Правило чисел |
## Размещение
Два варианта:
1. Заменить `FALLBACK_EXTRACT` / `FALLBACK_DIFF` в `llm_prompt.py`
2. Обновить активный промпт в БД через UI (вкладка «⚙ Промпты»)
**Рекомендация:** оба. Fallback в Python — защита если БД недоступна. БД — основной источник. Сделать одновременно.
## ⚠️ Важно: фигурные скобки в Python
В Python-строке (тройные кавычки) `{` и `}` НЕ требуют удвоения — они не являются f-string placeholder'ами. Удвоение (`{{`, `}}`) нужно ТОЛЬКО если используется `.format()`. В текущем коде промпты — обычные строки в тройных кавычках, подстановка через `.replace()`. Поэтому фигурные скобки оставляем одинарными.
## Статус
- [x] Opus выдал готовые промпты
- [ ] Заменить в `llm_prompt.py`
- [ ] Обновить в БД (сохранить как новую версию)
- [ ] Bump + пуш + синк VM