DocUA commited on
Commit
befab8d
·
1 Parent(s): eba9dcb

Only AI search

Browse files
Files changed (3) hide show
  1. README.md +1 -1
  2. main.py +16 -16
  3. 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']}] | Висновок: {position['description']} | Правова позиція [{position['lp_id']}]: "
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"**Аналіз Штучного Інтелекту:**\n{response_text}\n\n"
471
- output += "**Цитовані джерела існуючих правових позицій Верховного Суду:**\n\n"
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
- 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,
 
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
- "Проаналізуй правові позиції Верховного Суду та порівняй їх з новим рішенням.\n\n"
45
- "1. Нове рішення:\n{query}\n\n"
46
- "2. Уточнююче питання:\n{question}\n\n"
47
- "3. Правові позиції для аналізу:\n"
48
- "------\n"
49
- "{context_str}"
50
- "\n------\n"
51
- "На основі аналізу створи список релевантних правових позицій. "
52
- "Кожна позиція повинна містити ID та короткий опис її суті. "
53
- "В описі також ОБОВ'ЯЗКОВО вкажи порядковий номер позиції зі списку наданих правових позицій. "
54
- "Результат надай у такому форматі JSON:\n\n"
55
- "{{\n"
56
- " \"relevant_positions\": [\n"
57
- " {{\n"
58
- " \"lp_id\": \"ID позиції\",\n"
59
- " \"source_index\": \"Номер позиції у списку\",\n"
60
- " \"description\": \"Короткий опис суті правової позиції\"\n"
61
- " }}\n"
62
- " ]\n"
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
  )