Spaces:
Running
Running
File size: 3,663 Bytes
bcdb6bd 7dc9083 bcdb6bd 7dc9083 bcdb6bd 7dc9083 bcdb6bd 7dc9083 bcdb6bd 7dc9083 bcdb6bd 20afb4d bcdb6bd 7dc9083 bcdb6bd 7dc9083 bcdb6bd 981ac1c bcdb6bd e9be466 bcdb6bd 7dc9083 bcdb6bd 7dc9083 7f6603c bcdb6bd 4203274 da848ef bcdb6bd 7dc9083 bcdb6bd 7dc9083 bcdb6bd |
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 |
import gradio as gr
from typing import List
import json
from generation import GenerationProvider, GenerationModelName, generate_legal_position
from utils import extract_court_decision_text
def create_gradio_interface():
def update_generation_model_choices(provider):
if provider == GenerationProvider.OPENAI.value:
return gr.Dropdown(choices=[m.value for m in GenerationModelName if m.value.startswith("ft")])
# elif provider == GenerationProvider.GEMINI.value:
# return gr.Dropdown(choices=[m.value for m in GenerationModelName if m.value.startswith("gemini")])
elif provider == GenerationProvider.ANTHROPIC.value:
return gr.Dropdown(choices=[m.value for m in GenerationModelName if m.value.startswith("claude")])
def get_model_name_by_value(model_value: str) -> str:
try:
# Знаходимо відповідну модель в енумі за значенням
model = next(model for model in GenerationModelName if model.value == model_value)
return model.name
except StopIteration:
return model_value
async def generate_position_action(url, provider, model_name):
try:
court_decision_text = extract_court_decision_text(url)
legal_position_json = generate_legal_position(court_decision_text, "", provider, model_name)
display_model_name = get_model_name_by_value(model_name)
position_output_content = (
f"**Проект правової позиції (модель: {display_model_name}):**\n"
f"*{legal_position_json['title']}*: \n"
f"{legal_position_json['text']} "
f"**Категорія:** \n{legal_position_json['category']} "
f"({legal_position_json['proceeding']})\n\n"
)
return position_output_content
except Exception as e:
return f"Error during position generation: {str(e)}"
with gr.Blocks() as app:
gr.Markdown("# Генератор проектів правових позицій")
url_input = gr.Textbox(label="URL судового рішення (у форматі https://reyestr.court.gov.ua/Review/{doc_id}):")
with gr.Row():
generation_provider_dropdown = gr.Dropdown(
choices=[p.value for p in GenerationProvider],
value=GenerationProvider.OPENAI.value,
label="Провайдер AI для генерування",
)
generation_model_dropdown = gr.Dropdown(
choices=[m.value for m in GenerationModelName if m.value.startswith("ft")],
value=GenerationModelName.GPT_MODEL_9.value,
label="Модель для генерування",
)
generate_position_button = gr.Button("Генерувати")
position_output = gr.Markdown(label="Правова позиція суду за введеним рішенням")
# Підключення функцій до кнопок та подій
generate_position_button.click(
fn=generate_position_action,
inputs=[url_input, generation_provider_dropdown, generation_model_dropdown],
outputs=position_output
)
# Оновлення списку моделей при зміні провайдера
generation_provider_dropdown.change(
fn=update_generation_model_choices,
inputs=generation_provider_dropdown,
outputs=generation_model_dropdown
)
return app |