| | """ |
| | Приклад використання GPT-5.2 в проєкті Legal Position AI Analyzer |
| | |
| | Цей файл демонструє, як використовувати нову модель GPT-5.2 з параметрами: |
| | - reasoning_effort: "low", "medium", "high" |
| | - verbosity: "low", "medium", "high" |
| | - store: False (не зберігати в історії OpenAI) |
| | """ |
| |
|
| | import os |
| | from openai import OpenAI |
| |
|
| | |
| | client = OpenAI(api_key=os.getenv("OPENAI_API_KEY")) |
| |
|
| | def generate_with_gpt5_2( |
| | court_decision_text: str, |
| | reasoning_effort: str = "medium", |
| | verbosity: str = "medium" |
| | ): |
| | """ |
| | Генерація правової позиції з використанням GPT-5.2 |
| | |
| | Args: |
| | court_decision_text: Текст судового рішення |
| | reasoning_effort: Рівень reasoning ("low", "medium", "high") |
| | verbosity: Рівень деталізації відповіді ("low", "medium", "high") |
| | |
| | Returns: |
| | Згенерована правова позиція у форматі JSON |
| | """ |
| | |
| | system_prompt = """Ти - експерт-правознавець, який аналізує судові рішення |
| | та формує правові позиції Верховного Суду України.""" |
| | |
| | user_prompt = f""" |
| | Проаналізуй наступне судове рішення та сформуй правову позицію: |
| | |
| | <court_decision> |
| | {court_decision_text} |
| | </court_decision> |
| | |
| | Поверни результат у форматі JSON з полями: |
| | - title: заголовок правової позиції |
| | - text: текст правової позиції |
| | - proceeding: тип судочинства |
| | - category: категорія справи |
| | """ |
| | |
| | response = client.chat.completions.create( |
| | model="gpt-5.2", |
| | messages=[ |
| | {"role": "developer", "content": system_prompt}, |
| | {"role": "user", "content": user_prompt} |
| | ], |
| | response_format={"type": "json_object"}, |
| | reasoning_effort=reasoning_effort, |
| | verbosity=verbosity, |
| | store=False, |
| | max_completion_tokens=2048 |
| | ) |
| | |
| | return response.choices[0].message.content |
| |
|
| |
|
| | def analyze_with_gpt5_2( |
| | legal_position: dict, |
| | existing_positions: list, |
| | reasoning_effort: str = "medium" |
| | ): |
| | """ |
| | Аналіз релевантності існуючих правових позицій з використанням GPT-5.2 |
| | |
| | Args: |
| | legal_position: Згенерована правова позиція |
| | existing_positions: Список існуючих правових позицій |
| | reasoning_effort: Рівень reasoning ("low", "medium", "high") |
| | |
| | Returns: |
| | Аналіз релевантності у форматі JSON |
| | """ |
| | |
| | system_prompt = """Ти - експерт-аналітик правових позицій Верховного Суду України.""" |
| | |
| | positions_text = "\n\n".join([ |
| | f"[{i+1}] {pos['title']}: {pos['text']}" |
| | for i, pos in enumerate(existing_positions) |
| | ]) |
| | |
| | user_prompt = f""" |
| | Проаналізуй релевантність існуючих правових позицій до нової позиції: |
| | |
| | Нова позиція: |
| | {legal_position['title']}: {legal_position['text']} |
| | |
| | Існуючі позиції: |
| | {positions_text} |
| | |
| | Поверни аналіз у форматі JSON з полями: |
| | - relevant_positions: список релевантних позицій з обґрунтуванням |
| | """ |
| | |
| | response = client.chat.completions.create( |
| | model="gpt-5.2", |
| | messages=[ |
| | {"role": "developer", "content": system_prompt}, |
| | {"role": "user", "content": user_prompt} |
| | ], |
| | response_format={"type": "json_object"}, |
| | reasoning_effort=reasoning_effort, |
| | verbosity="medium", |
| | store=False, |
| | max_completion_tokens=4000 |
| | ) |
| | |
| | return response.choices[0].message.content |
| |
|
| |
|
| | |
| | if __name__ == "__main__": |
| | |
| | test_decision = """ |
| | ПОСТАНОВА |
| | ІМЕНЕМ УКРАЇНИ |
| | |
| | Верховний Суд у складі колегії суддів... |
| | |
| | [Тут має бути повний текст судового рішення] |
| | """ |
| | |
| | |
| | print("Генерація правової позиції з GPT-5.2...") |
| | legal_position = generate_with_gpt5_2( |
| | court_decision_text=test_decision, |
| | reasoning_effort="high", |
| | verbosity="high" |
| | ) |
| | print(f"Результат: {legal_position}\n") |
| | |
| | |
| | print("Аналіз релевантності з GPT-5.2...") |
| | existing = [ |
| | { |
| | "title": "Про застосування норм ЦПК", |
| | "text": "Верховний Суд вважає..." |
| | } |
| | ] |
| | |
| | import json |
| | analysis = analyze_with_gpt5_2( |
| | legal_position=json.loads(legal_position), |
| | existing_positions=existing, |
| | reasoning_effort="medium" |
| | ) |
| | print(f"Аналіз: {analysis}") |
| |
|