[๐ ] Log Pengembangan Keymory #5: tmpGetAIComment, Custom OpenAI API Call
โจ 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
- โ
ChatPage - saat memilih karakter lewat Dropdown, simpan juga informasi karakter tersebut ke
Chats Collection.- Tetapkan
referencedariCharacter documentyang cocok dengancharacter nameke Page state.
- Tetapkan
-
โ ChatPage - saat membuat NewChat, ikutkan juga informasi karakter.
-
โ Membantu membuat DiaryPage - Drawer - ChatHistoryListTile (seperti GPT)
- โ
Mencoba memasukkan nilai fungsi CustomFunction
tmpGetAICommentke API CallcreateDiaryComment- โ
Membuat CustomFunction
tmpGetAICommentdan menguji output hasilnya - โ
Membuat API Call
createDiaryCommentdan menguji output nilai Response
- โ
Membuat CustomFunction
- โ
Membuat OpenAI API Call: createDiaryComment
- Pada dasarnya strukturnya mirip dengan createChatCompletion
- Perbedaan: tidak ada. Dibuat hanya untuk membedakan.
- Variable
Messagesyang dibutuhkan olehAPI Call - createDiaryCommentadalah nilai return dari custom functiongetAIComment.
- โ
Memikirkan skenario implementasi CustomFunction
getAIComment(implementasi langsung ditangani KSK)Parameter Valuesyang didapat dariCharacters (Collection)- Pengaturan karakter (
CharacterDocument)- contoh) Somi: name (20-an), mahasiswa, kepribadian pemalu, โฆ
- Cara memanggil nilai:
API Call - Get Assistant
- Pengaturan karakter (
Parameter Valuesyang didapat dariUser Information- Nama, gender, MBTI
- Cara memanggil nilai:
Backend Query - Authenticated User
Parameter Valuesyang didapat dariDiaryPage 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
tmpGetAICommentdan menyelesaikan integrasi dengan API CallcreateDiaryComment - Mengimplementasikan logika request dan response OpenAI API untuk AI Comment
- Mengubah Chat agar informasi karakter disimpan di
Chats Collectiondan ikut dikirim saat membuat New Chat
- Membuat Custom Function
- Peningkatan UI dan fitur
- Membuat
ChatHistoryListTileuntuk menerapkan daftar chat bergaya GPT - Merapikan struktur data
HomeFeedPagedanDiaryPage - Merancang Custom Function
getAIComment
- Membuat
- 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.- โ **
diarysebelumnya atau seluruhconversation 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 = truepada 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.
- Karena messages untuk Chat ini dibuat pertama kali, berikan nilai
- โ **
- โ 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.โ
- Inti dari chat system prompt adalah sifat proaktif.
- โ Ekstrak dan instal APK versi final untuk presentasi sampai
Rab 2025.2.5
๐ญ Diary
Seru, tapi berat. Tidur jam 5 pagi.

โจ Komentar GPT-4o (KPT)
โ 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