albhu commited on
Commit
748baf0
·
verified ·
1 Parent(s): 56ec0dc

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +57 -68
app.py CHANGED
@@ -1,82 +1,71 @@
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
- # Dokumentum típusának megadása
26
- document_type = st.text_input("Dokumentum Típusa", "")
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
- # Tokenizálás és válaszgenerálás gomb
37
- if st.button("Tokenizálás és Válaszgenerálás"):
38
- # Tokenizálás
39
- tokenized_document = tokenizer(document_text, return_tensors="pt")
40
- with open("tokenized_document.txt", "w", encoding="utf-8") as file:
41
- file.write(str(tokenized_document))
42
- st.write("A tokenizált dokumentum sikeresen el lett mentve.")
43
 
44
- # Szövegszegmentáció
45
- if segmentation_type == "Címek":
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 generálása
53
- for segment in segments:
54
- input_ids = tokenizer.encode(segment, return_tensors="pt")
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
- # Generált válaszok egyetlen fájlba mentése
72
- if st.button("Mentés Összes Válasz"):
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})