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!")