File size: 5,518 Bytes
492b465 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 | """
Приклад використання 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
# Ініціалізація клієнта 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 = """
ПОСТАНОВА
ІМЕНЕМ УКРАЇНИ
Верховний Суд у складі колегії суддів...
[Тут має бути повний текст судового рішення]
"""
# Генерація правової позиції з високим рівнем reasoning
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}")
|