Update app.py
Browse files
app.py
CHANGED
@@ -1,82 +1,71 @@
|
|
1 |
import streamlit as st
|
2 |
-
from transformers import AutoTokenizer,
|
3 |
|
4 |
-
st.title("Jogi Dokumentumok AI
|
5 |
|
6 |
-
#
|
7 |
-
st.
|
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 |
-
#
|
15 |
-
|
16 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
17 |
|
18 |
-
#
|
19 |
-
|
|
|
|
|
|
|
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 |
-
#
|
26 |
-
|
27 |
-
|
28 |
-
# Szövegszegmentáció
|
29 |
-
segmentation_type = st.selectbox("Szövegszegmentáció", ["Címek", "Bekezdések", "Fejezetek"])
|
30 |
-
|
31 |
-
# Generálási paraméterek testreszabása
|
32 |
-
max_length = st.slider("Maximális Válasz Hossz", min_value=10, max_value=200, value=50, step=10)
|
33 |
-
num_return_sequences = st.slider("Válaszok Száma", min_value=1, max_value=5, value=3, step=1)
|
34 |
-
temperature = st.slider("Hőmérséklet", min_value=0.1, max_value=2.0, value=0.7, step=0.1)
|
35 |
|
36 |
-
#
|
37 |
-
if st.button("
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
st.write("A tokenizált dokumentum sikeresen el lett mentve.")
|
43 |
|
44 |
-
#
|
45 |
-
|
46 |
-
segments = extract_titles(document_text)
|
47 |
-
elif segmentation_type == "Bekezdések":
|
48 |
-
segments = extract_paragraphs(document_text)
|
49 |
-
elif segmentation_type == "Fejezetek":
|
50 |
-
segments = extract_chapters(document_text)
|
51 |
|
52 |
-
# Válasz
|
53 |
-
|
54 |
-
|
55 |
-
output = model.generate(input_ids, max_length=max_length, num_return_sequences=num_return_sequences, temperature=temperature)
|
56 |
-
st.subheader(f"{segment} - Generált Válaszok:")
|
57 |
-
for i, generated_sequence in enumerate(output):
|
58 |
-
response_text = tokenizer.decode(generated_sequence, skip_special_tokens=True)
|
59 |
-
st.write(f"Válasz {i+1}: {response_text}")
|
60 |
-
if hasattr(model, "get_output_embeddings"):
|
61 |
-
logits = model.get_output_embeddings()(generated_sequence)
|
62 |
-
probs = logits.softmax(dim=-1)
|
63 |
-
st.write("Valószínűségek:")
|
64 |
-
st.table(probs.tolist())
|
65 |
-
if st.button(f"Mentés Válasz {i+1}"):
|
66 |
-
file_name = st.text_input("Fájlnév:", f"generated_response_{i+1}.txt")
|
67 |
-
with open(file_name, "w", encoding="utf-8") as file:
|
68 |
-
file.write(response_text)
|
69 |
-
st.write(f"A válasz {i+1} sikeresen el lett mentve fájlba.")
|
70 |
|
71 |
-
#
|
72 |
-
|
73 |
-
with open("all_generated_responses.txt", "w", encoding="utf-8") as file:
|
74 |
-
for segment in segments:
|
75 |
-
input_ids = tokenizer.encode(segment, return_tensors="pt")
|
76 |
-
output = model.generate(input_ids, max_length=max_length, num_return_sequences=num_return_sequences, temperature=temperature)
|
77 |
-
file.write(f"{segment}:\n")
|
78 |
-
for i, generated_sequence in enumerate(output):
|
79 |
-
generated_text = tokenizer.decode(generated_sequence, skip_special_tokens=True)
|
80 |
-
file.write(f"Válasz {i+1}:\n")
|
81 |
-
file.write(generated_text + "\n\n")
|
82 |
-
st.write("Az összes válasz sikeresen el lett mentve egy fájlba.")
|
|
|
1 |
import streamlit as st
|
2 |
+
from transformers import AutoTokenizer, AutoModelForCausalLM
|
3 |
|
4 |
+
st.title("Jogi Dokumentumok AI Válaszgenerálás")
|
5 |
|
6 |
+
# Egyedi session azonosító létrehozása
|
7 |
+
session_id = st.session_state.session_id if "session_id" in st.session_state else 0
|
|
|
|
|
|
|
|
|
|
|
8 |
|
9 |
+
# Előző beszélgetések tárolása session state-ben
|
10 |
+
if "previous_conversations" not in st.session_state:
|
11 |
+
st.session_state.previous_conversations = []
|
12 |
+
|
13 |
+
# Korábbi beszélgetések törlése
|
14 |
+
if st.button("Korábbi Beszélgetések Törlése"):
|
15 |
+
st.session_state.previous_conversations = []
|
16 |
+
|
17 |
+
# Korábbi beszélgetések mentése és betöltése
|
18 |
+
if st.checkbox("Korábbi Beszélgetések Mentése"):
|
19 |
+
with open(f"previous_conversations_{session_id}.txt", "w") as file:
|
20 |
+
for conv in st.session_state.previous_conversations:
|
21 |
+
file.write(f"{conv}\n")
|
22 |
+
st.write("A korábbi beszélgetések sikeresen el lettek mentve.")
|
23 |
+
|
24 |
+
if st.checkbox("Korábbi Beszélgetések Betöltése"):
|
25 |
+
previous_conversations_file = st.file_uploader("Válassz ki egy fájlt a korábbi beszélgetések betöltéséhez")
|
26 |
+
if previous_conversations_file is not None:
|
27 |
+
with previous_conversations_file as file:
|
28 |
+
for line in file:
|
29 |
+
st.session_state.previous_conversations.append(line.strip())
|
30 |
+
st.write("A korábbi beszélgetések sikeresen betöltve.")
|
31 |
+
|
32 |
+
# Korábbi beszélgetések keresése
|
33 |
+
search_term = st.text_input("Keresés a Korábbi Beszélgetések Között", "")
|
34 |
+
if st.button("Keresés"):
|
35 |
+
search_results = [conv for conv in st.session_state.previous_conversations if search_term in conv]
|
36 |
+
if search_results:
|
37 |
+
st.subheader("Keresési Találatok:")
|
38 |
+
for result in search_results:
|
39 |
+
st.write(result)
|
40 |
+
else:
|
41 |
+
st.write("Nincs találat.")
|
42 |
|
43 |
+
# Tokenizáló modell és válaszgeneráló modell választása
|
44 |
+
tokenizer_name = st.selectbox("Tokenizáló Modell", ["bert-base-uncased", "bert-base-multilingual-cased"])
|
45 |
+
generator_name = st.selectbox("Válaszgeneráló Modell", ["microsoft/phi-2", "gpt2"])
|
46 |
+
|
47 |
+
tokenizer = AutoTokenizer.from_pretrained(tokenizer_name)
|
48 |
model = AutoModelForCausalLM.from_pretrained(generator_name, trust_remote_code=True)
|
49 |
|
50 |
# Input mező a jogi dokumentumhoz
|
51 |
document_text = st.text_area("Jogi Dokumentum", "")
|
52 |
|
53 |
+
# Előző beszélgetésekhez csatolható kontextus
|
54 |
+
context = st.text_area("Korábbi Beszélgetéshez Tartozó Kontextus", "")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
55 |
|
56 |
+
# Válaszgenerálás
|
57 |
+
if st.button("Generálj Választ"):
|
58 |
+
if context:
|
59 |
+
input_text = f"{context} {document_text}"
|
60 |
+
else:
|
61 |
+
input_text = document_text
|
|
|
62 |
|
63 |
+
# Model használata a válasz generálásához
|
64 |
+
response = generate_response(input_text, tokenizer, model)
|
|
|
|
|
|
|
|
|
|
|
65 |
|
66 |
+
# Válasz megjelenítése
|
67 |
+
st.subheader("Generált Válasz:")
|
68 |
+
st.write(response)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
69 |
|
70 |
+
# Aktuális beszélgetés hozzáadása az előző beszélgetésekhez
|
71 |
+
st.session_state.previous_conversations.append({"session_id": session_id, "input_text": input_text, "response": response})
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|