alexkueck commited on
Commit
b690c39
·
1 Parent(s): e417dcc

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +30 -34
app.py CHANGED
@@ -177,7 +177,7 @@ def document_storage_mongodb(splits):
177
 
178
  #Vektorstore vorbereiten...
179
  #dokumente in chroma db vektorisiert ablegen können - die Db vorbereiten daüfur
180
- def document_retrieval_chroma(llm, prompt):
181
  #OpenAI embeddings -------------------------------
182
  embeddings = OpenAIEmbeddings()
183
 
@@ -205,20 +205,20 @@ def document_retrieval_mongodb(llm, prompt):
205
 
206
  #langchain nutzen, um prompt an LLM zu leiten - llm und prompt sind austauschbar
207
  #prompt ohne RAG!!!
208
- def llm_chain(llm, prompt):
209
- llm_chain = LLMChain(llm = llm, prompt = LLM_CHAIN_PROMPT)
210
- result = llm_chain.run({"question": prompt})
211
- return result
212
 
213
  #langchain nutzen, um prompt an llm zu leiten, aber vorher in der VektorDB suchen, um passende splits zum Prompt hinzuzufügen
214
  #prompt mit RAG!!!
215
- def rag_chain(llm, prompt, db):
216
- rag_chain = RetrievalQA.from_chain_type(llm,
217
- chain_type_kwargs = {"prompt": RAG_CHAIN_PROMPT},
218
- retriever = db.as_retriever(search_kwargs = {"k": 3}),
219
- return_source_documents = True)
220
- result = rag_chain({"query": prompt})
221
- return result["result"]
 
222
 
223
 
224
 
@@ -268,39 +268,35 @@ def generate(text, history):
268
  #prompt = f"""Use the following pieces of context to answer the question at the end. If you don't know the answer, just say that you don't know, don't try to make up an answer.
269
  #{context} Question: {text}"""
270
 
271
- #mit RAG:
272
- #??? wie aus Chroma die passenden Text-Schnipsel dazuladen???
273
- prompt = generate_prompt_with_history_openai(text_neu, history)
 
 
 
 
 
 
 
274
 
275
- #zusammengesetzte Anfrage an Modell...
276
- #payload = tokenizer.apply_chat_template([{"role":"user","content":prompt}],tokenize=False)
277
- payload = tokenizer.apply_chat_template(prompt,tokenize=False)
278
- res = client.text_generation(
279
  payload,
280
  do_sample=True,
281
  return_full_text=False,
282
  max_new_tokens=2048,
283
  top_p=0.9,
284
  temperature=0.6,
285
- )
286
-
287
-
288
-
289
- try:
290
- #muss nur einmal ausgeführt werden...
291
- if not splittet:
292
- splits = document_loading_splitting()
293
- document_storage_chroma(splits)
294
- #db = document_retrieval_chroma(llm, history_text_und_prompt)
295
- #result = rag_chain(llm, history_text_und_prompt, db)
296
-
297
  except Exception as e:
298
  raise gr.Error(e)
299
 
300
  #Antwort als Stream ausgeben...
301
- #for i in range(len(result)):
302
- #time.sleep(0.05)
303
- #yield result[: i+1]
304
 
305
 
306
 
 
177
 
178
  #Vektorstore vorbereiten...
179
  #dokumente in chroma db vektorisiert ablegen können - die Db vorbereiten daüfur
180
+ def document_retrieval_chroma(llm, prompt):
181
  #OpenAI embeddings -------------------------------
182
  embeddings = OpenAIEmbeddings()
183
 
 
205
 
206
  #langchain nutzen, um prompt an LLM zu leiten - llm und prompt sind austauschbar
207
  #prompt ohne RAG!!!
208
+ def llm_chain(prompt):
209
+ llm_template = "Beantworte die Frage am Ende. " + template + "Frage: " + prompt
210
+ return llm_template
 
211
 
212
  #langchain nutzen, um prompt an llm zu leiten, aber vorher in der VektorDB suchen, um passende splits zum Prompt hinzuzufügen
213
  #prompt mit RAG!!!
214
+ def rag_chain(prompt, db):
215
+ rag_template = "Nutze die folgenden Kontext Teile am Ende, um die Frage zu beantworten . " + template + "Frage: " + prompt + "Kontext Teile: "
216
+ retrieved_chunks = db.query(prompt, k=3) #3 passende chunks zum Prompt hinzufügen
217
+ neu_prompt = rag_template
218
+ for i, chunk in enumerate(retrieved_chunks):
219
+ neu_prompt += f"{i+1}. {chunk}\n"
220
+
221
+ return neu_prompt
222
 
223
 
224
 
 
268
  #prompt = f"""Use the following pieces of context to answer the question at the end. If you don't know the answer, just say that you don't know, don't try to make up an answer.
269
  #{context} Question: {text}"""
270
 
271
+ try:
272
+ #muss nur einmal ausgeführt werden...
273
+ if not splittet:
274
+ splits = document_loading_splitting()
275
+ document_storage_chroma(splits)
276
+ db = document_retrieval_chroma(llm, history_text_und_prompt)
277
+ #result = rag_chain(llm, history_text_und_prompt, db)
278
+ #mit RAG:
279
+ neu_text_mit_chunks = rag_chain(text, db)
280
+ prompt = generate_prompt_with_history_openai(neu_text_mit_chunks, history)
281
 
282
+ #zusammengesetzte Anfrage an Modell...
283
+ #payload = tokenizer.apply_chat_template([{"role":"user","content":prompt}],tokenize=False)
284
+ payload = tokenizer.apply_chat_template(prompt,tokenize=False)
285
+ result = client.text_generation(
286
  payload,
287
  do_sample=True,
288
  return_full_text=False,
289
  max_new_tokens=2048,
290
  top_p=0.9,
291
  temperature=0.6,
292
+ )
 
 
 
 
 
 
 
 
 
 
 
293
  except Exception as e:
294
  raise gr.Error(e)
295
 
296
  #Antwort als Stream ausgeben...
297
+ for i in range(len(result)):
298
+ time.sleep(0.05)
299
+ yield result[: i+1]
300
 
301
 
302