Spaces:
Running
Running
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 |
)
|