Spaces:
Sleeping
Sleeping
Update app.py
Browse files
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(
|
209 |
-
|
210 |
-
|
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(
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
|
|
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 |
-
|
272 |
-
|
273 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
274 |
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
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 |
-
|
302 |
-
|
303 |
-
|
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 |
|