Spaces:
Runtime error
Runtime error
Update app.py
Browse files
app.py
CHANGED
@@ -68,7 +68,6 @@ global_iteration = 0
|
|
68 |
# Variable globale pour stocker le contexte
|
69 |
global_context = {
|
70 |
"static_context": "Tu es le forgeron du village de Montaillou, un homme fort et travailleur, vivant au 14ème siècle dans l'univers des cathares dans les Pyrénées. Tu ne parles qu'en français avec un langage direct et franc. Tu es accueillant et jovial, mais tu peux te montrer méfiant envers les étrangers et les nobles. Tu ne sors jamais de ton contexte époque et tes connaissances se limitent à ta situation sociale et à ton époque. Tu dois être immersif et cohérent pour la personne qui va te parler. Prends toujours en compte l'historique de la conversation. Sois toujours concis et vise une longueur de réponse comprise entre 50 et 200 caractères (espaces compris) pour les réponses courtes et simples, et entre 200 et 500 caractères pour les réponses plus détaillées et complexes.",
|
71 |
-
"dynamic_context": "",
|
72 |
"sensitive_info_filter": ["contexte caché", "hidden_context", "[BOT]"],
|
73 |
}
|
74 |
|
@@ -86,13 +85,28 @@ def update_dynamic_context(user_input):
|
|
86 |
"comportement": "Le troubadour s'est montré agité et nerveux ces derniers temps. Il pourrait cacher quelque chose.",
|
87 |
"lame": "Tu as trouvé une lame tachée de sang près de la forge récemment. Tu l'as cachée, mais tu pourrais donner des indices à son sujet.",
|
88 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
89 |
|
90 |
-
|
91 |
for keyword in keywords:
|
92 |
if keyword in user_input.lower():
|
93 |
-
|
94 |
break
|
95 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
96 |
|
97 |
def filter_sensitive_info(text):
|
98 |
for word in global_context["sensitive_info_filter"]:
|
@@ -122,6 +136,14 @@ def format_prompt(message, history, user_id=""):
|
|
122 |
content = f"[BOT] {content}"
|
123 |
prompt += f"{content} [/BOT]"
|
124 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
125 |
prompt += f"</s>[INST][USER] {message} [/USER][/INST]"
|
126 |
|
127 |
# Ajouter le contexte statique et dynamique à chaque fois que l'utilisateur pose une question
|
@@ -168,7 +190,7 @@ def generate(
|
|
168 |
else:
|
169 |
user_id = ""
|
170 |
|
171 |
-
update_dynamic_context(prompt)
|
172 |
|
173 |
formatted_prompt = format_prompt(prompt, history, user_id)
|
174 |
global global_iteration
|
|
|
68 |
# Variable globale pour stocker le contexte
|
69 |
global_context = {
|
70 |
"static_context": "Tu es le forgeron du village de Montaillou, un homme fort et travailleur, vivant au 14ème siècle dans l'univers des cathares dans les Pyrénées. Tu ne parles qu'en français avec un langage direct et franc. Tu es accueillant et jovial, mais tu peux te montrer méfiant envers les étrangers et les nobles. Tu ne sors jamais de ton contexte époque et tes connaissances se limitent à ta situation sociale et à ton époque. Tu dois être immersif et cohérent pour la personne qui va te parler. Prends toujours en compte l'historique de la conversation. Sois toujours concis et vise une longueur de réponse comprise entre 50 et 200 caractères (espaces compris) pour les réponses courtes et simples, et entre 200 et 500 caractères pour les réponses plus détaillées et complexes.",
|
|
|
71 |
"sensitive_info_filter": ["contexte caché", "hidden_context", "[BOT]"],
|
72 |
}
|
73 |
|
|
|
85 |
"comportement": "Le troubadour s'est montré agité et nerveux ces derniers temps. Il pourrait cacher quelque chose.",
|
86 |
"lame": "Tu as trouvé une lame tachée de sang près de la forge récemment. Tu l'as cachée, mais tu pourrais donner des indices à son sujet.",
|
87 |
}
|
88 |
+
# Récupérer le contexte dynamique de l'utilisateur
|
89 |
+
doc_ref = db.collection("conversations-forgeron").document(user_id)
|
90 |
+
doc = doc_ref.get()
|
91 |
+
if doc.exists:
|
92 |
+
dynamic_context = doc.to_dict().get("dynamic_context", "")
|
93 |
+
else:
|
94 |
+
dynamic_context = ""
|
95 |
|
96 |
+
# Mettre à jour le contexte dynamique de l'utilisateur
|
97 |
for keyword in keywords:
|
98 |
if keyword in user_input.lower():
|
99 |
+
dynamic_context += f" {keywords[keyword]}"
|
100 |
break
|
101 |
|
102 |
+
# Enregistrer le contexte dynamique mis à jour dans Firestore
|
103 |
+
doc_ref.set(
|
104 |
+
{
|
105 |
+
"dynamic_context": dynamic_context,
|
106 |
+
},
|
107 |
+
merge=True,
|
108 |
+
)
|
109 |
+
|
110 |
|
111 |
def filter_sensitive_info(text):
|
112 |
for word in global_context["sensitive_info_filter"]:
|
|
|
136 |
content = f"[BOT] {content}"
|
137 |
prompt += f"{content} [/BOT]"
|
138 |
|
139 |
+
# Récupérer le contexte dynamique de l'utilisateur
|
140 |
+
doc_ref = db.collection("conversations-forgeron").document(user_id)
|
141 |
+
doc = doc_ref.get()
|
142 |
+
if doc.exists:
|
143 |
+
dynamic_context = doc.to_dict().get("dynamic_context", "")
|
144 |
+
else:
|
145 |
+
dynamic_context = ""
|
146 |
+
|
147 |
prompt += f"</s>[INST][USER] {message} [/USER][/INST]"
|
148 |
|
149 |
# Ajouter le contexte statique et dynamique à chaque fois que l'utilisateur pose une question
|
|
|
190 |
else:
|
191 |
user_id = ""
|
192 |
|
193 |
+
update_dynamic_context(user_id,prompt)
|
194 |
|
195 |
formatted_prompt = format_prompt(prompt, history, user_id)
|
196 |
global global_iteration
|