alexkueck commited on
Commit
2cd8a5a
·
1 Parent(s): 82937de

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +19 -11
app.py CHANGED
@@ -78,7 +78,7 @@ print ("Inf.Client")
78
  #client = InferenceClient("https://api-inference.huggingface.co/models/meta-llama/Llama-2-70b-chat-hf")
79
  #client = InferenceClient("https://ybdhvwle4ksrawzo.eu-west-1.aws.endpoints.huggingface.cloud")
80
  #Inference mit Authorisation:
81
- API_URL = "https://api-inference.huggingface.co/models/HuggingFaceH4/zephyr-7b-beta"
82
  HEADERS = {"Authorization": f"Bearer {HUGGINGFACEHUB_API_TOKEN}"}
83
 
84
  ##############################################
@@ -196,14 +196,14 @@ def document_retrieval_chroma():
196
  #embeddings = HuggingFaceInstructEmbeddings(model_name="sentence-transformers/all-MiniLM-L6-v2", model_kwargs={"device": "cpu"})
197
  #etwas weniger rechenaufwendig:
198
  #embeddings = HuggingFaceEmbeddings(model_name="sentence-transformers/all-mpnet-base-v2", model_kwargs={"device": "cpu"}, encode_kwargs={'normalize_embeddings': False})
 
 
199
 
200
  #ChromaDb um die embedings zu speichern
201
  db = Chroma(embedding_function = embeddings, persist_directory = PATH_WORK + CHROMA_DIR)
202
  print ("Chroma DB bereit ...................")
203
- #llm = ChatOpenAI(temperature=0.5)
204
- #retriever = SelfQueryRetriever.from_llm(llm,vectorstore,document_content_description=prompt,enable_limit=True,verbose=True,)
205
-
206
- return db #, retriever
207
 
208
 
209
 
@@ -218,10 +218,9 @@ def llm_chain(prompt):
218
 
219
  #langchain nutzen, um prompt an llm zu leiten, aber vorher in der VektorDB suchen, um passende splits zum Prompt hinzuzufügen
220
  #prompt mit RAG!!!
221
- def rag_chain(prompt, db):
222
  rag_template = "Nutze die folgenden Kontext Teile am Ende, um die Frage zu beantworten . " + template + "Frage: " + prompt + "Kontext Teile: "
223
- retrieved_chunks = db.similarity_search(prompt)
224
- #retrieved_chunks = retriever.get_relevant_documents(prompt)
225
 
226
  neu_prompt = rag_template
227
  for i, chunk in enumerate(retrieved_chunks):
@@ -269,7 +268,7 @@ def generate_prompt_with_history_openai(prompt, history):
269
  ##############################################
270
  # generate function
271
  ##############################################
272
- def generate(text, history, rag_option, model_option, temperature=0.5, max_new_tokens=4048, top_p=0.6, repetition_penalty=1.3):
273
  #mit RAG
274
  if (rag_option is None):
275
  raise gr.Error("Retrieval Augmented Generation ist erforderlich.")
@@ -277,6 +276,14 @@ def generate(text, history, rag_option, model_option, temperature=0.5, max_new_
277
  raise gr.Error("Prompt ist erforderlich.")
278
 
279
  try:
 
 
 
 
 
 
 
 
280
  if (rag_option == "An"):
281
  #muss nur einmal ausgeführt werden...
282
  if not splittet:
@@ -284,7 +291,7 @@ def generate(text, history, rag_option, model_option, temperature=0.5, max_new_
284
  document_storage_chroma(splits)
285
  db = document_retrieval_chroma()
286
  #mit RAG:
287
- neu_text_mit_chunks = rag_chain(text, db)
288
  #für Chat LLM:
289
  #prompt = generate_prompt_with_history_openai(neu_text_mit_chunks, history)
290
  #als reiner prompt:
@@ -359,7 +366,8 @@ examples=[['Was ist ChtGPT-4?'],['schreibe ein Python Programm, dass die GPT-4 A
359
 
360
  additional_inputs = [
361
  gr.Radio(["Aus", "An"], label="RAG - LI Erweiterungen", value = "Aus"),
362
- gr.Radio(["OpenAI", "HuggingFace"], label="Modellauswahl", value = "HuggingFace"),
 
363
  gr.Slider(label="Temperature", value=0.65, minimum=0.0, maximum=1.0, step=0.05, interactive=True, info="Höhere Werte erzeugen diversere Antworten", visible=True),
364
  gr.Slider(label="Max new tokens", value=1024, minimum=0, maximum=4096, step=64, interactive=True, info="Maximale Anzahl neuer Tokens", visible=True),
365
  gr.Slider(label="Top-p (nucleus sampling)", value=0.6, minimum=0.0, maximum=1, step=0.05, interactive=True, info="Höhere Werte verwenden auch Tokens mit niedrigerer Wahrscheinlichkeit.", visible=True),
 
78
  #client = InferenceClient("https://api-inference.huggingface.co/models/meta-llama/Llama-2-70b-chat-hf")
79
  #client = InferenceClient("https://ybdhvwle4ksrawzo.eu-west-1.aws.endpoints.huggingface.cloud")
80
  #Inference mit Authorisation:
81
+ #API_URL = "https://api-inference.huggingface.co/models/HuggingFaceH4/zephyr-7b-beta"
82
  HEADERS = {"Authorization": f"Bearer {HUGGINGFACEHUB_API_TOKEN}"}
83
 
84
  ##############################################
 
196
  #embeddings = HuggingFaceInstructEmbeddings(model_name="sentence-transformers/all-MiniLM-L6-v2", model_kwargs={"device": "cpu"})
197
  #etwas weniger rechenaufwendig:
198
  #embeddings = HuggingFaceEmbeddings(model_name="sentence-transformers/all-mpnet-base-v2", model_kwargs={"device": "cpu"}, encode_kwargs={'normalize_embeddings': False})
199
+ #oder einfach ohne Langchain:
200
+ #embeddings = SentenceTransformerEmbeddings(model_name="all-MiniLM-L6-v2")
201
 
202
  #ChromaDb um die embedings zu speichern
203
  db = Chroma(embedding_function = embeddings, persist_directory = PATH_WORK + CHROMA_DIR)
204
  print ("Chroma DB bereit ...................")
205
+
206
+ return db
 
 
207
 
208
 
209
 
 
218
 
219
  #langchain nutzen, um prompt an llm zu leiten, aber vorher in der VektorDB suchen, um passende splits zum Prompt hinzuzufügen
220
  #prompt mit RAG!!!
221
+ def rag_chain(prompt, db, k=3):
222
  rag_template = "Nutze die folgenden Kontext Teile am Ende, um die Frage zu beantworten . " + template + "Frage: " + prompt + "Kontext Teile: "
223
+ retrieved_chunks = db.similarity_search(prompt, k)
 
224
 
225
  neu_prompt = rag_template
226
  for i, chunk in enumerate(retrieved_chunks):
 
268
  ##############################################
269
  # generate function
270
  ##############################################
271
+ def generate(text, history, rag_option, model_option, k=3, temperature=0.5, max_new_tokens=4048, top_p=0.6, repetition_penalty=1.3,):
272
  #mit RAG
273
  if (rag_option is None):
274
  raise gr.Error("Retrieval Augmented Generation ist erforderlich.")
 
276
  raise gr.Error("Prompt ist erforderlich.")
277
 
278
  try:
279
+ if (model_option == "Huggingface1"):
280
+ #Anfrage an InferenceEndpoint1 ----------------------------
281
+ API_URL = "https://api-inference.huggingface.co/models/HuggingFaceH4/zephyr-7b-beta"
282
+ print("HF1")
283
+ else:
284
+ API_URL = "https://api-inference.huggingface.co/models/OpenAssistant/oasst-sft-4-pythia-12b-epoch-3.5"
285
+ print("HF2")
286
+
287
  if (rag_option == "An"):
288
  #muss nur einmal ausgeführt werden...
289
  if not splittet:
 
291
  document_storage_chroma(splits)
292
  db = document_retrieval_chroma()
293
  #mit RAG:
294
+ neu_text_mit_chunks = rag_chain(text, db, k)
295
  #für Chat LLM:
296
  #prompt = generate_prompt_with_history_openai(neu_text_mit_chunks, history)
297
  #als reiner prompt:
 
366
 
367
  additional_inputs = [
368
  gr.Radio(["Aus", "An"], label="RAG - LI Erweiterungen", value = "Aus"),
369
+ gr.Radio(["HuggingFace1", "HuggingFace2"], label="Modellauswahl", value = "HuggingFace1"),
370
+ gr.Slider(label="Anzahl Vergleichsdokumente", value=3, minimum=1, maximum=10, step=1, interactive=True, info="wie viele Dokumententeile aus dem Vektorstore an den prompt gehängt werden", visible=True)
371
  gr.Slider(label="Temperature", value=0.65, minimum=0.0, maximum=1.0, step=0.05, interactive=True, info="Höhere Werte erzeugen diversere Antworten", visible=True),
372
  gr.Slider(label="Max new tokens", value=1024, minimum=0, maximum=4096, step=64, interactive=True, info="Maximale Anzahl neuer Tokens", visible=True),
373
  gr.Slider(label="Top-p (nucleus sampling)", value=0.6, minimum=0.0, maximum=1, step=0.05, interactive=True, info="Höhere Werte verwenden auch Tokens mit niedrigerer Wahrscheinlichkeit.", visible=True),