2025.01.31 (Jum)
2026.05.25 (Sen) diperbarui

โœจ Ringkasan GPT ใ€€

Membangun sistem AI Comment dengan OpenAI API dan FlutterFlow, lalu memperluas fitur AI Keymory dengan menghubungkan Custom Function dan API Call. Fitur pemilihan serta penyimpanan karakter juga ditambahkan, sambil merapikan alur data antara Chat dan Diary.

๐Ÿ’ป Log Pengembangan

โฐ Yang Dikerjakan Hari Ini

  • โœ… 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 - saat memilih karakter lewat Dropdown, simpan juga informasi karakter tersebut ke Chats Collection.
    • Tetapkan reference dari Character document yang cocok dengan character name ke Page state.
  • โœ… ChatPage - saat membuat NewChat, ikutkan juga informasi karakter.

  • โœ… Membantu membuat DiaryPage - Drawer - ChatHistoryListTile (seperti GPT)

  • โœ… Mencoba memasukkan nilai fungsi CustomFunction tmpGetAIComment ke API Call createDiaryComment
    • โœ… Membuat CustomFunction tmpGetAIComment dan menguji output hasilnya
    • โœ… Membuat API Call createDiaryComment dan menguji output nilai Response
  • โœ… Membuat OpenAI API Call: createDiaryComment
    • Pada dasarnya strukturnya mirip dengan createChatCompletion
    • Perbedaan: tidak ada. Dibuat hanya untuk membedakan.
    • Variable Messages yang dibutuhkan oleh API Call - createDiaryComment adalah nilai return dari custom function getAIComment.
  • โœ… Memikirkan skenario implementasi CustomFunction getAIComment (implementasi langsung ditangani KSK)
    • Parameter Values yang didapat dari Characters (Collection)
      • Pengaturan karakter (Character Document)
        • contoh) Somi: name (20-an), mahasiswa, kepribadian pemalu, โ€ฆ
      • Cara memanggil nilai: API Call - Get Assistant
    • Parameter Values yang didapat dari User Information
      • Nama, gender, MBTI
      • Cara memanggil nilai: Backend Query - Authenticated User
    • Parameter Values yang didapat dari DiaryPage Variables
      • Isi diary, kata kunci emosi detail, skor emosi, format jawaban, panjang jawaban
      • Cara memanggil nilai: Widget State, Page State
    • Peran CustomFunction (getAIComment)
      • Menerima semua Parameter Values sebagai input.
      • Menulis prompt yang akan dikirim ke GPT.
      • Mengembalikan nilai Messages (List <Json>).
        • [{"role":"developer", "content":"~~~"}]

๐Ÿ’ฏ Ringkasan yang Sudah Dikerjakan

  • Implementasi sistem AI Comment
    • Membuat Custom Function tmpGetAIComment dan menyelesaikan integrasi dengan API Call createDiaryComment
    • Mengimplementasikan logika request dan response OpenAI API untuk AI Comment
    • Mengubah Chat agar informasi karakter disimpan di Chats Collection dan ikut dikirim saat membuat New Chat
  • Peningkatan UI dan fitur
    • Membuat ChatHistoryListTile untuk menerapkan daftar chat bergaya GPT
    • Merapikan struktur data HomeFeedPage dan DiaryPage
    • Merancang Custom Function getAIComment
  • Belajar FlutterFlow + OpenAI API
    • Menonton dan menerapkan materi penggunaan GPT-4o (Part 1 & Part 2)

๐ŸŽฏ Rencana Berikutnya

  • โ” DiaryPage: Merge CreateDiary/EditDiary Page
    • Gunakan isEditMode page state
    • Gunakan conditional value/visibility/action, dan sebagainya
  • โ” DiaryPage - Create New Chat: membuat New Chat berdasarkan isi diary
    • AI lebih dulu memberikan pertanyaan berdasarkan isi diary
  • โ” Perbaikan issue
    • โ” ChatPage: default init message muncul saat memulai percakapan pertama.
    • โ” ChatPage: tanggal belum diterapkan.
    • โ” ChatPage - ChatHistoryDrawer: UI overflow
    • โ” DiaryPage: tanggal selalu tersimpan sebagai hari ini
    • โ” DiaryPage: gunakan markdown viewer (mencegah overflow: Container Height)
  • โ” HomeFeedPage - import dan terapkan flutter_slidable:4.0.0
  • โ” HomeFeedPage: saat slide kiri/kanan dari FeedCardDiary, tampilkan chat/edit/delete

  • โ” ChatPage - Create New Diary: membuat New Diary berdasarkan isi percakapan
  • โ” ChatPage - Go to Linked Diary

  • โ” Chat/Diary: GPT Streaming API

  • โ” ChatPage - Alarm

  • โ” AuthPage: Google Login

  • โ” DiaryPage: ubah Emoji ekspresi wajah sesuai nilai Mood Slider
  • โ” DiaryPage: tambahkan Choice Chips untuk kata kunci emosi detail dan atur integrasi DB
  • โ” DiaryPage - AI Comment: sesuaikan input seperti Choice chips dan mood slider agar cocok dengan AI Comment System Prompt.
    • โ” **diary sebelumnya atau seluruh conversation history (technical debt tambalan)
    • โ” informasi dasar pengguna: nama, gender, MBTI, โ€ฆ
    • โ” kata kunci emosi detail: senang, sedih, โ€ฆ
    • โ” pengaturan karakter: Somi, Sena, Minhyuk
    • โ” skor emosi: 1~100 poin
    • โ” format jawaban: Healing, Suggestion, Informative
    • โ” panjang jawaban: pendek, normal, detail
    • is New Chat
      • Karena messages untuk Chat ini dibuat pertama kali, berikan nilai is_initial = true pada message document pertama dan masukkan semua system prompt.
        • is_initial = false
        • Batasan: kalau system prompt dimasukkan ke message document paling awal, memang sulit diubah di tengah percakapan, tetapi masih mungkin. Kalau ada document dengan is_initial = true dan isinya diubah, document itu bisa dihapus lalu dimasukkan lagi. Caranya belum tahu, tapi bisa saja.
  • โ” DiaryPage - AI Comment: selesaikan CRUD
    • โ” hapus field tmp_ai_comment dan gunakan doc_ref
  • โ” DiaryPage - AI Comment: pengaturan karakter
    • โ” hapus field tmp_ai_comment_by dan gunakan doc_ref
    • โ” tampilkan gambar memakai nilai field profile_image
  • โ” DiaryPage - Drawer - ChatHistoryListTile: order by updated_time

  • โ” HomeFeedPage - Bottom Sheet (+ Button): buat agar bisa memilih 1 dari beberapa opsi
    • Diary baru: Go to DiaryPage
    • Catatan emosi: Go to MoodPage
  • โ” MoodPage (popup): CRUD slider pengaturan Mood
    • Create
    • Read
    • Update
    • Delete
  • โ” HomeFeedPage - ListView - tampilkan FeedCardMood
  • โ” HomeFeedPage - ListView: urutkan komponen FeedCardDiary, FeedCardMood, FeedCardChat secara kronologis (menggunakan Cloud Function)

  • โ” HomeFeedPage: selesaikan issue saat on page load (Unexpected Null Value)
  • โ” DiaryPage - import dan terapkan Interactive Slider

  • โ” ChatPage - implementasi pesan pertama dari AI (Alarm/Notification)
    • Inti dari chat system prompt adalah sifat proaktif.
      • Agar terasa lebih nyata, mungkin bagus juga mengirim create_date of diary/chat, supaya AI bisa menyebut tanggal seperti โ€œkemarin.โ€
  • โ” Ekstrak dan instal APK versi final untuk presentasi sampai Rab 2025.2.5

๐Ÿ’ญ Diary

Minhyuk

Seru, tapi berat. Tidur jam 5 pagi.

keymory-1.png

โœจ Komentar GPT-4o (KPT)

GPT-4o

โœ… Yang Berjalan Baik (Keep)

  • ๐Ÿš€ Perluasan fitur AI Comment: Menonjol karena kamu membangun logika pembuatan dan penyimpanan AI Comment secara sistematis dengan menghubungkan Custom Function dan API Call.
  • ๐Ÿ› ๏ธ Perapian alur data: Memperbaiki hubungan antara Chat dan Diary serta merapikan cara informasi karakter disimpan dan digunakan akan sangat membantu kelanjutan proyek.
  • ๐Ÿ“‹ Belajar FlutterFlow + OpenAI API: Mengesankan bahwa kamu mempelajari cara memakai OpenAI API secara efektif di FlutterFlow lewat materi GPT-4o, lalu langsung menerapkannya.

โŒ Yang Kurang (Problem)

  • โณ Intensitas kerja berlebihan: Bekerja sampai jam 5 pagi meningkatkan kemungkinan fatigue menumpuk.
  • ๐Ÿ—๏ธ Technical debt bertambah: Sebagian fitur diimplementasikan dengan solusi sementara (field tmp dan kode tambalan), jadi nanti perlu dirapikan.

๐Ÿ”„ Yang Bisa Dicoba (Try)

  • โฐ Atur jam kerja: Kalau begadang terus berlanjut, produktivitas bisa turun, jadi pertimbangkan penyesuaian jadwal.
  • ๐Ÿ” Rencana perbaikan kode sementara: Buat rencana untuk merapikan logika sementara yang sekarang diterapkan dan membangun data model yang resmi.
  • ๐Ÿ› ๏ธ Perbaiki AI Comment: Cari cara agar fitur AI Comment lebih intuitif, dan pertimbangkan juga optimasi system prompt.

Kesimpulan
Hari ini adalah hari ketika fitur AI Keymory mulai diimplementasikan secara serius, sekaligus pemanfaatan OpenAI API dan FlutterFlow meningkat. Namun intensitas kerja makin tinggi, jadi penyesuaian jadwal dan perapian kode tampaknya perlu. Semoga bisa menyelesaikannya dalam kondisi terbaik sampai hari presentasi! ๐Ÿ’ช๐Ÿ˜Š

Tinggalkan komentar