django-lucy-assist 1.2.1__py3-none-any.whl → 1.2.2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: django-lucy-assist
3
- Version: 1.2.1
3
+ Version: 1.2.2
4
4
  Summary: Assistant IA intelligent Revolucy pour outil métier
5
5
  Author-email: Revolucy <hello@revolucy.fr>
6
6
  Maintainer-email: Maxence <hello@revolucy.fr>
@@ -1,10 +1,10 @@
1
- lucy_assist/__init__.py,sha256=8pYJE9xYXxtj5QgLOKK_d9V4N5kcXO69UzGHVcUxDFs,325
2
- lucy_assist/admin.py,sha256=DHdcvkCYNkVBZoWrZ58AQxOEN2EmsN4E09qRnqYyARI,2919
1
+ lucy_assist/__init__.py,sha256=eg52UR1U2IqaSiZSe-_3OPuY4KhzK-eBk5NuZDboUtU,325
2
+ lucy_assist/admin.py,sha256=pDpxwrrSh-bY7vQhf5ZA3HKIugjP1OdthGDI-y5AVsk,3178
3
3
  lucy_assist/apps.py,sha256=zHZtlBXs5ML4CKtGg7xDyptSWzLfB1ks2VvbXF50hdo,264
4
4
  lucy_assist/conf.py,sha256=RgtZSrUwHZjjbEGZqQvifvC4GNdICmhty2XetfvAbls,3992
5
- lucy_assist/constantes.py,sha256=9cdU5aipmKxvhR-eY-5ktXQM43ccRjlwOLnA_HFFTHk,3969
5
+ lucy_assist/constantes.py,sha256=9L2VGBK0HorJoNDGdwQlhEfT75W-xNPAhtS0-qgawBs,3947
6
6
  lucy_assist/context_processors.py,sha256=tnzil4CEJwtExuQGLyRzIEuwpQfnwJ-eMgkkR6zNgSg,2200
7
- lucy_assist/signals.py,sha256=u32Y2MDjE8rEgwS9VD_3fCbZT_NUjmemAUuREnTb-IU,1500
7
+ lucy_assist/signals.py,sha256=i3Uj9v-0zyAIROFl86fLlwaqRqQizL9_CpWmVjJbk8g,863
8
8
  lucy_assist/urls.py,sha256=Qr8jJjEyC_EFGAeiZnjhgTc-9P4Y-TqKDaYicWRp_GQ,1451
9
9
  lucy_assist/migrations/0001_initial.py,sha256=quQUw6is5clu3Q4B3P_0mUZVE33lSvdimH_OTCY3ycE,4977
10
10
  lucy_assist/migrations/0002_configurationlucyassist_prompt_complementaire.py,sha256=yWE4-RPHQtPAqYHlAhr4EsXgk35kI8zRQArlAP_JwDc,418
@@ -13,7 +13,7 @@ lucy_assist/migrations/0004_configurationlucyassist_system_prompt.py,sha256=0a78
13
13
  lucy_assist/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
14
  lucy_assist/models/__init__.py,sha256=JQMr50P94sBrKwwcNArRE_qnk7dLnknMKCabeRLskJc,415
15
15
  lucy_assist/models/base.py,sha256=Ql2AY7bzvcxZhxsPdCpbVEKvtWD-NBkHTLYZX4TjT3s,1532
16
- lucy_assist/models/configuration.py,sha256=8_DboZJUsg6grL9CIRM3sR2WKhyc_SVVsHG9_kPihuA,12085
16
+ lucy_assist/models/configuration.py,sha256=EdCulH59rnjHM-c307a9dyjiRCEwdyN64Vwa8Vb6tuQ,12487
17
17
  lucy_assist/models/conversation.py,sha256=psx2AQtQ5SFP-AJD7wbGabpXXLIGYngdVZfeoTlgKtQ,1849
18
18
  lucy_assist/models/message.py,sha256=kf-ffMtLYNFhXYUrB3QSL97KKDJUOMrKaPjKeOcJa_o,1492
19
19
  lucy_assist/models/project_context_cache.py,sha256=Bnb0VU7pv7QEvjOI6JSLEPvL4BxskCQ0ojWGxO7YDSM,6530
@@ -42,7 +42,7 @@ lucy_assist/utils/message_utils.py,sha256=YzcLHnl1ig4d5_utHCJwgxS7tKmd49Q-tuo78e
42
42
  lucy_assist/utils/token_utils.py,sha256=aBzyKVqpU67rAetO_Ee3QIfPtbNyjyWSe6qPfzIRJF8,2608
43
43
  lucy_assist/views/__init__.py,sha256=uUPYpuHlBC8j7zKS_DDoWjwpCpRnOIXETY-S2-Ss0cY,288
44
44
  lucy_assist/views/api_views.py,sha256=sJwKNC9-mi1zMbgyKZTVvT3pz4hMmw4jR0rrS7iJR-g,23619
45
- django_lucy_assist-1.2.1.dist-info/METADATA,sha256=hF6NzwK8_D6oJERSyFzFV-yKreFJj8RzZHgxbdd98Zc,5899
46
- django_lucy_assist-1.2.1.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
47
- django_lucy_assist-1.2.1.dist-info/top_level.txt,sha256=T-UCiwpn5yF3Oem3234TUpSVnEgbkrM2rGz9Tz5N-QA,12
48
- django_lucy_assist-1.2.1.dist-info/RECORD,,
45
+ django_lucy_assist-1.2.2.dist-info/METADATA,sha256=t_hJ2rRU16S5X_o_Mj66IwNG4Nl8PQjrJi837ZGSjjs,5899
46
+ django_lucy_assist-1.2.2.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
47
+ django_lucy_assist-1.2.2.dist-info/top_level.txt,sha256=T-UCiwpn5yF3Oem3234TUpSVnEgbkrM2rGz9Tz5N-QA,12
48
+ django_lucy_assist-1.2.2.dist-info/RECORD,,
lucy_assist/__init__.py CHANGED
@@ -5,7 +5,7 @@ Un chatbot IA base sur Mistral AI, integrable dans n'importe quelle
5
5
  application Django pour fournir une assistance contextuelle aux utilisateurs.
6
6
  """
7
7
 
8
- __version__ = '1.2.1'
8
+ __version__ = '1.2.2'
9
9
  __author__ = 'Revolucy'
10
10
 
11
11
  default_app_config = 'lucy_assist.apps.LucyAssistConfig'
lucy_assist/admin.py CHANGED
@@ -26,7 +26,12 @@ class ConfigurationLucyAssistAdmin(admin.ModelAdmin):
26
26
  'fields': ('tokens_disponibles', 'prix_par_million_tokens', 'actif')
27
27
  }),
28
28
  ('Personnalisation', {
29
- 'fields': ('avatar', 'questions_frequentes', 'prompt_complementaire')
29
+ 'fields': ('avatar', 'questions_frequentes')
30
+ }),
31
+ ('Prompt Système', {
32
+ 'fields': ('system_prompt', 'prompt_complementaire'),
33
+ 'classes': ('collapse',),
34
+ 'description': 'Le prompt système est initialisé automatiquement si vide. Le prompt complémentaire est ajouté à la fin.'
30
35
  }),
31
36
  ('Mapping Automatique (lecture seule)', {
32
37
  'fields': ('crud_views_mapping_display', 'model_app_mapping_display'),
lucy_assist/constantes.py CHANGED
@@ -58,11 +58,11 @@ Tu as la capacité d'EXÉCUTER des actions directement dans l'application grâce
58
58
 
59
59
  ## COMPORTEMENT PRIORITAIRE - ACTION FIRST
60
60
 
61
- RÈGLE FONDAMENTALE : Quand l'utilisateur te demande de faire quelque chose (créer, modifier, rechercher, supprimer),
62
- tu dois EXÉCUTER L'ACTION IMMÉDIATEMENT en utilisant les tools disponibles.
61
+ REGLE FONDAMENTALE : Quand l'utilisateur te demande de faire quelque chose (creer, modifier, rechercher, supprimer),
62
+ tu dois EXECUTER L'ACTION IMMEDIATEMENT en utilisant les tools disponibles.
63
63
 
64
- NE FAIS PAS : Expliquer comment faire, rediriger vers une page, dire que tu ne peux pas
65
- FAIS : Utiliser le tool approprié pour exécuter l'action demandée
64
+ NE FAIS PAS : Expliquer comment faire, rediriger vers une page, dire que tu ne peux pas
65
+ FAIS : Utiliser le tool approprie pour executer l'action demandee
66
66
 
67
67
  ## Quand NE PAS agir directement
68
68
 
@@ -91,10 +91,10 @@ Pour TOUTE demande de suppression, tu DOIS suivre cette procédure :
91
91
  ## Modèles disponibles dans l'application
92
92
  {available_models}
93
93
 
94
- ## Format de réponse après action
94
+ ## Format de reponse apres action
95
95
 
96
- Après avoir exécuté une action, confirme brièvement :
97
- " [Action effectuée] - [Détail bref]"
96
+ Apres avoir execute une action, confirme brievement :
97
+ "[OK] [Action effectuee] - [Detail bref]"
98
98
  """,
99
99
  'crud': """Tu dois aider l'utilisateur à créer ou modifier un objet.
100
100
  Formulaire disponible : {form_info}
@@ -57,12 +57,20 @@ class ConfigurationLucyAssist(LucyAssistBaseModel):
57
57
  """
58
58
  Retourne la configuration singleton.
59
59
  Utilise le cache pour optimiser les performances.
60
+ Initialise le system_prompt si vide.
60
61
  """
61
62
  cache_key = 'lucy_assist_config'
62
63
  config = cache.get(cache_key)
63
64
 
64
65
  if config is None:
65
- config, _ = cls.objects.get_or_create(pk=1)
66
+ config, created = cls.objects.get_or_create(pk=1)
67
+
68
+ # Initialiser le system_prompt si vide (première utilisation ou reset)
69
+ if not config.system_prompt:
70
+ from lucy_assist.constantes import LucyAssistConstantes
71
+ config.system_prompt = LucyAssistConstantes.SYSTEM_PROMPTS['default']
72
+ config.save(update_fields=['system_prompt'])
73
+
66
74
  cache.set(cache_key, config, timeout=300) # Cache 5 minutes
67
75
 
68
76
  return config
@@ -267,7 +275,7 @@ class ConfigurationLucyAssist(LucyAssistBaseModel):
267
275
  """
268
276
  Retourne le nom de l'application depuis les settings.
269
277
  """
270
- return lucy_assist_settings.get('APPLICATION_NAME', 'cette application')
278
+ return getattr(lucy_assist_settings, 'APPLICATION_NAME', 'cette application')
271
279
 
272
280
  def get_available_models_description(self) -> str:
273
281
  """
lucy_assist/signals.py CHANGED
@@ -5,7 +5,6 @@ from django.db.models.signals import post_save, pre_delete
5
5
  from django.dispatch import receiver
6
6
 
7
7
  from lucy_assist.models import Message, ConfigurationLucyAssist
8
- from lucy_assist.constantes import LucyAssistConstantes
9
8
 
10
9
 
11
10
  @receiver(post_save, sender=Message)
@@ -26,17 +25,3 @@ def message_post_save(sender, instance, created, **kwargs):
26
25
  config.save(update_fields=['tokens_disponibles'])
27
26
 
28
27
 
29
- @receiver(post_save, sender=ConfigurationLucyAssist)
30
- def config_post_save(sender, instance, created, **kwargs):
31
- """
32
- Signal déclenché après sauvegarde de la configuration.
33
- Initialise le system_prompt avec le prompt par défaut si vide.
34
- """
35
- if getattr(instance, '_skip_signals', False):
36
- return
37
-
38
- if not instance.system_prompt:
39
- # Initialiser avec le prompt par défaut
40
- instance.system_prompt = LucyAssistConstantes.SYSTEM_PROMPTS['default']
41
- instance._skip_signals = True
42
- instance.save(update_fields=['system_prompt'])