TimoTM commited on
Commit
46d395e
·
verified ·
1 Parent(s): 874a6c9

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +24 -13
app.py CHANGED
@@ -1,13 +1,28 @@
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)
@@ -15,15 +30,12 @@ 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.0-GGUF",
20
- model_file="tinyllama-1.1b-chat-v1.0.Q4_K_M.gguf",
21
- config={'max_new_tokens': 512, 'temperature': 0.5}
22
- )
23
 
24
  qa_chain = RetrievalQA.from_chain_type(llm=llm, chain_type="stuff", retriever=retriever)
25
 
26
- # Frage-Antwort-Logik
27
  def ask_question(user_input):
28
  if user_input.lower() in ["start", "hallo", "hi", "hey"]:
29
  return "👋 Willkommen bei Trending Media! Wie kann ich dir behilflich sein?"
@@ -44,7 +56,6 @@ def ask_question(user_input):
44
 
45
  return response
46
 
47
- # Gradio UI
48
  with gr.Blocks() as demo:
49
  gr.Markdown("## 🤖 TrendingBot\nWillkommen bei Trending Media! Stelle mir deine Frage.")
50
  user_input = gr.Textbox(label="Deine Frage", placeholder="Frag mich etwas über unsere Lösungen...")
 
 
1
  import gradio as gr
2
+ from langchain_community.document_loaders import PyPDFLoader
3
  from langchain.text_splitter import CharacterTextSplitter
4
+ from langchain_community.embeddings import HuggingFaceEmbeddings
5
+ from langchain_community.vectorstores import FAISS
6
  from langchain.chains import RetrievalQA
7
+ from langchain.llms.base import LLM # Basis-Klasse, um ein LLM-Wrapper zu erstellen
8
+ from transformers import pipeline
9
+
10
+ # Erstelle einen Wrapper für das LeoLM Modell
11
+ class LeoLM(LLM):
12
+ def __init__(self, max_new_tokens=512, temperature=0.5):
13
+ self.pipeline = pipeline("text-generation", model="LeoLM/leo-mistral-hessianai-7b")
14
+ self.max_new_tokens = max_new_tokens
15
+ self.temperature = temperature
16
+
17
+ def _call(self, prompt, stop=None):
18
+ result = self.pipeline(prompt, max_length=self.max_new_tokens, do_sample=True, temperature=self.temperature)
19
+ return result[0]["generated_text"]
20
 
21
+ @property
22
+ def _identifying_params(self):
23
+ return {"model": "LeoLM/leo-mistral-hessianai-7b"}
24
+
25
+ # PDF wird beim Start automatisch geladen
26
  loader = PyPDFLoader("TrendingMedia_ChatbotBasis_FINAL.pdf")
27
  documents = loader.load()
28
  splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=100)
 
30
  embeddings = HuggingFaceEmbeddings(model_name="sentence-transformers/all-MiniLM-L6-v2")
31
  db = FAISS.from_documents(texts, embeddings)
32
  retriever = db.as_retriever(search_kwargs={"k": 2})
33
+
34
+ # Verwende den neuen LeoLM Wrapper als LLM
35
+ llm = LeoLM(max_new_tokens=512, temperature=0.5)
 
 
36
 
37
  qa_chain = RetrievalQA.from_chain_type(llm=llm, chain_type="stuff", retriever=retriever)
38
 
 
39
  def ask_question(user_input):
40
  if user_input.lower() in ["start", "hallo", "hi", "hey"]:
41
  return "👋 Willkommen bei Trending Media! Wie kann ich dir behilflich sein?"
 
56
 
57
  return response
58
 
 
59
  with gr.Blocks() as demo:
60
  gr.Markdown("## 🤖 TrendingBot\nWillkommen bei Trending Media! Stelle mir deine Frage.")
61
  user_input = gr.Textbox(label="Deine Frage", placeholder="Frag mich etwas über unsere Lösungen...")