Elouarn commited on
Commit
b5b25b5
·
1 Parent(s): 924fed3

better history format

Browse files
Files changed (1) hide show
  1. app.py +21 -20
app.py CHANGED
@@ -15,15 +15,22 @@ firebase_admin.initialize_app(cred)
15
  db = firestore.client()
16
 
17
 
18
- def save_message(user_id, message):
19
  # Enregistrer le message dans Firestore
20
  doc_ref = db.collection("conversations").document(user_id)
21
  doc_ref.set(
22
  {
23
  "messages": firestore.ArrayUnion(
24
- [{"message": message, "timestamp": datetime.now()}]
 
 
 
 
 
 
25
  )
26
- }
 
27
  )
28
 
29
 
@@ -31,8 +38,8 @@ def load_history(user_id):
31
  # Charger l'historique de conversation de l'utilisateur
32
  doc_ref = db.collection("conversations").document(user_id)
33
  doc = doc_ref.get()
34
- if doc.exists:
35
- messages = doc.to_dict()["messages"]
36
  return messages
37
  else:
38
  return []
@@ -93,17 +100,13 @@ def format_prompt(message, history, user_id=""):
93
 
94
  prompt = "<s>"
95
 
96
- for user_prompt, bot_response in history:
97
- prompt += f"[USER] {user_prompt} [/USER]"
98
- if (
99
- history
100
- and isinstance(history[-1], dict)
101
- and user_prompt == history[-1].get("0")
102
- ):
103
- # N'ajouter les balises [BOT] qu'autour de la dernière réponse du bot
104
- prompt += f" [BOT]{filter_sensitive_info(bot_response)}[/BOT] "
105
- else:
106
- prompt += f" {filter_sensitive_info(bot_response)} "
107
  prompt += f"</s>[INST][USER] {message} [/USER][/INST]"
108
 
109
  # Ajouter le contexte statique et dynamique à chaque fois que l'utilisateur pose une question
@@ -163,19 +166,17 @@ def generate(
163
  return_full_text=False,
164
  )
165
  output = ""
166
- bot_response = ""
167
 
168
  for response in stream:
169
  response_text = filter_sensitive_info(response.token.text)
170
  response_text = remove_length_info(response_text)
171
  output += response_text
172
- bot_response += response_text
173
  yield output
174
 
175
  if user_id != "":
176
  # Sauvegarder le message de l'utilisateur et la réponse complète du bot dans Firestore
177
- save_message(user_id, prompt)
178
- save_message(user_id, bot_response)
179
 
180
  return output
181
 
 
15
  db = firestore.client()
16
 
17
 
18
+ def save_message(user_id, message, role="user"):
19
  # Enregistrer le message dans Firestore
20
  doc_ref = db.collection("conversations").document(user_id)
21
  doc_ref.set(
22
  {
23
  "messages": firestore.ArrayUnion(
24
+ [
25
+ {
26
+ "role": role,
27
+ "message": f"[{role.upper()}] {message} [/{role.upper()}]",
28
+ "timestamp": datetime.now(),
29
+ }
30
+ ]
31
  )
32
+ },
33
+ merge=True,
34
  )
35
 
36
 
 
38
  # Charger l'historique de conversation de l'utilisateur
39
  doc_ref = db.collection("conversations").document(user_id)
40
  doc = doc_ref.get()
41
+ if doc:
42
+ messages = doc.to_dict().get("messages", [])
43
  return messages
44
  else:
45
  return []
 
100
 
101
  prompt = "<s>"
102
 
103
+ for item in history:
104
+ role = item.get("role")
105
+ content = item.get("message")
106
+ if role == "user":
107
+ prompt += f"[USER] {content} [/USER]"
108
+ elif role == "bot":
109
+ prompt += f" [BOT]{filter_sensitive_info(content)}[/BOT] "
 
 
 
 
110
  prompt += f"</s>[INST][USER] {message} [/USER][/INST]"
111
 
112
  # Ajouter le contexte statique et dynamique à chaque fois que l'utilisateur pose une question
 
166
  return_full_text=False,
167
  )
168
  output = ""
 
169
 
170
  for response in stream:
171
  response_text = filter_sensitive_info(response.token.text)
172
  response_text = remove_length_info(response_text)
173
  output += response_text
 
174
  yield output
175
 
176
  if user_id != "":
177
  # Sauvegarder le message de l'utilisateur et la réponse complète du bot dans Firestore
178
+ save_message(user_id, prompt, role="user")
179
+ save_message(user_id, output, role="bot")
180
 
181
  return output
182