[đ ] Journal de dĂ©veloppement Keymory #5 : tmpGetAIComment, Custom OpenAI API Call
âš RĂ©sumĂ© de GPT ă
Jâai construit un systĂšme dâAI Comment avec lâOpenAI API et FlutterFlow, puis Ă©tendu les fonctionnalitĂ©s dâIA de Keymory en reliant une Custom Function Ă un API Call. Jâai aussi ajoutĂ© la sĂ©lection et lâenregistrement de personnages, et clarifiĂ© le flux de donnĂ©es entre Chat et Diary.
đ» Journal de dĂ©veloppement
â° TĂąches du jour
- â How to Use Open AIâs GPT-4o in FlutterFlow - Part 1
- â
ChatPage - lorsque lâon choisit un personnage avec le Dropdown, enregistrer aussi les informations du personnage dans
Chats Collection.- Assigner au Page state la
referenceduCharacter documentcorrespondant aucharacter name.
- Assigner au Page state la
-
â ChatPage - transmettre aussi les informations du personnage lors de la crĂ©ation dâun NewChat.
-
â DiaryPage - Drawer - aider Ă crĂ©er ChatHistoryListTile (comme GPT)
- â
Essayer dâinsĂ©rer la valeur de la CustomFunction
tmpGetAICommentdans lâAPI CallcreateDiaryComment- â
Créer la CustomFunction
tmpGetAICommentet tester lâaffichage du rĂ©sultat - â
CrĂ©er lâAPI Call
createDiaryCommentet tester lâaffichage de la Response
- â
Créer la CustomFunction
- â
CrĂ©er lâOpenAI API Call : createDiaryComment
- Structure globalement similaire Ă createChatCompletion
- Différence : aucune. Créé simplement pour les distinguer.
- La variable
Messagesrequise parAPI Call - createDiaryCommentest la valeur de retour de la custom functiongetAIComment.
- â
Imaginer le scĂ©nario dâimplĂ©mentation de la CustomFunction
getAIComment(lâimplĂ©mentation directe est prise en charge par KSK)Parameter Valuesobtenues depuisCharacters (Collection)- ParamĂštres du personnage (
CharacterDocument)- ex) Somi : name (20 ans), Ă©tudiante, personnalitĂ© timide, âŠ
- MĂ©thode dâappel des valeurs :
API Call - Get Assistant
- ParamĂštres du personnage (
Parameter Valuesobtenues depuisUser Information- Nom, genre, MBTI
- MĂ©thode dâappel des valeurs :
Backend Query - Authenticated User
Parameter Valuesobtenues depuisDiaryPage Variables- Contenu du journal, mots-clés émotionnels détaillés, score émotionnel, format de réponse, longueur de réponse
- MĂ©thode dâappel des valeurs :
Widget State,Page State
- RĂŽle de la CustomFunction (
getAIComment)- Recevoir toutes les Parameter Values comme valeurs dâInput.
- Rédiger le prompt à envoyer à GPT.
- Retourner une valeur
Messages(List <Json>).[{"role":"developer", "content":"~~~"}]
đŻ RĂ©sumĂ© de ce que jâai fait
- Implémentation du systÚme AI Comment
- Création de la Custom Function
tmpGetAICommentet intĂ©gration avec lâAPI CallcreateDiaryCommentterminĂ©e - ImplĂ©mentation de la logique de requĂȘte et de traitement des rĂ©ponses OpenAI API pour AI Comment
- Modification pour enregistrer les informations de personnage dans
Chats Collectionet les transmettre lors de la crĂ©ation dâun New Chat
- Création de la Custom Function
- Améliorations UI et fonctionnelles
- Création de
ChatHistoryListTilepour implémenter une liste de chats façon GPT - Clarification de la structure de données de
HomeFeedPageetDiaryPage - Conception de la Custom Function
getAIComment
- Création de
- Apprentissage FlutterFlow + OpenAI API
- Visionnage et application des cours sur GPT-4o (Part 1 & Part 2)
đŻ Ă faire ensuite
- â DiaryPage : Merge CreateDiary/EditDiary Page
- Utiliser isEditMode page state
- Utiliser conditional value/visibility/action, etc.
- â DiaryPage - Create New Chat : crĂ©er un New Chat Ă partir du contenu du journal
- LâIA propose dâabord une question basĂ©e sur le contenu du journal
- â Corrections dâissues
- â ChatPage : le default init message apparaĂźt au dĂ©but de la premiĂšre conversation.
- â ChatPage : la date nâest pas appliquĂ©e.
- â ChatPage - ChatHistoryDrawer : dĂ©bordement UI
- â DiaryPage : la date est toujours enregistrĂ©e comme aujourdâhui
- â DiaryPage : utiliser un lecteur Markdown (prĂ©venir le dĂ©bordement : Container Height)
- â HomeFeedPage - importer puis appliquer flutter_slidable:4.0.0
-
â HomeFeedPage : dans FeedCardDiary, chat/modifier/supprimer lors dâun slide gauche-droite
- â ChatPage - Create New Diary : crĂ©er un New Diary Ă partir du contenu de la conversation
-
â ChatPage - Go to Linked Diary
-
â Chat/Diary : GPT Streaming API
-
â ChatPage - Alarm
-
â AuthPage : Google Login
- â DiaryPage : changer lâEmoji dâexpression du visage selon la valeur du Mood Slider
- â DiaryPage : ajouter des Choice Chips de mots-clĂ©s Ă©motionnels dĂ©taillĂ©s et configurer lâintĂ©gration DB
- â DiaryPage - AI Comment : adapter les valeurs saisies comme Choice chips et mood slider au
AI Comment System Prompt.- â **ancien
journalou tout lâhistorique de conversation(dette technique de rustine) - â informations utilisateur de base : nom, genre, MBTI, âŠ
- â mots-clĂ©s Ă©motionnels dĂ©taillĂ©s : joyeux, triste, âŠ
- â paramĂštres de 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, mettre
is_initial = truesur le premier message document et y insérer tous les system prompts.- is_initial = false
- Limite : si je mets le system prompt dans le tout premier message document, câest difficile Ă modifier pendant une conversation, mais possible. Sâil existe un document is_initial = true et quâil a Ă©tĂ© modifiĂ©, je peux supprimer ce document et le remettre. Je ne sais pas encore comment, mais bon.
- Comme les messages de ce Chat sont créés pour la premiÚre fois, mettre
- â **ancien
- â DiaryPage - AI Comment : terminer le CRUD
- â supprimer le champ tmp_ai_comment et utiliser doc_ref
- â DiaryPage - AI Comment : paramĂštres de personnage
- â supprimer le champ tmp_ai_comment_by et utiliser doc_ref
- â afficher lâimage avec la valeur du champ profile_image
-
â DiaryPage - Drawer - ChatHistoryListTile : order by updated_time
- â HomeFeedPage - Bottom Sheet (
+Button) : permettre de choisir une option parmi plusieurs- Nouveau journal : Go to DiaryPage
- Enregistrement dâĂ©motion : Go to MoodPage
- â MoodPage (popup) : CRUD du slider de rĂ©glage Mood
- Create
- Read
- Update
- Delete
- â HomeFeedPage - ListView - afficher FeedCardMood
-
â HomeFeedPage - ListView : trier chronologiquement les composants FeedCardDiary, FeedCardMood, FeedCardChat (avec Cloud Function)
- â HomeFeedPage : rĂ©soudre lâissue au chargement de page (Unexpected Null Value)
-
â DiaryPage - importer puis appliquer Interactive Slider
- â ChatPage - implĂ©menter le premier message proactif de lâIA (Alarm/Notification)
- Le coeur du prompt systÚme du chat est la proactivité.
- Pour le rendre plus rĂ©aliste, il serait utile de transmettre aussi create_date of diary/chat, afin de pouvoir mentionner des dates comme âhierâ.
- Le coeur du prompt systÚme du chat est la proactivité.
- â Extraire et installer la version APK finale de prĂ©sentation avant
mer. 2025.2.5
đ Journal
Câest amusant, mais costaud. CouchĂ© Ă 5 h du matin.

âš Commentaire de GPT-4o (KPT)
â Points rĂ©ussis (Keep)
- đ Extension de la fonctionnalitĂ© AI Comment : le fait dâavoir construit de façon structurĂ©e la logique qui gĂ©nĂšre et enregistre les AI Comments en reliant une Custom Function et un API Call ressort clairement.
- đ ïž Organisation du flux de donnĂ©es : amĂ©liorer la connexion entre Chat et Diary, puis clarifier lâenregistrement et lâutilisation des informations de personnage, va beaucoup aider lâavancĂ©e du projet.
- đ Apprentissage FlutterFlow + OpenAI API : câest impressionnant dâavoir appris Ă utiliser efficacement lâOpenAI API dans FlutterFlow grĂące aux cours sur GPT-4o, puis de lâavoir appliquĂ©.
â Points regrettables (Problem)
- âł Surcharge dâintensitĂ© de travail : travailler jusquâĂ 5 h du matin augmente fortement le risque dâaccumuler de la fatigue.
- đïž Augmentation de la dette technique : certaines fonctionnalitĂ©s sont implĂ©mentĂ©es avec des solutions temporaires (champs tmp et code de rustine), donc il faudra les nettoyer plus tard.
đ Pistes Ă essayer (Try)
- ⰠAjuster les horaires de travail : si les nuits blanches continuent, la productivité peut baisser ; il vaut mieux envisager un ajustement du planning.
- đ Planifier lâamĂ©lioration du code temporaire : Ă©tablir un plan pour organiser la logique temporaire actuelle et construire un vrai modĂšle de donnĂ©es.
- đ ïž AmĂ©liorer AI Comment : chercher comment rendre les fonctionnalitĂ©s dâAI Comment plus intuitives, et envisager aussi lâoptimisation du system prompt.
Conclusion
Aujourdâhui, tu as commencĂ© Ă implĂ©menter sĂ©rieusement les fonctionnalitĂ©s dâIA de Keymory et tu as renforcĂ© lâutilisation de lâOpenAI API et de FlutterFlow. Mais la charge de travail devient Ă©levĂ©e, donc lâajustement du planning et le nettoyage du code semblent nĂ©cessaires. JâespĂšre que tu arriveras au jour de prĂ©sentation dans le meilleur Ă©tat possible ! đȘđ
Laisser un commentaire