Bonjour, je développe « Bangwooldang », un service de rapports de saju.
Aucune connexion n’est nécessaire : même les visiteurs non inscrits peuvent consulter directement le service.
Pourquoi l’avoir créé ?
Le saju est le pire domaine à confier entièrement à un LLM. Il sait très bien produire des descriptions convaincantes, mais dès que des hallucinations se glissent dans les parties qui ont une « bonne réponse » — calcul du calendrier manse, cinq éléments, détermination du yongsin — la confiance s’effondre. De plus, il existe différentes méthodes pour calculer le yongsin, comme l’eokbu yongsin, le johu yongsin, le tonggwan yongsin ou le byeongyak yongsin, ce qui fait varier l’interprétation ; le confier à l’IA en lui disant simplement « mon yongsin, c’est ça » risque de lui faire produire une description erronée.
En essayant les services de saju IA existants, j’ai souvent constaté que, pour la même date de naissance, le yongsin et les descriptions changeaient à chaque consultation. J’ai voulu empêcher cela structurellement.
Comment je l’ai conçu — « le code juge, le LLM ne fait que rédiger »
- Moteur de calendrier manse (déterministe) : pondération des cinq éléments, dix divinités, 12 phases de fortune, sinsal, calculs des grandes périodes et des années en cours sont tous codés. La correction en temps solaire vrai selon le lieu de naissance est également entièrement gérée côté code.
- Couche d’évaluation (déterministe) : les évaluations amour, carrière, argent, santé, ainsi que les tendances mensuelles, sont déterminées par le code. Le LLM ne peut pas renverser ces résultats.
- Le LLM ne fait que la rédaction personnalisée : il écrit seulement « comment cette énergie agit chez cette personne ». Les définitions de concepts (« les dix divinités, c’est… ») sont rendues par un dictionnaire hardcodé : 0 token et 0 hallucination dans cette partie.
- Garde-fous : parsing → validation de schéma → vérification des mots interdits/du ton → fact-checking par comparaison avec les résultats du moteur → nouvelle tentative en cas d’échec → découpage du rapport en 5 groupes générés en parallèle pour réduire la latence.
Ce que j’ai appris en le développant
- Plutôt que d’allonger la liste des « ne fais pas » dans le prompt, il était bien plus efficace de restreindre dès le départ les entrées et le rôle afin que le LLM ne puisse pas décider.
- Plus la couche déterministe s’épaississait, plus les coûts LLM et le taux de nouvelles tentatives diminuaient. La lutte contre les hallucinations était aussi une optimisation des coûts.
- Le saju n’est pas un livre de prophéties. Ce n’est que du big data, simplement l’énergie associée à l’heure à laquelle je suis né ; j’ai estimé que la connaître et y faire face pouvait m’aider dans ma vie.
Je recevrai avec gratitude tous les retours, qu’il s’agisse de suggestions de fonctionnalités ou de critiques !
Enfin, les chats sont vraiment trop mignons. 😺😺
Aucun commentaire pour le moment.