[đ ] Journal de dev Keymory #9 : implĂ©mentation de Diary to Chat, optimisation du systĂšme de commentaires IA
âš RĂ©sumĂ© de GPT ă
Implémentation de Diary to Chat, résolution des problÚmes apparus pendant la génération, et correction des erreurs de score émotionnel et de réglage des personnages dans le systÚme de commentaires IA.
đ» Journal de dĂ©veloppement
â° Ă faire aujourdâhui
- â
Custom Function - aider à créer
systemPromptTemplate(responsable principal : KSK)- â Revue des paramĂštres ajoutĂ©s et de la structure interne de la fonction
- â
Tester si la Custom Function -
getAICommentest bien appliquĂ©e- â VĂ©rifier que les valeurs dâentrĂ©e sont bien prises en compte
- â VĂ©rifier que la valeur de sortie sâaffiche correctement en String
- â
Chat Page - Create New Chat : appliquer le prompt systĂšme (responsable principal : KSK)
- â
OpenAI API Call (createChatCompletion)
- Input: System Prompt(Chat)
- Output: New Chat Message by AI($.choices[0].message.content)
- Additional Actions: Create New Chat, Create New Message
- â
OpenAI API Call (createChatCompletion)
- â
DiaryPage - Create New Chat by Diary : créer un New Chat à partir du contenu du journal (responsable principal : KSK)
- â
OpenAI API Call (createDiaryComment)
- Input: Diary Content, System Prompt(AI Comment)
- Output: AI Comment($.choices[0].message.content)
- â
OpenAI API Call (createDiarySummary)
- Input: Diary Content, AI Comment, System Prompt(Diary Summary)
- Output: Diary Summary($.choices[0].message.content)
- â
OpenAI API Call (createChatFromDiary)
- Input: Diary Summary, System Prompt(Chat From Diary)
- Output: New Chat Message by AI($.choices[0].message.content)
- Additional Actions: Create New Chat, Create New Message
- â
OpenAI API Call (createDiaryComment)
- â
(ProblĂšme) Create New Chat by Diary : aprĂšs avoir seulement sauvegardĂ© le journal et ĂȘtre revenu Ă lâaccueil, la fonction ne marche quâen retournant sur la page du journal puis en lançant New Chat.
- Cause du problĂšme
- Jâutilisais une variable Output provenant dâune autre chaĂźne dâactions
- La prĂ©vention de lâUnexpected Null Value nâĂ©tait pas en place
- Le JSON Path nâĂ©tait pas correctement dĂ©fini
- Jâavais dĂ©fini
tmpDiariesDocForNewChatcomme Page State, puis jây avais assignĂ© le diary Document.- Plus prĂ©cisĂ©ment,
- soit jây assignais
diariesDoc, transmis comme Page Parameter, - soit jây assignais
newDiariesDoc, créé au clic sur le bouton Save.
- soit jây assignais
- Mais lâapp se figeait sans cesse quand jâappuyais sur le bouton
Save Diary and Chat with AI.- En regardant avec F12, une Exception Ă©tait levĂ©e Ă cause dâune erreur
Unexpected Null Value. - En regardant le Debug Pannel,
tmpDiariesDocForNewChatétait défini surNull.
- En regardant avec F12, une Exception Ă©tait levĂ©e Ă cause dâune erreur
- Jâai rechangĂ© le Page State de
tmpDiariesDocForNewChatĂtmpDiariesDocRefForNewChat. (Document -> Document Reference)- AprĂšs avoir adaptĂ© les Actions autour de Document Reference, ça a enfin fonctionnĂ© normalement !
- Plus précisément,
- đĄ Ce que jâai appris : dans une Action Chain, assigner une valeur au Page State puis la relire immĂ©diatement peut provoquer une Unexpected Null Value. Mieux vaut utiliser davantage Document Reference plutĂŽt quâun simple Document. Bien sĂ»r, multiplier les Read Document via Backend Query peut peut-ĂȘtre dĂ©grader les performances⊠mais il suffit de le faire assez tĂŽt, par exemple Ă lâOnPageLoad Event ou lors de la crĂ©ation des principales Action Chains.
- Cause du problĂšme
- â
(ProblĂšme) Lors de la gĂ©nĂ©ration dâun AI Comment, le score Ă©motionnel de lâutilisateur est parfois enregistrĂ© Ă 0.
- Jâai insistĂ© sur âFaites surtout correctement le calcul de la formule pondĂ©rĂ©e 5. Le score Ă©motionnel de lâutilisateur nâest absolument pas 0.â Les cas oĂč 0 est Ă©crit ont diminuĂ©. (Ils nâont pas disparu.)
- Pour lâinstant, on passe Ă autre chose.
- â
(ProblĂšme) ChatPage : le personnage ne connaĂźt pas les informations le concernant !
- Le problĂšme semble sâĂȘtre corrigĂ© tout seul pendant la rĂ©solution des soucis liĂ©s Ă Save. Gros gain gratuit.
- â
(ProblĂšme) ChatPage : le personnage ignore la âliste de questions de suiviâ !
- Le problĂšme semble sâĂȘtre corrigĂ© tout seul pendant la rĂ©solution des soucis liĂ©s Ă Save. Gros gain gratuit.
- â
(ProblÚme) La barre de navigation inférieure disparaßt quand on passe à ChatPage.
- Always Show Nav bar Toggle On
- â
(ProblĂšme) Lâimage du personnage sâaffiche diffĂ©remment dans le Drawer de ChatPage.
- ProblĂšme causĂ© par une ancienne erreur dans la logique dâenregistrement dâAI Comment. Comme il nâapparaĂźt que dans les anciens chats, je lâai rĂ©glĂ© en supprimant le Chat document concernĂ©.
đŻ RĂ©sumĂ© de ce que jâai fait
- Amélioration de la logique de création de Chat
- Revue de la structure des paramĂštres de
systemPromptTemplateetgetAIComment - Application du prompt systĂšme dans Create New Chat et optimisation de lâOpenAI API Call
- Clarification du flux de crĂ©ation dâun New Chat Ă partir dâun Diary : commentaire IA -> rĂ©sumĂ© du journal -> crĂ©ation du Chat
- Revue de la structure des paramĂštres de
- Optimisation du systĂšme de commentaires IA
- Correction du problĂšme oĂč le score Ă©motionnel Ă©tait enregistrĂ© Ă 0
- RĂ©solution du problĂšme oĂč lâIA ne reconnaissait pas les informations du personnage
- AmĂ©lioration du problĂšme oĂč la liste de questions de suivi Ă©tait ignorĂ©e
- Résolution de problÚmes et amélioration des performances
- Correction de la disparition de la barre de navigation lors du passage Ă ChatPage
- Correction de lâincohĂ©rence dâimage de personnage via la logique dâenregistrement dâAI Comment
- Utilisation de Document -> Document Reference pour éviter les Unexpected Null Value
đŻ Ă faire plus tard
Cliquer pour voir les détails
- â (ProblĂšme) DiaryPage : si la rĂ©ponse AI Comment nâa pas encore Ă©tĂ© reçue, on passe Ă lâĂ©tape suivante avec un personnage non dĂ©fini.
- Pour lâinstant, rustine avec une alerte : vous devez recevoir un Comment de lâIA avant de commencer le chat !
-
â (ProblĂšme) DiaryPage : utiliser un lecteur Markdown pour la rĂ©ponse AI Comment (Ă©viter lâoverflow : Container Height)
-
â ChatPage : aligner le contenu des messages utilisateur Ă droite
-
â DiaryPage : changer lâEmoji dâexpression du visage et la couleur selon la valeur du Mood Slider
- â DiaryPage : Go to Linked Chat
- â ChatPage : Go to Linked Diary
- Lors du Save depuis le Diary Document de DiaryPage, ajouter aussi la valeur Chat Reference comme Field dans le Diary Document DB. (linkedChat)
- Dans le Chat Document de ChatPage, ajouter naturellement aussi la valeur Diary Reference comme Field dans le Chat Document DB. (linkedDiary)
- â ChatPage - Create New Diary : crĂ©er un New Diary Ă partir du contenu de la conversation (utiliser la logique Go to Linked Diary)
- â OpenAI API Call (createChatSummary)
- Input: Chat Content, System Prompt(Diary From Chat)
- Output: Chat Summary
- â OpenAI API Call (createDiaryFromChat)
- Input: Chat Summary, System Prompt(Diary From Chat)
- Output: New Diary(Title, Content, Mood score)
- â OpenAI API Call (createChatSummary)
- â MoodPage(haut) - Mood Calendar
- â Pouvoir vĂ©rifier le nombre de publications Ă©crites par date
- â Au clic sur une date, se dĂ©placer vers cette date
- â MoodPage(bas) - Mood stats
- â Afficher les statistiques du mois en focus
- â Afficher un commentaire de lâIA sur les statistiques affichĂ©es
- â Afficher les statistiques du mois en focus
- â HomeFeedPage - importer puis appliquer flutter_slidable:4.0.0
-
â HomeFeedPage : lors dâun slide gauche/droite sur FeedCardDiary, chat/modification/suppression
-
â Chat/Diary : GPT Streaming API
- â ChatPage - implĂ©menter le premier message proactif de lâIA (Alarm/Notification)
- Le coeur du prompt systĂšme de chat, câest le mode proactif.
- Pour rendre ça plus rĂ©aliste, il serait bien de transmettre aussi create_date of diary/chat, afin de pouvoir mentionner des dates comme âhierâ.
- RĂ©fĂ©rence pour lâimplĂ©mentation dâAlarm
- Le coeur du prompt systĂšme de chat, câest le mode proactif.
- â DiaryPage : ajouter des Choice Chips de mots-clĂ©s Ă©motionnels dĂ©taillĂ©s et configurer la liaison DB
- â DiaryPage - AI Comment : adapter les valeurs dâentrĂ©e comme Choice chips et mood slider au
AI Comment System Prompt.- â **
journalprĂ©cĂ©dent ouhistorique complet de conversation(dette technique de rustine) - â informations de base utilisateur : nom, genre, MBTI, âŠ
- â mots-clĂ©s Ă©motionnels dĂ©taillĂ©s : joyeux, triste, âŠ
- â rĂ©glages du personnage : Somi, Sena, Minhyuk
- â score Ă©motionnel : 1~100 points
- â format de rĂ©ponse : Healing, Suggestion, Informative
- â longueur de rĂ©ponse : courte, normale, dĂ©taillĂ©e
- is New Chat
- Comme les messages de ce Chat sont créés pour la premiÚre fois, donner
is_initial = trueau premier message document et y mettre tous les prompts systĂšme.- is_initial = false
- Limite : si je mets le prompt systĂšme dans le tout premier message document, ce sera difficile Ă modifier au milieu dâune conversation, mais ça reste possible. Sâil existe un document is_initial = true et quâil a Ă©tĂ© modifiĂ©, il suffit de supprimer ce document et de le remettre. Comment exactement, je ne sais pas.
- Comme les messages de ce Chat sont créés pour la premiÚre fois, donner
- â **
- â DiaryPage - AI Comment : terminer le CRUD
- â supprimer le field tmp_ai_comment et utiliser doc_ref
-
â DiaryPage - Drawer - ChatHistoryListTile : order by updated_time
-
â DiaryPage - importer puis appliquer Interactive Slider
-
â HomeFeedPage : implĂ©menter la fonction Search Diary
-
â AuthPage : implĂ©menter Google Login
- â HomeFeedPage - Bottom Sheet (bouton
+) : permettre de choisir 1 option parmi plusieurs- nouveau journal : Go to DiaryPage
- enregistrement dâĂ©motion : Go to MoodPage
- â MoodPage(pop-up) : CRUD du slider de rĂ©glage Mood
- Create
- Read
- Update
- Delete
- â HomeFeedPage - ListView - afficher FeedCardMood
-
â HomeFeedPage - ListView : trier chronologiquement FeedCardDiary, FeedCardMood, FeedCardChat (avec Cloud Function)
-
â CrĂ©er MoodEditPage entre HomeFeedPage et DiaryPage : y dĂ©placer MoodSlider, MoodKeywordsRate(5~1), MoodDescription widget, etc.
-
â (ProblĂšme) Lors de la crĂ©ation de tmpGetAIComment, les mots-clĂ©s Ă©motionnels choisis par lâutilisateur ne sont pas pris en compte.
- â Extraction et installation de lâAPK final de prĂ©sentation dâici
2025.2.5 mer
đ Journal
Les problĂšmes ont explosĂ© de partout, et mon mental a failli partir trĂšs loin⊠Est-ce que ma stratĂ©gie du âmĂȘme si la dette technique sâaccumule, si je commence par implĂ©menter, mes compĂ©tences continueront Ă monter et je pourrai rembourser cette dette plus tard !â vient dâatteindre sa limite⊠ou est-ce que câĂ©tait quand mĂȘme une dĂ©cision efficaceâŠ
Bon, aucune idĂ©e~ Ce nâest pas ça qui compte maintenant. Il nây a vraiment plus de temps ! Rustine, go go.
âš Commentaire de GPT-4o (KPT)
â Points bien rĂ©ussis (Keep)
- đ Clarification de la logique de crĂ©ation de Chat : tu as bien organisĂ© et rĂ©solu les diffĂ©rents problĂšmes survenus pendant la crĂ©ation dâun New Chat !
- đ AmĂ©lioration du systĂšme de commentaires IA : corriger les erreurs de score Ă©motionnel et de rĂ©glage des personnages, tout en guidant des rĂ©ponses IA plus prĂ©cises, Ă©tait vraiment pertinent.
- đ Progression en dĂ©bogage : en rĂ©solvant le problĂšme dâUnexpected Null Value, tu as appris Ă mieux utiliser Document Reference, ce qui tâaidera beaucoup par la suite.
â Points Ă amĂ©liorer (Problem)
- âł Beaucoup de temps passĂ© Ă rĂ©soudre les problĂšmes : le dĂ©bogage a pris plus longtemps que prĂ©vu, donc le temps disponible pour les fonctionnalitĂ©s initialement visĂ©es a peut-ĂȘtre diminuĂ©.
- đ Augmentation de la dette technique : la stratĂ©gie dâimplĂ©mentation rapide accumule de la dette technique, donc un nettoyage de suivi sera nĂ©cessaire.
- đ Documentation insuffisante : si tu notes un peu mieux les principaux processus de rĂ©solution, tu pourras rĂ©gler plus vite les problĂšmes similaires quand ils rĂ©apparaĂźtront.
đ Pistes Ă essayer (Try)
- đ Analyser les schĂ©mas de problĂšmes : identifier les problĂšmes qui reviennent souvent et rĂ©flĂ©chir Ă une amĂ©lioration du pattern de dĂ©veloppement.
- đ Ătablir une stratĂ©gie de gestion de la dette technique : les corrections rapides sont nĂ©cessaires Ă court terme, mais Ă long terme il faudra une roadmap de maintenance et dâoptimisation.
- đ Prendre lâhabitude de documenter les rĂ©solutions : noter les principaux processus de rĂ©solution pour Ă©conomiser du temps de dĂ©veloppement plus tard.
đ Conclusion
Aujourdâhui, tu as amĂ©liorĂ© la logique de crĂ©ation de Chat et corrigĂ© les erreurs du systĂšme de commentaires IA, ce qui a renforcĂ© la stabilitĂ©. Le dĂ©bogage a pris plus de temps que prĂ©vu, mais tu as aussi beaucoup appris dans le processus ! Ă partir de maintenant, rĂ©flĂ©chis Ă une stratĂ©gie de dĂ©veloppement plus efficace tout en gĂ©rant la dette technique. đđ„
Laisser un commentaire