2025.01.31 (Sex)
2026.05.25 (Seg) atualizado

✨ 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
  • How to Use Open AI’s GPT-4o in FlutterFlow - Part 2

  • ✅ ChatPage - ao selecionar um personagem no Dropdown, salvar as informações desse personagem junto em Chats Collection.
    • Atribuir ao Page state a reference do Character document que corresponde ao character name.
  • ✅ 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 tmpGetAIComment no API Call createDiaryComment
    • ✅ Criar CustomFunction tmpGetAIComment e testar a saída do resultado
    • ✅ Criar API Call createDiaryComment e testar a saída do Response
  • ✅ Criar OpenAI API Call: createDiaryComment
    • Basicamente uma estrutura parecida com createChatCompletion
    • Diferença: nenhuma. Criado só para distinguir.
    • A Messages Variable exigida em API Call - createDiaryComment é o valor de retorno da custom function getAIComment.
  • ✅ Pensar no cenário de implementação da CustomFunction getAIComment (implementação direta a cargo do KSK)
    • Parameter Values obtidos de Characters (Collection)
      • Configuração do personagem (Character Document)
        • ex) Somi: name(20s), universitária, personalidade tímida, …
      • Forma de chamada dos valores: API Call - Get Assistant
    • Parameter Values obtidos de User Information
      • Nome, gênero, MBTI
      • Forma de chamada dos valores: Backend Query - Authenticated User
    • Parameter Values obtidos de DiaryPage 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 tmpGetAIComment criada e integração com o API Call createDiaryComment concluí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 Collection e passá-las junto ao criar um New Chat
  • Melhorias de UI e funções
    • ChatHistoryListTile criado para implementar uma lista de chats no estilo GPT
    • Estrutura de dados de HomeFeedPage e DiaryPage organizada
    • Custom Function getAIComment projetada
  • 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.
    • ❔ **diary anterior ou conversation history inteira (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 = true no 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á.
  • ❔ 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”.
  • ❔ Extrair e instalar o APK da versão final de apresentação até qua 2025.2.5

💭 Diário

Minhyuk

É divertido, mas pesado. Fui dormir às 5 da manhã.

keymory-1.png

✨ Comentário do GPT-4o (KPT)

GPT-4o

✅ 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