kheopss commited on
Commit
51ee6bd
1 Parent(s): c846f7b

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +59 -45
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
- def prompt_objectif(user_input):
228
- from openai import OpenAI
229
- client = OpenAI(api_key=openai_key)
230
- documents = further_retrieve(user_input)
231
- print("ù"*100)
232
- print(documents)
233
- print("ù"*100)
234
- try:
235
- # Tokenize the text using tiktoken
236
- encoder = tiktoken.get_encoding("cl100k_base")
237
- tokens = encoder.encode(user_input)
238
- encoded_text = encoder.decode(tokens)
239
-
240
- # Make the API call to the language model
241
- response = client.chat.completions.create(
242
- model="gpt-4o",
243
- messages=[
244
- {"role": "system", "content": f"""Tu es un assistant utile. L'utilisateur posera une question et tu devras trouver la réponse dans les documents suivants.Focalise sur les service et la direction du signataire que l'utilisateur cherche. Tu ne dois pas poser de question en retour.Tu ne sois mentionner le numéro des documents. Tu t'exprimes dans la même langue que l'utilisateur.,
245
- DOCUMENTS :
246
- {documents}"""},
247
- {"role": "user", "content": user_input},
248
- ]
249
- )
250
-
251
- # Extract and return the generated response
252
- resultat = response.choices[0].message.content
253
- return resultat
254
-
255
- except Exception as e:
256
- print(f"Failed to generate questions: {e}")
257
- return None
258
-
259
-
260
- # Create the Gradio interface
261
- iface = gr.Interface(
262
- fn=prompt_objectif,
263
- inputs="text",
264
- outputs="text",
265
- title="Chatbot Interaction",
266
- description="Enter your message to interact with the chatbot."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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)