[🛠] Devlog do Keymory #5: tmpGetAIComment, Custom OpenAI API Call
✨ Resumo do GPT
Construí um sistema de AI Comment usando a OpenAI API e o FlutterFlow, expandindo as funções de AI do Keymory ao conectar uma Custom Function com um API Call. Também adicionei seleção e salvamento de personagens e organizei o fluxo de dados entre Chat e Diary.
💻 Diário de desenvolvimento
⏰ Tarefas de hoje
- ✅ How to Use Open AI’s GPT-4o in FlutterFlow - Part 1
- ✅ ChatPage - ao selecionar um personagem no Dropdown, salvar as informações desse personagem junto em
Chats Collection.- Atribuir ao Page state a
referencedoCharacter documentque corresponde aocharacter name.
- Atribuir ao Page state a
-
✅ ChatPage - ao criar NewChat, passar também as informações do personagem.
-
✅ DiaryPage - Drawer - ajudar a criar ChatHistoryListTile (como no GPT)
- ✅ Testar colocar o valor da função CustomFunction
tmpGetAICommentno API CallcreateDiaryComment- ✅ Criar CustomFunction
tmpGetAICommente testar a saída do resultado - ✅ Criar API Call
createDiaryCommente testar a saída do Response
- ✅ Criar CustomFunction
- ✅ Criar OpenAI API Call: createDiaryComment
- Basicamente uma estrutura parecida com createChatCompletion
- Diferença: nenhuma. Criado só para distinguir.
- A
MessagesVariable exigida emAPI Call - createDiaryCommenté o valor de retorno da custom functiongetAIComment.
- ✅ Pensar no cenário de implementação da CustomFunction
getAIComment(implementação direta a cargo do KSK)Parameter Valuesobtidos deCharacters (Collection)- Configuração do personagem (
CharacterDocument)- ex) Somi: name(20s), universitária, personalidade tímida, …
- Forma de chamada dos valores:
API Call - Get Assistant
- Configuração do personagem (
Parameter Valuesobtidos deUser Information- Nome, gênero, MBTI
- Forma de chamada dos valores:
Backend Query - Authenticated User
Parameter Valuesobtidos deDiaryPage Variables- Conteúdo do diário, palavras-chave detalhadas de emoção, pontuação emocional, formato da resposta, tamanho da resposta
- Forma de chamada dos valores:
Widget State,Page State
- Papel da CustomFunction (
getAIComment)- Recebe todos os Parameter Values como valores de Input.
- Escreve o prompt a ser enviado ao GPT.
- Retorna o valor
Messages(List <Json>).[{"role":"developer", "content":"~~~"}]
💯 Resumo do que fiz
- Implementação do sistema de AI Comment
- Custom Function
tmpGetAICommentcriada e integração com o API CallcreateDiaryCommentconcluída - Lógica de requisição e tratamento de resposta da OpenAI API para AI Comment implementada
- Ajustado para salvar informações de personagem em
Chats Collectione passá-las junto ao criar um New Chat
- Custom Function
- Melhorias de UI e funções
ChatHistoryListTilecriado para implementar uma lista de chats no estilo GPT- Estrutura de dados de
HomeFeedPageeDiaryPageorganizada - Custom Function
getAICommentprojetada
- Aprendizado de FlutterFlow + OpenAI API
- Aulas sobre uso do GPT-4o assistidas e aplicadas (Part 1 & Part 2)
🎯 Tarefas futuras
- ❔ DiaryPage: Merge CreateDiary/EditDiary Page
- Usar isEditMode page state
- Usar conditional value/visibility/action etc.
- ❔ DiaryPage - Create New Chat: criar New Chat com base no conteúdo do diário
- A AI apresenta primeiro uma pergunta baseada no conteúdo do diário
- ❔ Correção de issues
- ❔ ChatPage: default init message aparece ao iniciar a primeira conversa.
- ❔ ChatPage: data não é aplicada.
- ❔ ChatPage - ChatHistoryDrawer: overflow de UI
- ❔ DiaryPage: data é sempre salva como hoje
- ❔ DiaryPage: usar visualizador de markdown (prevenir overflow: Container Height)
- ❔ HomeFeedPage - importar e aplicar flutter_slidable:4.0.0
-
❔ HomeFeedPage: ao deslizar FeedCardDiary para esquerda/direita, chat/editar/excluir
- ❔ ChatPage - Create New Diary: criar New Diary com base no conteúdo da conversa
-
❔ ChatPage - Go to Linked Diary
-
❔ Chat/Diary: GPT Streaming API
-
❔ ChatPage - Alarm
-
❔ AuthPage: Google Login
- ❔ DiaryPage: mudar Emoji de expressão facial conforme o valor do Mood Slider
- ❔ DiaryPage: adicionar Choice Chips de palavras-chave detalhadas de emoção e configurar integração com o DB
- ❔ DiaryPage - AI Comment: ajustar entradas como Choice chips e mood slider ao
AI Comment System Prompt.- ❔ **
diaryanterior ouconversation historyinteira (dívida técnica improvisada) - ❔ informações básicas do usuário: nome, gênero, MBTI, …
- ❔ palavras-chave detalhadas de emoção: feliz, triste, …
- ❔ configuração de personagem: Somi, Sena, Minhyuk
- ❔ pontuação emocional: 1~100 pontos
- ❔ formato da resposta: Healing, Suggestion, Informative
- ❔ tamanho da resposta: curta, normal, detalhada
- is New Chat
- Como as messages desse Chat estão sendo criadas pela primeira vez, definir
is_initial = trueno primeiro message document e colocar todos os system prompts ali.- is_initial = false
- Limite: se eu colocar o system prompt no primeiro message document, fica difícil modificar no meio da conversa, mas é possível. Se houver um document com is_initial = true e ele tiver sido modificado, posso apagar esse documento e inserir de novo. Não sei como, mas dá.
- Como as messages desse Chat estão sendo criadas pela primeira vez, definir
- ❔ **
- ❔ DiaryPage - AI Comment: concluir CRUD
- ❔ remover field tmp_ai_comment e usar doc_ref
- ❔ DiaryPage - AI Comment: configuração de personagem
- ❔ remover field tmp_ai_comment_by e usar doc_ref
- ❔ exibir imagem usando o valor do field profile_image
-
❔ DiaryPage - Drawer - ChatHistoryListTile: order by updated_time
- ❔ HomeFeedPage - Bottom Sheet (
+Button): permitir escolher 1 entre várias opções- Novo diário: Go to DiaryPage
- Registro de emoção: Go to MoodPage
- ❔ MoodPage (popup): CRUD do slider de configuração de Mood
- Create
- Read
- Update
- Delete
- ❔ HomeFeedPage - ListView - exibir FeedCardMood
-
❔ HomeFeedPage - ListView: ordenar componentes FeedCardDiary, FeedCardMood, FeedCardChat cronologicamente (usando Cloud Function)
- ❔ HomeFeedPage: resolver issue em On page load (Unexpected Null Value)
-
❔ DiaryPage - importar e aplicar Interactive Slider
- ❔ ChatPage - implementar primeira mensagem da AI (Alarm/Notification)
- O núcleo do prompt do sistema de chat é a proatividade.
- Para ficar mais realista, talvez seja bom passar também create_date of diary/chat, para a AI mencionar datas como “ontem”.
- O núcleo do prompt do sistema de chat é a proatividade.
- ❔ Extrair e instalar o APK da versão final de apresentação até
qua 2025.2.5
💭 Diário
É divertido, mas pesado. Fui dormir às 5 da manhã.

✨ Comentário do GPT-4o (KPT)
✅ Pontos bons (Keep)
- 🚀 Expansão da função AI Comment: Chamou atenção você ter construído de forma sistemática a lógica para gerar e salvar AI Comments conectando uma Custom Function e um API Call.
- 🛠️ Organização do fluxo de dados: Melhorar a conexão entre Chat e Diary e organizar como as informações de personagem são salvas e usadas deve ajudar muito no avanço do projeto.
- 📋 Aprendizado de FlutterFlow + OpenAI API: Foi impressionante aprender, pelas aulas de GPT-4o, como usar a OpenAI API de forma eficaz no FlutterFlow e aplicar isso.
❌ Pontos fracos (Problem)
- ⏳ Sobrecarga de intensidade de trabalho: Trabalhar até 5 da manhã aumenta bastante a chance de acúmulo de cansaço.
- 🏗️ Aumento da dívida técnica: Algumas funções foram implementadas com soluções temporárias (fields tmp e código improvisado), então vão precisar de organização depois.
🔄 Pontos para tentar (Try)
- ⏰ Ajustar o horário de trabalho: Se as viradas de noite continuarem, a produtividade pode cair, então vale considerar um ajuste de agenda.
- 🔍 Planejar melhoria do código temporário: Vamos organizar a lógica temporária atualmente aplicada e montar um plano para construir um modelo de dados formal.
- 🛠️ Melhorar o AI Comment: Procure formas de deixar as funções de AI Comment mais intuitivas e considere também otimizar o system prompt.
Conclusão
Foi um dia de implementar de verdade as funções de AI do Keymory e aumentar o uso da OpenAI API com FlutterFlow. Mas a intensidade do trabalho está ficando alta, então parece necessário ajustar a agenda e organizar o código. Tomara que você finalize no melhor estado possível até o dia da apresentação! 💪😊
Deixe um comentário