File size: 3,321 Bytes
b75809a ba036f9 748baf0 b75809a 748baf0 b75809a 748baf0 ba036f9 748baf0 b75809a ba036f9 b75809a ba036f9 01da382 748baf0 01da382 ba036f9 01da382 ba036f9 01da382 3d93ddf 01da382 b75809a 01da382 3d93ddf 01da382 56ec0dc 01da382 b75809a 01da382 ba036f9 |
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 |
import streamlit as st
import pdfplumber
import docx
from transformers import AutoTokenizer, AutoModelForCausalLM
st.title("Jogi Dokumentumok AI Válaszgenerálás")
# Előző beszélgetések tárolása session state-ben
if "previous_conversations" not in st.session_state:
st.session_state.previous_conversations = []
# Korábbi beszélgetések törlése
if st.checkbox("Korábbi Beszélgetések Törlése"):
st.session_state.previous_conversations = []
# Tokenizáló modell és válaszgeneráló modell választása
tokenizer_name = st.selectbox("Tokenizáló Modell", ["bert-base-uncased", "bert-base-multilingual-cased"])
generator_name = st.selectbox("Válaszgeneráló Modell", ["microsoft/phi-2", "gpt2"])
tokenizer = AutoTokenizer.from_pretrained(tokenizer_name)
model = AutoModelForCausalLM.from_pretrained(generator_name, trust_remote_code=True)
# Dokumentum feltöltése drag and drop segítségével
document_file = st.file_uploader("Húzd ide a dokumentumot vagy kattints a feltöltéshez", type=["pdf", "docx", "doc"])
if document_file is not None:
# Dokumentum méretének ellenőrzése
if len(document_file.getvalue()) > 10000000: # 10 MB-nál nagyobb dokumentumok esetén
st.error("A dokumentum mérete túl nagy. Kérlek válassz egy kisebb méretű dokumentumot!")
else:
if document_file.type == "application/pdf":
with pdfplumber.open(document_file) as pdf:
document_text = ""
for page in pdf.pages:
document_text += page.extract_text()
elif document_file.type == "application/vnd.openxmlformats-officedocument.wordprocessingml.document":
docx_file = docx.Document(document_file)
document_text = ""
for paragraph in docx_file.paragraphs:
document_text += paragraph.text
elif document_file.type == "application/msword":
doc_file = docx.Document(document_file)
document_text = ""
for paragraph in doc_file.paragraphs:
document_text += paragraph.text
else:
st.error("A fájltípus nem támogatott. Kérlek válassz ki egy PDF, DOCX vagy DOC fájlt!")
# Előző beszélgetésekhez csatolható kontextus
context = st.text_area("Korábbi Beszélgetéshez Tartozó Kontextus", "")
# Kérdés mező hozzáadása
question = st.text_input("Kérdés a Dokumentumból", "")
# Válaszgenerálás
if st.button("Generálj Választ"):
if context:
input_text = f"{context} {document_text}"
else:
input_text = document_text
# Ha van kérdés, azt is hozzáadjuk a bemenethez
if question:
input_text += f" {question}"
# Model használata a válasz generálásához
response = generate_response(input_text, tokenizer, model)
# Válasz megjelenítése
st.subheader("Generált Válasz:")
st.write(response)
# Aktuális beszélgetés hozzáadása az előző beszélgetésekhez
st.session_state.previous_conversations.append({"input_text": input_text, "response": response})
else:
st.warning("Kérlek válassz ki egy dokumentumfájlt!")
|