TimoTM commited on
Commit
af2f254
·
verified ·
1 Parent(s): 92e3209

Upload 2 files

Browse files
Trending Media Chatbot (1).pdf ADDED
Binary file (5.7 kB). View file
 
Trending Media Chatbot App.py ADDED
@@ -0,0 +1,53 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ import gradio as gr
3
+ from langchain.document_loaders import PyPDFLoader
4
+ from langchain.text_splitter import CharacterTextSplitter
5
+ from langchain.embeddings import HuggingFaceEmbeddings
6
+ from langchain.vectorstores import FAISS
7
+ from langchain.chains import RetrievalQA
8
+ from langchain.llms import CTransformers
9
+
10
+ # Lade und verarbeite das PDF beim Start
11
+ loader = PyPDFLoader("TrendingMedia_ChatbotBasis_FINAL.pdf")
12
+ documents = loader.load()
13
+ splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=100)
14
+ texts = splitter.split_documents(documents)
15
+ embeddings = HuggingFaceEmbeddings(model_name="sentence-transformers/all-MiniLM-L6-v2")
16
+ db = FAISS.from_documents(texts, embeddings)
17
+ retriever = db.as_retriever(search_kwargs={"k": 2})
18
+ llm = CTransformers(
19
+ model="TheBloke/TinyLlama-1.1B-Chat-v1-GGUF",
20
+ model_file="tinyllama-1.1b-chat-v1.Q4_K_M.gguf",
21
+ config={'max_new_tokens': 512, 'temperature': 0.5}
22
+ )
23
+ qa_chain = RetrievalQA.from_chain_type(llm=llm, chain_type="stuff", retriever=retriever)
24
+
25
+ # Frage-Antwort-Logik
26
+ def ask_question(user_input):
27
+ if user_input.lower() in ["start", "hallo", "hi", "hey"]:
28
+ return "👋 Willkommen bei Trending Media! Wie kann ich dir behilflich sein?"
29
+
30
+ response = qa_chain.run(user_input)
31
+
32
+ if response.strip() == "" or "I'm sorry" in response or len(response.split()) < 5:
33
+ if "kontakt" in user_input.lower() or "erreichen" in user_input.lower():
34
+ return (
35
+ "📬 Du kannst uns direkt über dieses Formular kontaktieren:\n\n"
36
+ "**Vorname & Nachname:**\n[_________]\n\n"
37
+ "**E-Mail:**\n[_________]\n\n"
38
+ "**Nachricht:**\n[__________________________]\n\n"
39
+ "*Oder direkt über:* [📨 Kontaktformular](https://trendingmedia.ch/kontakt)"
40
+ )
41
+ else:
42
+ return "❌ Das kann ich dir leider nicht beantworten. Ich bin auf Informationen aus unserem PDF spezialisiert."
43
+
44
+ return response
45
+
46
+ # Gradio UI
47
+ with gr.Blocks() as demo:
48
+ gr.Markdown("## 🤖 TrendingBot\nWillkommen bei Trending Media! Stelle mir deine Frage.")
49
+ user_input = gr.Textbox(label="Deine Frage", placeholder="Frag mich etwas über unsere Lösungen...")
50
+ bot_response = gr.Textbox(label="TrendingBot antwortet")
51
+ user_input.submit(ask_question, inputs=user_input, outputs=bot_response)
52
+
53
+ demo.launch()