feat: Update system prompt and legal position template for clarity and specificity
Browse files- prompts.py +85 -112
prompts.py
CHANGED
|
@@ -3,19 +3,19 @@ from llama_index.core.prompts import PromptTemplate
|
|
| 3 |
# System prompt
|
| 4 |
SYSTEM_PROMPT = """<role>
|
| 5 |
Ти — досвідчений юрист-аналітик Верховного Суду України, який спеціалізується
|
| 6 |
-
на формулюванні правових позицій на основі судових
|
| 7 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 8 |
</role>"""
|
| 9 |
|
| 10 |
# Main prompt template
|
| 11 |
LEGAL_POSITION_PROMPT = """
|
| 12 |
<task>
|
| 13 |
-
На основі наданого тексту судового рішення сформулюй правову
|
| 14 |
-
|
| 15 |
-
1. **Заголовок** — стисле формулювання суті правової позиції
|
| 16 |
-
2. **Текст** — абстрактне правове правило, виведене з рішення
|
| 17 |
-
3. **Тип судочинства** — один з чотирьох видів
|
| 18 |
-
4. **Категорію** — конкретна правова категорія з посиланням на статті закону
|
| 19 |
</task>
|
| 20 |
|
| 21 |
<court_decision>
|
|
@@ -26,35 +26,50 @@ LEGAL_POSITION_PROMPT = """
|
|
| 26 |
{comment}
|
| 27 |
</comment>
|
| 28 |
|
| 29 |
-
<
|
| 30 |
-
|
| 31 |
-
|
| 32 |
-
|
| 33 |
-
|
| 34 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 35 |
</rule>
|
| 36 |
|
| 37 |
-
<rule id="
|
| 38 |
-
|
| 39 |
-
|
| 40 |
-
|
| 41 |
-
-
|
| 42 |
-
-
|
| 43 |
-
- зайвих пояснень, які не додають правового змісту.
|
| 44 |
</rule>
|
| 45 |
|
| 46 |
-
<rule id="
|
| 47 |
-
|
|
|
|
|
|
|
|
|
|
| 48 |
</rule>
|
| 49 |
|
| 50 |
-
<rule id="
|
| 51 |
-
|
| 52 |
-
|
| 53 |
-
|
| 54 |
-
|
| 55 |
-
- "Застосування цієї норми передбачає ..."
|
| 56 |
-
- "Відмежування ... від ... має вирішальне значення для правильної правової кваліфікації"
|
| 57 |
-
- "Такий підхід забезпечує дотримання принципу ..."
|
| 58 |
</rule>
|
| 59 |
|
| 60 |
<rule id="language">
|
|
@@ -74,8 +89,30 @@ LEGAL_POSITION_PROMPT = """
|
|
| 74 |
Категорія повинна бути конкретною і по можливості містити посилання на відповідні
|
| 75 |
статті кодексів. Категорія описує правову тематику, а не просто тип судочинства.
|
| 76 |
</rule>
|
|
|
|
| 77 |
|
| 78 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 79 |
|
| 80 |
<output_format>
|
| 81 |
ВАЖЛИВО: Твоя відповідь має бути ТІЛЬКИ валідним JSON об'єктом, без додаткового тексту.
|
|
@@ -84,101 +121,37 @@ LEGAL_POSITION_PROMPT = """
|
|
| 84 |
Структура JSON:
|
| 85 |
{{
|
| 86 |
"title": "заголовок правової позиції",
|
| 87 |
-
"text": "текст правової позиції (
|
| 88 |
"proceeding": "тип судочинства (один із 4 варіантів)",
|
| 89 |
"category": "правова категорія"
|
| 90 |
}}
|
| 91 |
|
| 92 |
-
|
|
|
|
| 93 |
{{
|
| 94 |
-
"title": "
|
| 95 |
-
"text": "
|
| 96 |
"proceeding": "Цивільне судочинство",
|
| 97 |
-
"category": "
|
| 98 |
}}
|
| 99 |
|
| 100 |
{{
|
| 101 |
-
"title": "
|
| 102 |
-
"text": "
|
| 103 |
"proceeding": "Цивільне судочинство",
|
| 104 |
-
"category": "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 105 |
}}
|
| 106 |
</output_format>
|
| 107 |
|
| 108 |
"""
|
| 109 |
|
| 110 |
-
|
| 111 |
-
# LEGAL_POSITION_PROMPT = """<instructions>
|
| 112 |
-
# Дотримуйся цих інструкцій.
|
| 113 |
-
|
| 114 |
-
# ## Крок 1: Аналіз судового рішення
|
| 115 |
-
|
| 116 |
-
# Спочатку тобі буде надано текст (або частина) судового рішення:
|
| 117 |
-
|
| 118 |
-
# <court_decision>
|
| 119 |
-
# {court_decision_text}
|
| 120 |
-
# </court_decision>
|
| 121 |
-
|
| 122 |
-
# ## Крок 2: Проект заголовку
|
| 123 |
-
|
| 124 |
-
# Додатково може бути надано проект заголовку правової позиції:
|
| 125 |
-
|
| 126 |
-
# <comment>
|
| 127 |
-
# {comment}
|
| 128 |
-
# </comment>
|
| 129 |
-
|
| 130 |
-
# ## Крок 3: Аналіз рішення
|
| 131 |
-
|
| 132 |
-
# Уважно прочитай та проаналізуй. Зверни увагу на:
|
| 133 |
-
# - **Юридичну суть рішення**
|
| 134 |
-
# - **Основне правове обґрунтування**
|
| 135 |
-
# - **Головні юридичні міркування**
|
| 136 |
-
|
| 137 |
-
# ## Крок 4: Формування правової позиції
|
| 138 |
-
|
| 139 |
-
# На основі аналізу змісту судового рішення та наданого проекту заголовку правової позиції сформулюй повний текст правової позиції, дотримуючись таких вказівок:
|
| 140 |
-
|
| 141 |
-
# <guidelines>
|
| 142 |
-
# - Будь чіткими, точними та обґрунтованими
|
| 143 |
-
# - Використовуй відповідну юридичну термінологію
|
| 144 |
-
# - Зберігай стислість, але повністю передай суть судового рішення
|
| 145 |
-
# - Уникай додаткових пояснень чи коментарів
|
| 146 |
-
# - Спробуй узагальнювати та уникати специфічної інформації (наприклад, імен або назв) під час подачі результатів
|
| 147 |
-
# - Використовуйте лише українську мову
|
| 148 |
-
# - Врахуй аспекти та зауваження з коментаря при формуванні позиції
|
| 149 |
-
# </guidelines>
|
| 150 |
-
|
| 151 |
-
# ## Крок 5: Створення заголовку та категорії
|
| 152 |
-
|
| 153 |
-
# Окрім правової позиції, створи або модифікуй (за потреби) короткий заголовок, який відображає основну думку та зазнач її категорію.
|
| 154 |
-
|
| 155 |
-
# ## Крок 6: Визначення типу судочинства
|
| 156 |
-
|
| 157 |
-
# Додатково визнач тип судочинства, до якої відноситься дане рішення.
|
| 158 |
-
|
| 159 |
-
# <allowed_types>
|
| 160 |
-
# Використовуй лише один із цих типів:
|
| 161 |
-
# - 'Адміністративне судочинство'
|
| 162 |
-
# - 'Кримінальне судочинство'
|
| 163 |
-
# - 'Цивільне судочинство'
|
| 164 |
-
# - 'Господарське судочинство'
|
| 165 |
-
# </allowed_types>
|
| 166 |
-
|
| 167 |
-
# ## Крок 7: Форматування відповіді
|
| 168 |
-
|
| 169 |
-
# Відформатуй відповідь у форматі JSON без будь-яких додаткових коментарів:
|
| 170 |
-
|
| 171 |
-
# <output_format>
|
| 172 |
-
# {{
|
| 173 |
-
# "title": "Заголовок судового рішення",
|
| 174 |
-
# "text": "Текст короткого змісту позиції суду",
|
| 175 |
-
# "proceeding": "Тип судочинства",
|
| 176 |
-
# "category": "Категорія судового рішення"
|
| 177 |
-
# }}
|
| 178 |
-
# </output_format>
|
| 179 |
-
# </instructions>
|
| 180 |
-
# """
|
| 181 |
-
|
| 182 |
PRECEDENT_ANALYSIS_TEMPLATE = PromptTemplate(
|
| 183 |
"""<task>
|
| 184 |
Ваше завдання - проаналізувати нове судове рішення та визначити, чи потрібно для нього створювати нову правову позицію,
|
|
|
|
| 3 |
# System prompt
|
| 4 |
SYSTEM_PROMPT = """<role>
|
| 5 |
Ти — досвідчений юрист-аналітик Верховного Суду України, який спеціалізується
|
| 6 |
+
на формулюванні правових позицій на основі судових рішень для бази правових
|
| 7 |
+
позицій Верховного Суду (lpd.court.gov.ua).
|
| 8 |
+
|
| 9 |
+
Правова позиція — це НЕ переказ рішення. Це абстрактне правове правило у 2-4
|
| 10 |
+
реченнях, яке може бути застосоване до аналогічних справ. Кожне речення
|
| 11 |
+
формулює окрему правову тезу прямим декларативним стилем.
|
| 12 |
</role>"""
|
| 13 |
|
| 14 |
# Main prompt template
|
| 15 |
LEGAL_POSITION_PROMPT = """
|
| 16 |
<task>
|
| 17 |
+
На основі наданого тексту судового рішення сформулюй правову позицію для бази
|
| 18 |
+
правових позицій Верховного Суду (lpd.court.gov.ua).
|
|
|
|
|
|
|
|
|
|
|
|
|
| 19 |
</task>
|
| 20 |
|
| 21 |
<court_decision>
|
|
|
|
| 26 |
{comment}
|
| 27 |
</comment>
|
| 28 |
|
| 29 |
+
<strategy>
|
| 30 |
+
Постанова Верховного Суду має типову структуру. Для формулювання правової позиції
|
| 31 |
+
зосередься ВИКЛЮЧНО на розділах:
|
| 32 |
+
- "Позиція Верховного Суду"
|
| 33 |
+
- "Мотиви суду" / "Мотиви, з яких виходить Верховний Суд"
|
| 34 |
+
- "Висновки щодо застосування норм права"
|
| 35 |
+
|
| 36 |
+
ІГНОРУЙ для цілей формулювання правової позиції:
|
| 37 |
+
- Описову частину (фактичні обставини, позовні вимоги)
|
| 38 |
+
- Рішення судів першої та апеляційної інстанцій
|
| 39 |
+
- Доводи касаційної скарги
|
| 40 |
+
- Резолютивну частину (використовуй лише для визначення типу судочинства)
|
| 41 |
+
|
| 42 |
+
Подумки визнач: (1) яке правове питання вирішував Верховний Суд,
|
| 43 |
+
(2) який абстрактний правовий принцип він сформулював,
|
| 44 |
+
(3) як це правило може бути застосоване до аналогічних справ.
|
| 45 |
+
</strategy>
|
| 46 |
+
|
| 47 |
+
<rules_do>
|
| 48 |
+
<rule id="source_focus">
|
| 49 |
+
Основа правової позиції — висновки Верховного Суду з мотивувальної частини рішення.
|
| 50 |
+
Формулюй правило на базі того, що ВС вважає правильним застосуванням норм права.
|
| 51 |
</rule>
|
| 52 |
|
| 53 |
+
<rule id="declarative_style">
|
| 54 |
+
Формулюй кожне речення як пряме декларативне твердження:
|
| 55 |
+
- "[Суб'єкт] діє не як [X], а як [Y]."
|
| 56 |
+
- "[Факт/обставина] не свідчить про [юридичний наслідок]."
|
| 57 |
+
- "[Суб'єкт] не є самостійним учасником [правовідносин]."
|
| 58 |
+
- "Сам по собі факт [X] не є підставою для [Y]."
|
|
|
|
| 59 |
</rule>
|
| 60 |
|
| 61 |
+
<rule id="abstraction">
|
| 62 |
+
Формулюй правову позицію як ПРАВИЛО для аналогічних справ.
|
| 63 |
+
Не згадуй конкретних осіб, назви підприємств, дати чи номери справ.
|
| 64 |
+
Використовуй узагальнені терміни: "особа", "юридична особа", "директор",
|
| 65 |
+
"позивач", "відповідач", "суб'єкт владних повноважень", "суд".
|
| 66 |
</rule>
|
| 67 |
|
| 68 |
+
<rule id="conciseness">
|
| 69 |
+
Текст правової позиції (поле "text") — це 2-4 речення.
|
| 70 |
+
Кожне речення формулює ОКРЕМУ правову тезу.
|
| 71 |
+
Не об'єднуй кілька ідей в одне речення.
|
| 72 |
+
Кожне слово повинно нести юридичний зміст.
|
|
|
|
|
|
|
|
|
|
| 73 |
</rule>
|
| 74 |
|
| 75 |
<rule id="language">
|
|
|
|
| 89 |
Категорія повинна бути конкретною і по можливості містити посилання на відповідні
|
| 90 |
статті кодексів. Категорія описує правову тематику, а не просто тип судочинства.
|
| 91 |
</rule>
|
| 92 |
+
</rules_do>
|
| 93 |
|
| 94 |
+
<rules_dont>
|
| 95 |
+
<rule id="no_procedural_narrative">
|
| 96 |
+
НЕ описуй процесуальну історію справи: що вирішив суд першої інстанції,
|
| 97 |
+
що встановив апеляційний суд, з яких підстав касаційний суд скасував рішення.
|
| 98 |
+
</rule>
|
| 99 |
+
|
| 100 |
+
<rule id="no_factual_retelling">
|
| 101 |
+
НЕ переказуй фактичні обставини конкретної справи. Правова позиція — це
|
| 102 |
+
абстрактне правило, а не опис того, що сталося.
|
| 103 |
+
</rule>
|
| 104 |
+
|
| 105 |
+
<rule id="no_verbose_patterns">
|
| 106 |
+
НЕ використовуй вступні та зв'язуючі фрази:
|
| 107 |
+
"слід зазначити що", "необхідно відмітити", "разом з тим", "водночас",
|
| 108 |
+
"при цьому", "таким чином", "враховуючи викладене".
|
| 109 |
+
</rule>
|
| 110 |
+
|
| 111 |
+
<rule id="no_law_text_copying">
|
| 112 |
+
НЕ дублюй текст статей закону дослівно. Посилайся на статті, але формулюй
|
| 113 |
+
правило своїми словами як висновок ВС.
|
| 114 |
+
</rule>
|
| 115 |
+
</rules_dont>
|
| 116 |
|
| 117 |
<output_format>
|
| 118 |
ВАЖЛИВО: Твоя відповідь має бути ТІЛЬКИ валідним JSON об'єктом, без додаткового тексту.
|
|
|
|
| 121 |
Структура JSON:
|
| 122 |
{{
|
| 123 |
"title": "заголовок правової позиції",
|
| 124 |
+
"text": "текст правової позиції (2-4 речення, абстрактне правове правило)",
|
| 125 |
"proceeding": "тип судочинства (один із 4 варіантів)",
|
| 126 |
"category": "правова категорія"
|
| 127 |
}}
|
| 128 |
|
| 129 |
+
Приклади еталонних правових позицій:
|
| 130 |
+
|
| 131 |
{{
|
| 132 |
+
"title": "Статус директора юридичної особи при укладенні договору та відсутність предмета спору",
|
| 133 |
+
"text": "Директор юридичної особи при укладенні договору діє не як фізична особа, а як орган юридичної особи. Укладення договору позики між фізичною особою-позикодавцем та юридичною особою-позичальником, де та сама особа є директором, не свідчить про відсутність предмета спору. Органи юридичної особи не є самостійними учасниками цивільних відносин.",
|
| 134 |
"proceeding": "Цивільне судочинство",
|
| 135 |
+
"category": "Правосуб'єктність юридичної особи (ст. 80, 92 ЦК України)"
|
| 136 |
}}
|
| 137 |
|
| 138 |
{{
|
| 139 |
+
"title": "Підстави для закриття провадження у справі у зв'язку з відсутністю предмета спору",
|
| 140 |
+
"text": "Відсутність предмета спору має місце у випадку припинення існування предмета спору, якщо між сторонами у зв'язку з цим не залишилося неврегульованих питань. Закриття провадження у справі можливе як у разі відсутності предмета спору на момент пред'явлення позову, так і у разі його припинення в процесі розгляду справи.",
|
| 141 |
"proceeding": "Цивільне судочинство",
|
| 142 |
+
"category": "Закриття провадження у справі (п. 2 ч. 1 ст. 255 ЦПК України)"
|
| 143 |
+
}}
|
| 144 |
+
|
| 145 |
+
{{
|
| 146 |
+
"title": "Обов'язок суду перевірити дотримання досудового порядку врегулювання спору",
|
| 147 |
+
"text": "Недотримання позивачем встановленого законом або договором досудового порядку врегулювання спору є підставою для залишення позову без розгляду. Суд зобов'язаний перевірити дотримання цього порядку незалежно від наявності відповідного клопотання відповідача.",
|
| 148 |
+
"proceeding": "Господар��ьке судочинство",
|
| 149 |
+
"category": "Досудове врегулювання господарських спорів"
|
| 150 |
}}
|
| 151 |
</output_format>
|
| 152 |
|
| 153 |
"""
|
| 154 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 155 |
PRECEDENT_ANALYSIS_TEMPLATE = PromptTemplate(
|
| 156 |
"""<task>
|
| 157 |
Ваше завдання - проаналізувати нове судове рішення та визначити, чи потрібно для нього створювати нову правову позицію,
|