Create app.py
Browse files
app.py
ADDED
@@ -0,0 +1,76 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
from transformers import AutoTokenizer, AutoModel, AutoModelForCausalLM
|
3 |
+
|
4 |
+
st.title("Jogi Dokumentumok AI Tokenizálása és Válaszgenerálás")
|
5 |
+
|
6 |
+
# Információs szekció
|
7 |
+
st.write(
|
8 |
+
"""
|
9 |
+
Ez az alkalmazás tokenizálja a megadott jogi dokumentumot az általad választott modell segítségével,
|
10 |
+
majd generál válaszokat a megadott modell használatával.
|
11 |
+
"""
|
12 |
+
)
|
13 |
+
|
14 |
+
# Tokenizáló modell választása
|
15 |
+
tokenizer_name = st.selectbox("Tokenizáló Modell", ["pile-of-law/legalbert-large-1.7M-2", "bert-base-uncased", "bert-base-multilingual-cased"])
|
16 |
+
tokenizer = AutoTokenizer.from_pretrained(tokenizer_name)
|
17 |
+
|
18 |
+
# Válaszgeneráló modell választása
|
19 |
+
generator_name = st.selectbox("Válaszgeneráló Modell", ["microsoft/phi-2", "gpt2", "gpt2-medium"])
|
20 |
+
model = AutoModelForCausalLM.from_pretrained(generator_name, trust_remote_code=True)
|
21 |
+
|
22 |
+
# Input mező a jogi dokumentumhoz
|
23 |
+
document_text = st.text_area("Jogi Dokumentum", "")
|
24 |
+
|
25 |
+
# Generálási paraméterek testreszabása
|
26 |
+
max_length = st.slider("Maximális Válasz Hossz", min_value=10, max_value=200, value=50, step=10)
|
27 |
+
num_return_sequences = st.slider("Válaszok Száma", min_value=1, max_value=5, value=3, step=1)
|
28 |
+
temperature = st.slider("Hőmérséklet", min_value=0.1, max_value=2.0, value=0.7, step=0.1)
|
29 |
+
|
30 |
+
if st.button("Tokenizálás"):
|
31 |
+
# Tokenizálás
|
32 |
+
tokenized_document = tokenizer(document_text, return_tensors="pt")
|
33 |
+
|
34 |
+
# Tokenizált dokumentum mentése
|
35 |
+
with open("tokenized_document.txt", "w", encoding="utf-8") as file:
|
36 |
+
file.write(str(tokenized_document))
|
37 |
+
|
38 |
+
if st.button("Válaszgenerálás"):
|
39 |
+
# Válasz generálása
|
40 |
+
input_ids = tokenized_document["input_ids"]
|
41 |
+
output = model.generate(input_ids, max_length=max_length, num_return_sequences=num_return_sequences, temperature=temperature)
|
42 |
+
|
43 |
+
# Válaszok megjelenítése és mentése fájlba
|
44 |
+
st.subheader("Generált Válaszok:")
|
45 |
+
|
46 |
+
# Válaszok kiválasztása
|
47 |
+
selected_responses = st.multiselect("Válaszok Kiválasztása", [f"Válasz {i+1}" for i in range(num_return_sequences)])
|
48 |
+
|
49 |
+
for i, generated_sequence in enumerate(output):
|
50 |
+
response_text = tokenizer.decode(generated_sequence, skip_special_tokens=True)
|
51 |
+
|
52 |
+
# Válasz megjelenítése csak akkor, ha kiválasztották
|
53 |
+
if f"Válasz {i+1}" in selected_responses:
|
54 |
+
st.write(f"Válasz {i+1}: {response_text}")
|
55 |
+
|
56 |
+
# Valószínűségek megjelenítése
|
57 |
+
if hasattr(model, "get_output_embeddings"):
|
58 |
+
logits = model.get_output_embeddings()(generated_sequence)
|
59 |
+
probs = logits.softmax(dim=-1)
|
60 |
+
st.write("Valószínűségek:")
|
61 |
+
st.table(probs.tolist())
|
62 |
+
|
63 |
+
# Fájlba mentés opció
|
64 |
+
if st.button(f"Mentés Válasz {i+1}"):
|
65 |
+
with open(f"generated_response_{i+1}.txt", "w", encoding="utf-8") as file:
|
66 |
+
file.write(response_text)
|
67 |
+
st.write(f"A válasz {i+1} sikeresen el lett mentve.")
|
68 |
+
|
69 |
+
# Generált válaszok egyetlen fájlba mentése
|
70 |
+
if st.button("Mentés Összes Válasz"):
|
71 |
+
with open("all_generated_responses.txt", "w", encoding="utf-8") as file:
|
72 |
+
for i, generated_sequence in enumerate(output):
|
73 |
+
generated_text = tokenizer.decode(generated_sequence, skip_special_tokens=True)
|
74 |
+
file.write(f"Válasz {i+1}:\n")
|
75 |
+
file.write(generated_text + "\n\n")
|
76 |
+
st.write("Az összes válasz sikeresen el lett mentve egy fájlba.")
|