Update app.py
Browse files
app.py
CHANGED
@@ -222,49 +222,63 @@ def further_retrieve(query):
|
|
222 |
except :
|
223 |
print("No rerank")
|
224 |
return get_all_text(retriever.retrieve(query))
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
267 |
)
|
268 |
-
|
269 |
-
# Launch the interface
|
270 |
-
iface.launch(share=True, debug = True)
|
|
|
222 |
except :
|
223 |
print("No rerank")
|
224 |
return get_all_text(retriever.retrieve(query))
|
225 |
+
|
226 |
+
def estimate_tokens(text):
|
227 |
+
# Encoder le texte pour obtenir les tokens
|
228 |
+
encoding = tiktoken.get_encoding("cl100k_base")
|
229 |
+
tokens = encoding.encode(text)
|
230 |
+
return len(tokens)
|
231 |
+
|
232 |
+
history_with_docs = []
|
233 |
+
def process_final(user_prom, history):
|
234 |
+
global history_with_docs
|
235 |
+
documents = further_retrieve(user_prom)
|
236 |
+
history_with_docs.append((user_prom, documents))
|
237 |
+
system_p = "Tu es un assistant utile. L'utilisateur va te donner des documents suivi par une question, tu dois trouver la bonne réponse apartir des document fournis .Focalise sur les service et la direction du signataire que l'utilisateur cherche. Tu ne dois pas poser de question en retour.Tu ne dois pas mentionner le numéro des documents. Tu t'exprimes dans la même langue que l'utilisateur."
|
238 |
+
print("PHASE 03 passing to LLM\n")
|
239 |
+
sys_p = f"<|im_start|>system \n{system_p}\n<|im_end|>"
|
240 |
+
prompt_f = ""
|
241 |
+
total_tokens = estimate_tokens(prompt_f)
|
242 |
+
|
243 |
+
for val in reversed(history):
|
244 |
+
if val[0]: # Si c'est une question utilisateur
|
245 |
+
# Chercher le document correspondant dans history_with_docs
|
246 |
+
for past_question, past_documents in reversed(history_with_docs):
|
247 |
+
if past_question == val[0]:
|
248 |
+
user_p = f" <|im_start|>user \n Documents: \n {past_documents}\n Question :{val[0]}\n<|im_end|>"
|
249 |
+
break
|
250 |
+
if val[1]: # Si c'est une réponse de l'assistant
|
251 |
+
assistant_p = f" <|im_start|>assistant \n {val[1]}\n<|im_end|>"
|
252 |
+
|
253 |
+
current_tokens = estimate_tokens(user_p+assistant_p)
|
254 |
+
|
255 |
+
if total_tokens + current_tokens > 3000:
|
256 |
+
break
|
257 |
+
else:
|
258 |
+
prompt_f = user_p + assistant_p + prompt_f
|
259 |
+
total_tokens += current_tokens
|
260 |
+
|
261 |
+
prompt_f = f"{sys_p} {prompt_f} <|im_start|>user \n Documents: \n {documents}\nQuestion : {user_prom} \n<|im_end|><|im_start|>assistant \n"
|
262 |
+
gen = llm.stream_complete(formatted=True, prompt=prompt_f)
|
263 |
+
print(f"le nombre TOTAL de tokens : {total_tokens}\n")
|
264 |
+
print("_"*100)
|
265 |
+
print(prompt_f)
|
266 |
+
print("o"*100)
|
267 |
+
for response in gen:
|
268 |
+
yield response.text
|
269 |
+
|
270 |
+
from gradio import gradio as gr
|
271 |
+
description = """
|
272 |
+
<p>
|
273 |
+
<center>
|
274 |
+
<img src="https://www.nicecotedazur.org/wp-content/themes/mnca/images/logo-metropole-nca.png" alt="rick" width="250"/>
|
275 |
+
</center>
|
276 |
+
</p>
|
277 |
+
<p style="text-align:right"> Made by KHEOPS AI</p>
|
278 |
+
"""
|
279 |
+
demo = gr.ChatInterface(
|
280 |
+
fn=process_final,
|
281 |
+
title="METROPOLE CHATBOT",
|
282 |
+
description=description,
|
283 |
)
|
284 |
+
demo.launch(share=True, debug =True)
|
|
|
|