Spaces:
Sleeping
Sleeping
tomas.helmfridsson
commited on
Commit
·
6cf3540
1
Parent(s):
2ae94e1
update guis 7
Browse files
app.py
CHANGED
@@ -8,6 +8,7 @@ from transformers import pipeline
|
|
8 |
import os
|
9 |
|
10 |
# 1. Ladda och indexera alla PDF:er i mappen "document/"
|
|
|
11 |
def load_vectorstore():
|
12 |
all_docs = []
|
13 |
loaded_files = []
|
@@ -22,8 +23,8 @@ def load_vectorstore():
|
|
22 |
vectorstore = FAISS.from_documents(all_docs, embedding)
|
23 |
return vectorstore, loaded_files
|
24 |
|
25 |
-
# Skapa RAG-chain med
|
26 |
-
def create_chain(temp):
|
27 |
llm_pipeline = pipeline(
|
28 |
"text-generation", model="tiiuae/falcon-rw-1b", device=-1
|
29 |
)
|
@@ -35,7 +36,7 @@ def create_chain(temp):
|
|
35 |
llm=llm, retriever=vectorstore.as_retriever()
|
36 |
)
|
37 |
|
38 |
-
# Gradio UI
|
39 |
with gr.Blocks() as demo:
|
40 |
# Temperatur-reglage
|
41 |
temp_slider = gr.Slider(
|
@@ -45,48 +46,52 @@ with gr.Blocks() as demo:
|
|
45 |
value=0.3,
|
46 |
step=0.05,
|
47 |
)
|
48 |
-
#
|
49 |
-
|
50 |
-
#
|
|
|
51 |
input_box = gr.Textbox(label="Din fråga")
|
52 |
send_button = gr.Button("Skicka")
|
53 |
-
status_text = gr.Markdown("🔄 Laddar modellen, vänta...")
|
54 |
|
55 |
-
# Ladda
|
56 |
vectorstore, loaded_files = load_vectorstore()
|
57 |
-
qa_chain = create_chain(temp_slider.value)
|
58 |
|
59 |
-
#
|
60 |
-
|
61 |
-
status_text.update(visible=False)
|
62 |
gr.Markdown(
|
63 |
-
f"✅ Klar! Du kan nu ställa frågor om dokumenten nedan:\n\n
|
|
|
64 |
)
|
65 |
|
|
|
66 |
def chat_fn(message, history, temp):
|
67 |
# Uppdatera chain om temperaturen ändrats
|
68 |
-
chain = create_chain(temp)
|
69 |
-
#
|
|
|
70 |
if len(message) > 1000:
|
71 |
-
history
|
|
|
|
|
|
|
72 |
return history
|
73 |
-
# Kör fråga
|
74 |
try:
|
75 |
svar = chain.invoke({"query": message})
|
76 |
-
out = svar
|
77 |
except Exception as e:
|
78 |
out = f"Ett fel uppstod: {e}"
|
79 |
-
history
|
80 |
return history
|
81 |
|
82 |
-
# Koppla
|
83 |
send_button.click(
|
84 |
fn=chat_fn,
|
85 |
inputs=[input_box, chatbot, temp_slider],
|
86 |
outputs=chatbot,
|
87 |
)
|
88 |
|
89 |
-
# Starta
|
90 |
if __name__ == "__main__":
|
91 |
demo.launch()
|
92 |
|
|
|
8 |
import os
|
9 |
|
10 |
# 1. Ladda och indexera alla PDF:er i mappen "document/"
|
11 |
+
# Returnerar vectorstore och lista över filnamn
|
12 |
def load_vectorstore():
|
13 |
all_docs = []
|
14 |
loaded_files = []
|
|
|
23 |
vectorstore = FAISS.from_documents(all_docs, embedding)
|
24 |
return vectorstore, loaded_files
|
25 |
|
26 |
+
# 2. Skapa RAG-chain med given temperatur
|
27 |
+
def create_chain(vectorstore, temp):
|
28 |
llm_pipeline = pipeline(
|
29 |
"text-generation", model="tiiuae/falcon-rw-1b", device=-1
|
30 |
)
|
|
|
36 |
llm=llm, retriever=vectorstore.as_retriever()
|
37 |
)
|
38 |
|
39 |
+
# 3. Gradio UI
|
40 |
with gr.Blocks() as demo:
|
41 |
# Temperatur-reglage
|
42 |
temp_slider = gr.Slider(
|
|
|
46 |
value=0.3,
|
47 |
step=0.05,
|
48 |
)
|
49 |
+
# Laddningsindikator
|
50 |
+
status_text = gr.Markdown("🔄 Laddar modellen, vänta...")
|
51 |
+
# Chat-komponent (OpenAI-stil)
|
52 |
+
chatbot = gr.Chatbot(type="messages")
|
53 |
input_box = gr.Textbox(label="Din fråga")
|
54 |
send_button = gr.Button("Skicka")
|
|
|
55 |
|
56 |
+
# Ladda vectorstore och initiera QA-chain
|
57 |
vectorstore, loaded_files = load_vectorstore()
|
58 |
+
qa_chain = create_chain(vectorstore, temp_slider.value)
|
59 |
|
60 |
+
# Dölj laddningsindikator och visa uppladdade filer
|
61 |
+
status_text.visible = False
|
|
|
62 |
gr.Markdown(
|
63 |
+
f"✅ Klar! Du kan nu ställa frågor om dokumenten nedan:\n\n" +
|
64 |
+
"\n".join([f"- {f}" for f in loaded_files])
|
65 |
)
|
66 |
|
67 |
+
# Chat-funktion
|
68 |
def chat_fn(message, history, temp):
|
69 |
# Uppdatera chain om temperaturen ändrats
|
70 |
+
chain = create_chain(vectorstore, temp)
|
71 |
+
# Lägg till användarens meddelande
|
72 |
+
history = history + [{"role": "user", "content": message}]
|
73 |
if len(message) > 1000:
|
74 |
+
history = history + [{
|
75 |
+
"role": "assistant",
|
76 |
+
"content": f"⚠️ Din fråga är för lång ({len(message)} tecken). Försök en kortare fråga."
|
77 |
+
}]
|
78 |
return history
|
|
|
79 |
try:
|
80 |
svar = chain.invoke({"query": message})
|
81 |
+
out = svar.get("result", str(svar))
|
82 |
except Exception as e:
|
83 |
out = f"Ett fel uppstod: {e}"
|
84 |
+
history = history + [{"role": "assistant", "content": out}]
|
85 |
return history
|
86 |
|
87 |
+
# Koppla knapp till funktionen
|
88 |
send_button.click(
|
89 |
fn=chat_fn,
|
90 |
inputs=[input_box, chatbot, temp_slider],
|
91 |
outputs=chatbot,
|
92 |
)
|
93 |
|
94 |
+
# Starta app vid körning
|
95 |
if __name__ == "__main__":
|
96 |
demo.launch()
|
97 |
|