Spaces:
Runtime error
Runtime error
Only AI search
Browse files- README.md +1 -1
- main.py +16 -16
- prompts.py +43 -20
README.md
CHANGED
|
@@ -1,5 +1,5 @@
|
|
| 1 |
---
|
| 2 |
-
title: "Legal Position Analyzer"
|
| 3 |
emoji: "⚖️"
|
| 4 |
colorFrom: "blue"
|
| 5 |
colorTo: "green"
|
|
|
|
| 1 |
---
|
| 2 |
+
title: "Legal Position Analyzer for new Court Decisions"
|
| 3 |
emoji: "⚖️"
|
| 4 |
colorFrom: "blue"
|
| 5 |
colorTo: "green"
|
main.py
CHANGED
|
@@ -194,7 +194,7 @@ class PrecedentAnalysisWorkflow(Workflow):
|
|
| 194 |
|
| 195 |
for position in parsed_response["relevant_positions"]:
|
| 196 |
position_text = (
|
| 197 |
-
f"* [{position['source_index']}]
|
| 198 |
)
|
| 199 |
response_lines.append(position_text)
|
| 200 |
|
|
@@ -383,16 +383,16 @@ def generate_legal_position(court_decision_text, user_question):
|
|
| 383 |
|
| 384 |
def create_gradio_interface():
|
| 385 |
with gr.Blocks() as app:
|
| 386 |
-
gr.Markdown("# Аналізатор
|
| 387 |
|
| 388 |
with gr.Row():
|
| 389 |
url_input = gr.Textbox(label="URL судового рішення:")
|
| 390 |
-
question_input = gr.Textbox(label="
|
| 391 |
|
| 392 |
with gr.Row():
|
| 393 |
generate_position_button = gr.Button("Генерувати короткий зміст позиції суду")
|
| 394 |
search_with_ai_button = gr.Button("Пошук із ШІ", interactive=False)
|
| 395 |
-
search_without_ai_button = gr.Button("Пошук без ШІ")
|
| 396 |
analyze_button = gr.Button("Аналіз", interactive=False)
|
| 397 |
|
| 398 |
position_output = gr.Markdown(label="Короткий зміст позиції суду за введеним рішенням")
|
|
@@ -467,8 +467,8 @@ def create_gradio_interface():
|
|
| 467 |
)
|
| 468 |
|
| 469 |
# Формуємо вивід
|
| 470 |
-
output = f"**Аналіз
|
| 471 |
-
output += "
|
| 472 |
|
| 473 |
# Розбиваємо текст відповіді на рядки
|
| 474 |
analysis_lines = response_text.split('\n')
|
|
@@ -521,16 +521,16 @@ def create_gradio_interface():
|
|
| 521 |
outputs=analyze_button
|
| 522 |
)
|
| 523 |
|
| 524 |
-
search_without_ai_button.click(
|
| 525 |
-
|
| 526 |
-
|
| 527 |
-
|
| 528 |
-
)
|
| 529 |
-
search_without_ai_button.click(
|
| 530 |
-
|
| 531 |
-
|
| 532 |
-
|
| 533 |
-
)
|
| 534 |
|
| 535 |
analyze_button.click(
|
| 536 |
fn=analyze_action,
|
|
|
|
| 194 |
|
| 195 |
for position in parsed_response["relevant_positions"]:
|
| 196 |
position_text = (
|
| 197 |
+
f"* [{position['source_index']}]: {position['description']} "
|
| 198 |
)
|
| 199 |
response_lines.append(position_text)
|
| 200 |
|
|
|
|
| 383 |
|
| 384 |
def create_gradio_interface():
|
| 385 |
with gr.Blocks() as app:
|
| 386 |
+
gr.Markdown("# Аналізатор релевантних Правових Позицій Верховного Суду для нового судового рішення")
|
| 387 |
|
| 388 |
with gr.Row():
|
| 389 |
url_input = gr.Textbox(label="URL судового рішення:")
|
| 390 |
+
question_input = gr.Textbox(label="Уточнююче питання для аналізу:")
|
| 391 |
|
| 392 |
with gr.Row():
|
| 393 |
generate_position_button = gr.Button("Генерувати короткий зміст позиції суду")
|
| 394 |
search_with_ai_button = gr.Button("Пошук із ШІ", interactive=False)
|
| 395 |
+
# search_without_ai_button = gr.Button("Пошук без ШІ")
|
| 396 |
analyze_button = gr.Button("Аналіз", interactive=False)
|
| 397 |
|
| 398 |
position_output = gr.Markdown(label="Короткий зміст позиції суду за введеним рішенням")
|
|
|
|
| 467 |
)
|
| 468 |
|
| 469 |
# Формуємо вивід
|
| 470 |
+
output = f"**Аналіз ШІ:**\n{response_text}\n\n"
|
| 471 |
+
output += "**Наявні в базі Правові Позицій Верховного Суду:**\n\n"
|
| 472 |
|
| 473 |
# Розбиваємо текст відповіді на рядки
|
| 474 |
analysis_lines = response_text.split('\n')
|
|
|
|
| 521 |
outputs=analyze_button
|
| 522 |
)
|
| 523 |
|
| 524 |
+
# search_without_ai_button.click(
|
| 525 |
+
# fn=search_without_ai_action,
|
| 526 |
+
# inputs=url_input,
|
| 527 |
+
# outputs=[search_output, state_nodes]
|
| 528 |
+
# )
|
| 529 |
+
# search_without_ai_button.click(
|
| 530 |
+
# fn=lambda: gr.update(interactive=True),
|
| 531 |
+
# inputs=None,
|
| 532 |
+
# outputs=analyze_button
|
| 533 |
+
# )
|
| 534 |
|
| 535 |
analyze_button.click(
|
| 536 |
fn=analyze_action,
|
prompts.py
CHANGED
|
@@ -41,24 +41,47 @@ LEGAL_POSITION_PROMPT = """Дотримуйся цих інструкцій.
|
|
| 41 |
"""
|
| 42 |
|
| 43 |
PRECEDENT_ANALYSIS_TEMPLATE = PromptTemplate(
|
| 44 |
-
|
| 45 |
-
|
| 46 |
-
|
| 47 |
-
|
| 48 |
-
|
| 49 |
-
|
| 50 |
-
|
| 51 |
-
|
| 52 |
-
|
| 53 |
-
|
| 54 |
-
|
| 55 |
-
|
| 56 |
-
|
| 57 |
-
|
| 58 |
-
|
| 59 |
-
|
| 60 |
-
|
| 61 |
-
|
| 62 |
-
|
| 63 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 64 |
)
|
|
|
|
| 41 |
"""
|
| 42 |
|
| 43 |
PRECEDENT_ANALYSIS_TEMPLATE = PromptTemplate(
|
| 44 |
+
"Ваше завдання - проаналізувати нове судове рішення та визначити, чи потрібно для нього створювати нову правову позицію, "
|
| 45 |
+
"чи можна використати існуючі правові позиції Верховного Суду. "
|
| 46 |
+
"Дотримуйтесь цих кроків:\n\n"
|
| 47 |
+
"1. Спочатку розгляньте нове рішення:\n"
|
| 48 |
+
"<new_decision>\n"
|
| 49 |
+
"{query}\n"
|
| 50 |
+
"</new_decision>\n\n"
|
| 51 |
+
"2. Врахуйте уточнююче питання:\n"
|
| 52 |
+
"<clarifying_question>\n"
|
| 53 |
+
"{question}\n"
|
| 54 |
+
"</clarifying_question>\n\n"
|
| 55 |
+
"3. Проаналізуйте існуючі правові позиції:\n"
|
| 56 |
+
"<legal_positions>\n"
|
| 57 |
+
"{context_str}\n"
|
| 58 |
+
"</legal_positions>\n\n"
|
| 59 |
+
"4. Проведіть порівняльний аналіз:\n"
|
| 60 |
+
" - Визначте ключові правові питання нового рішення\n"
|
| 61 |
+
" - Знайдіть релевантні існуючі правові позиції\n"
|
| 62 |
+
" - Оцініть можливість їх застосування до нового рішення\n"
|
| 63 |
+
" - Визначте, чи повністю вони охоплюють правову проблематику нового рішення\n\n"
|
| 64 |
+
"5. Для кожної релевантної правової позиції надайте:\n"
|
| 65 |
+
" а. ID позиції\n"
|
| 66 |
+
" б. Порядковий номер зі списку наданих правових позицій\n"
|
| 67 |
+
" в. Детальне обґрунтування, чому ця позиція може бути використана, "
|
| 68 |
+
"включаючи аналіз спільних правових питань, аргументації та висновків\n\n"
|
| 69 |
+
"6. Представте висновки у форматі JSON:\n"
|
| 70 |
+
"{\n"
|
| 71 |
+
" \"relevant_positions\": [\n"
|
| 72 |
+
" {\n"
|
| 73 |
+
" \"lp_id\": \"ID позиції\",\n"
|
| 74 |
+
" \"source_index\": \"Порядковий номер позиції у списку\",\n"
|
| 75 |
+
" \"description\": \"Детальне обґрунтування релевантності та можливості застосування цієї "
|
| 76 |
+
"правової позиції до нового рішення\"\n"
|
| 77 |
+
" }\n"
|
| 78 |
+
" ]\n"
|
| 79 |
+
"}\n\n"
|
| 80 |
+
"Важливі вимоги:\n"
|
| 81 |
+
"- Включайте до результату ТІЛЬКИ ті правові позиції, які дійсно можуть бути використані для нового рішення\n"
|
| 82 |
+
"- В описі обов'язково вказуйте конкретні аспекти, за якими правова позиція співпадає з новим рішенням\n"
|
| 83 |
+
"- Якщо жодна з існуючих позицій не підходить, поверніть пустий масив relevant_positions\n"
|
| 84 |
+
"- В description надайте розгорнутий аналіз, чому позиція може бути використана\n"
|
| 85 |
+
"- Переконайтеся, що ваш JSON правильно форматований та валідний\n\n"
|
| 86 |
+
"Приступайте до аналізу та надайте обґрунтований висновок щодо можливості використання існуючих правових позицій."
|
| 87 |
)
|