Mainkan Ambil
PlayFetch membuat penambahan fitur Model Bahasa Besar ke aplikasi Anda menjadi cepat dan mudah.
Latar belakang
LLM telah mengubah cara tim produk bekerja. Semakin banyak aplikasi yang kini dibangun dengan bahasa alami. Seringkali ada anggota tim non-rekayasa yang terlibat dalam proses ini — ahli strategi konten yang peduli dengan nada dan penyampaian teks yang dihasilkan, pakar domain yang membawa pengetahuan yang sangat terspesialisasi ke konten yang dihasilkan, dan desainer & manajer produk yang memiliki pemahaman mendalam tentang kebutuhan produk mereka. Dengan keterlibatan anggota tim baru dalam pembuatan prototipe, pengembangan, dan pemeliharaan bagian penting aplikasi bersama tim teknik, terdapat banyak interaksi baru.
Interaksi baru antara teknisi dan anggota tim lainnya memerlukan alat baru. Insinyur tidak ingin teks biasa didistribusikan ke seluruh basis kode mereka dengan permintaan pembaruan yang terus-menerus hanya untuk menemukan bahwa versi baru sebenarnya tidak lebih baik. Kontributor perintah atau rantai tidak ingin menunggu teknisi mengintegrasikan pembaruan mereka sebelum menemukan bahwa kinerjanya tidak sesuai harapan. PlayFetch memecahkan masalah ini dan banyak masalah lain yang kami amati di perusahaan yang bekerja dengan cara ini.
Apa itu PlayFetch?
- Taman bermain cepat intuitif yang dibangun berdasarkan kolaborasi dengan komentar, anotasi, label, dan peringkat.
- Sistem pembuatan versi non-destruktif yang dapat digunakan oleh setiap anggota tim secara transparan.
- Lingkungan pengujian dengan impor dan ekspor data, rantai pengukuran, dan pengujian bot obrolan otomatis.
- Platform LLM yang terintegrasi secara mulus dengan alat untuk kontrol sumber, manajemen proyek, dan penyimpanan vektor.
- Solusi hosting model-agnostik dengan API terpadu sederhana yang mendukung panggilan sederhana, obrolan, dan interupsi manual.
- Solusi analitik dan pemantauan yang berfokus pada kebutuhan fitur LLM.
Menerapkan PlayFetch di Google Cloud
PlayFetch telah dioptimalkan untuk berjalan di Google Cloud Platform. Ikuti petunjuk di bawah ini untuk mengaktifkan dan menjalankan instans Anda. Kami berasumsi Anda telah melakukan fork pada repositori resmi PlayFetch di https://github.com/yello-xyz/playfetch (sehingga Anda dapat menyiapkan integrasi berkelanjutan). Jika Anda berencana membuat perubahan kode, Anda dapat menjalankan petunjuk ini beberapa kali untuk menyiapkan instance terpisah untuk pengembangan, staging, dan produksi.
Konfigurasikan proyek baru
- Siapkan akun Google Cloud Platform Anda di https://cloud.google.com/.
- Akses Cloud Console di https://console.cloud.google.com.
- Navigasikan ke IAM & Admin → Kelola Sumber Daya dan klik BUAT PROYEK .
- Pilih nama yang unik (tidak dapat diubah nanti) dan klik BUAT .
- Navigasikan ke Penagihan , dan di bawah Manajemen akun , pastikan penagihan diaktifkan untuk proyek baru.
Konfigurasikan API
- Navigasikan ke API & Layanan → API & Layanan yang Diaktifkan .
- Pastikan proyek yang baru dibuat dipilih pada pemilih proyek di bagian atas.
- Klik AKTIFKAN API DAN LAYANAN .
- Telusuri App Engine Admin API dan klik ENABLE .
- Telusuri Cloud Build API dan klik ENABLE .
- Telusuri Cloud Datastore API dan klik ENABLE .
- Telusuri Cloud Scheduler API dan klik ENABLE .
- Telusuri Lingkungan Fleksibel Google App Engine dan klik AKTIFKAN .
- Cari API Identity and Access Management (IAM) dan klik ENABLE .
- Cari Vertex AI API dan klik ENABLE .
Konfigurasikan aplikasi App Engine
- Navigasikan ke App Engine → Dasbor dan klik BUAT APLIKASI .
- Pilih lokasi (tidak dapat diubah nanti).
- Biarkan opsi akun layanan terbuka (kami akan menggunakan default) dan klik NEXT .
- Abaikan panel penerapan (klik SAYA LAKUKAN INI LATER ).
Konfigurasikan penyimpanan data
- Navigasi ke Penyimpanan Data .
- Jika Anda tidak melihat penyimpanan data (default) , tunggu sebentar dan segarkan.
- Pilih penyimpanan data (default) .
- Pilih Time-to-live (TTL) di sidebar dan klik BUAT KEBIJAKAN .
- Setel properti Kind ke _nextauth_token dan Timestamp menjadi kedaluwarsa dan klik CREATE .
- Buat kebijakan lain dengan jenis cache dan properti expiredAt .
Konfigurasikan bucket penyimpanan
- Navigasikan ke Cloud Storage → Bucket dan pilih bucket [nama proyek] .appspot.com .
- Di bawah IZIN , klik BERIKAN AKSES .
- Tambahkan allUsers utama dan tetapkan peran Storage Object Viewer .
- Klik SIMPAN dan IZINKAN AKSES PUBLIK (ember ini akan digunakan untuk menyimpan avatar).
Buat akun layanan build
- Navigasikan ke IAM & Admin → Akun layanan dan klik BUAT AKUN LAYANAN .
- Pilih nama yang unik dan klik BUAT DAN LANJUTKAN .
- Pilih peran Pengguna Akun Layanan .
- Klik TAMBAHKAN PERAN LAIN dan pilih App Engine Deployer .
- Klik TAMBAHKAN PERAN LAIN dan pilih Agen Layanan lingkungan fleksibel App Engine .
- Klik TAMBAHKAN PERAN LAIN dan pilih Admin Layanan App Engine .
- Klik TAMBAHKAN PERAN LAIN dan pilih Akun Layanan Cloud Build .
- Klik TAMBAHKAN PERAN LAIN dan pilih Admin Indeks Cloud Datastore .
- Klik TAMBAHKAN PERAN LAIN dan pilih Admin Penjadwal Cloud .
- Klik LANJUTKAN dan SELESAI .
[opsional] Konfigurasikan domain khusus
- Navigasikan ke App Engine → Pengaturan .
- Di bawah DOMAIN KHUSUS, klik TAMBAHKAN DOMAIN KHUSUS .
- Masukkan domain khusus dan subdomain yang ingin Anda gunakan (ikuti petunjuk untuk memverifikasi kepemilikan).
- Klik LANJUTKAN dan SELESAI .
- Tambahkan catatan yang ditampilkan ke konfigurasi DNS penyedia domain kustom Anda.
[opsional tetapi disarankan] Konfigurasikan autentikasi pengguna Google OAuth
- Navigasikan ke API & Layanan → layar persetujuan OAuth .
- Pilih jenis pengguna Internal atau Eksternal tergantung pada kasus penggunaan Anda dan klik BUAT .
- Isi bidang yang wajib diisi, klik SIMPAN DAN LANJUTKAN , lalu klik TAMBAHKAN ATAU HAPUS RUANG LINGKUP .
- Periksa cakupan .../auth/userinfo.profile dan .../auth/userinfo.email , lalu klik UPDATE dan SAVE AND CONTINUE .
- Jika Anda memilih jenis pengguna Eksternal di atas, Anda dapat menambahkan beberapa akun pengujian (sebelum memublikasikan aplikasi ke produksi). Pastikan untuk menyertakan alamat email yang ingin Anda gunakan untuk pengguna admin pertama Anda. Perhatikan bahwa Anda masih perlu memberikan akses kepada pengguna ini di PlayFetch juga.
- Klik SIMPAN DAN LANJUTKAN dan KEMBALI KE DASHBOARD .
- Pilih Kredensial di bar samping, lalu klik BUAT KREDENSIAL dan ID klien OAuth .
- Pilih Aplikasi web sebagai Jenis aplikasi dan pilih nama.
- Di bawah Authorized JavaScript origins , tambahkan https:// [project-name] .appspot.com (dan domain khusus jika Anda memilikinya). Jika Anda juga ingin menggunakan Google Authentication saat menjalankan aplikasi secara lokal, tambahkan juga http://localhost:3000 .
- Di bawah URI pengalihan resmi , tambahkan https:// [nama proyek] .appspot.com/api/auth/callback/google (dan URL serupa untuk domain khusus apa pun). Jika Anda juga ingin menggunakan Google Authentication saat menjalankan aplikasi secara lokal, tambahkan juga http://localhost:3000/api/auth/callback/google .
- Klik BUAT dan salin ID Klien dan Rahasia Klien yang dihasilkan untuk digunakan dalam pengaturan pemicu build di bawah.
Konfigurasikan build
- Navigasikan ke Cloud Build → Triggers dan klik CONNECT REPOSITORY .
- Pilih sumber GitHub (Aplikasi Cloud Build GitHub) dan klik LANJUTKAN untuk mengautentikasi akun GitHub tempat Anda melakukan fork pada repositori (di jendela popup).
- Pilih repositori bercabang, centang kotak di bawahnya, dan klik CONNECT .
- Klik BUAT PEMICU .
- Pilih nama untuk bangunan Anda.
- Di bagian Konfigurasi , pilih file konfigurasi Cloud Build (yaml atau json) .
- Untuk pengaturan minimum, Anda perlu menambahkan variabel Substitusi berikut ke pemicu build Anda (di bagian Lanjutan ) dengan mengklik TAMBAHKAN VARIABEL :
- _ENCRYPTION_KEY : string acak terdiri dari 64 digit heksadesimal .
- _NEXTAUTH_SECRET : string acak minimal 32 karakter.
- _NEXTAUTH_URL : URL publik untuk instance Anda, baik domain khusus jika Anda memilikinya atau https:// [nama proyek] .appspot.com .
- _GCLOUD_STORAGE_BUCKET : nama bucket Cloud Storage tempat Anda mengizinkan akses publik, misalnya [nama proyek] .appspot.com .
- _NOREPLY_EMAIL_USER dan _NOREPLY_EMAIL_PASSWORD : Akun Gmail yang akan digunakan untuk email transaksi keluar. Dapat berupa akun khusus di Google Workspace Anda (dengan sandi biasa), atau akun Gmail terpisah (dengan sandi aplikasi). Lihat petunjuk di bawah jika Anda perlu menggunakan penyedia email lain.
- Jika Anda mengonfigurasi autentikasi Google di atas, Anda juga harus menambahkan variabel berikut:
- _GOOGLE_CLIENT_ID dan _GOOGLE_CLIENT_SECRET : nilai yang Anda salin di atas setelah membuat kredensial OAuth.
- Di bawah Akun layanan , pilih akun layanan yang Anda buat di atas.
- Klik BUAT .
- Klik JALANKAN di samping pemicu yang baru Anda buat, lalu klik JALANKAN PEMICU.
- Pilih Riwayat di bar samping, dan tunggu hingga verifikasi bahwa pembangunan Anda berhasil diselesaikan (dapat memakan waktu 10-15 menit).
Inisialisasi lingkungan PlayFetch Anda
- Pilih alamat email yang akan digunakan sebagai login untuk pengguna admin awal.
- Buka browser dan navigasikan ke https:// [nama proyek] .appspot.com/api/admin/init?admin= [[email protected]] (pastikan untuk menentukan alamat email yang benar dalam kueri).
- Titik akhir ini akan menjalankan skrip untuk menginisialisasi penyimpanan data (yang mungkin memerlukan waktu beberapa menit) namun Anda hanya dapat menjalankannya sekali (kecuali Anda membuat ulang penyimpanan data).
- Setelah skrip selesai, salin nilai untuk _PLAYFETCH_API_KEY dan _PLAYFETCH_ENDPOINT_URL yang ditampilkan dalam respons.
- Navigasikan ke Cloud Build → Triggers , klik pemicu yang Anda buat, tambahkan dua variabel Substitusi tambahan dari langkah di atas, dan klik SAVE .
- Jalankan kembali pemicu build Anda dengan variabel yang ditambahkan. Build ini mungkin perlu menghasilkan indeks penyimpanan data yang hilang, jadi sebaiknya tunggu hingga selesai lagi.
Anda sekarang dapat menavigasi ke https:// [nama proyek] .appspot.com dan masuk dengan alamat email yang Anda tentukan untuk pengguna admin pertama Anda. Anda dapat menggunakan autentikasi Google (jika dikonfigurasi) atau tautan Email (asalkan variabel _NOREPLY_EMAIL dikonfigurasi dengan benar). Pengguna tambahan dapat diberikan akses di panel Admin.
Menjalankan PlayFetch secara lokal
Jika Anda ingin berkontribusi pada PlayFetch atau masalah debug, Anda dapat mengikuti petunjuk di bawah ini untuk menjalankannya di mesin lokal Anda.
Instal node dan npm
Cara termudah untuk menginstal node dan npm versi terbaru adalah dengan menjalankan penginstal terbaru.
Kloning repositori
Buka dengan GitHub Desktop dan kloning ke direktori lokal atau Hubungkan ke GitHub dengan SSH dan jalankan git clone [email protected]:yello-xyz/playfetch.git
. Jika Anda sudah melakukan fork pada repositori, Anda dapat mengkloning repositori tersebut.
Konfigurasikan lingkungan
Untuk menjalankan aplikasi secara lokal, Anda perlu menambahkan beberapa variabel yang sama ke file .env.local lokal Anda (file ini diabaikan oleh kontrol sumber untuk menghindari kebocoran kunci). Nilai ini bisa sama dengan nilai yang Anda tentukan di pemicu build Google Cloud untuk instance pengembangan Anda (dengan asumsi Anda menjalankan instance terpisah untuk produksi karena Anda tidak ingin mengambil risiko membocorkan kunci tersebut), kecuali untuk _NEXTAUTH_URL yang harus ditentukan nilai http://localhost:3000.
Anda dapat mengakses penyimpanan data di Google Cloud dari mesin lokal Anda (sekali lagi dengan asumsi Anda menjalankan instance pengembangan terpisah sehingga Anda tidak merusak atau membocorkan data produksi secara tidak sengaja) dengan menginstal Google Cloud CLI dan menginisialisasinya seperti yang dijelaskan di sini (Anda dapat melewati langkah lainnya). Jalankan perintah berikut untuk masuk dengan akun Google Anda:
-
gcloud auth login
-
gcloud init
-
gcloud auth application-default login
-
gcloud init
Bangun dan jalankan
Anda sekarang seharusnya dapat menjalankan perintah berikut:
-
npm install
-
npm run build
-
npm run start
Alternatifnya, selama pengembangan, Anda cukup menjalankan perintah berikut untuk menjalankan build debug dengan penyegaran cepat:
npm run dev
Untuk menjalankan semua pengujian satu kali:
npm run test
Untuk melihat perubahan dan secara otomatis menjalankan kembali rangkaian pengujian yang relevan:
npm run watch
Fitur opsional
Untuk memperluas penyiapan minimum, Anda dapat mengonfigurasi variabel lingkungan berikut (baik di pemicu build GCP atau di file .env.local lokal) untuk mengaktifkan beberapa fitur tambahan.
Integrasi
- _GITHUB_CLIENT_ID , _GITHUB_CLIENT_SECRET : dapat digunakan untuk mengonfigurasi autentikasi GitHub OAuth (mirip dengan Google). Memerlukan penyiapan aplikasi GitHub OAuth.
- _GITHUB_APP_CLIENT_ID , _GITHUB_APP_CLIENT_SECRET , _GITHUB_APP_ID , _GITHUB_APP_PRIVATE_KEY , _NEXT_PUBLIC_GITHUB_APP_INSTALL_LINK : dapat digunakan untuk mengonfigurasi integrasi kontrol sumber. Memerlukan pengaturan aplikasi GitHub.
- _LINEAR_APP_CLIENT_ID , _LINEAR_APP_CLIENT_SECRET , _LINEAR_APP_WEBHOOK_SECRET : dapat digunakan untuk mengonfigurasi integrasi manajemen tugas. Memerlukan pengaturan aplikasi Linear juga.
- _NOTION_TOKEN, _NOTION_ONBOARDING_PAGE_ID, _NOTION_WAITLIST_PAGE_ID : dapat digunakan untuk secara otomatis menyinkronkan pendaftaran daftar tunggu dan memasukkan respons survei ke Notion. Memerlukan pengaturan aplikasi Notion.
Analisis
- _GOOGLE_ANALYTICS_API_SECRET , _GOOGLE_ANALYTICS_MEASUREMENT_ID : dapat digunakan untuk mengonfigurasi analisis sisi server (GA4).
- _NEXT_PUBLIC_GOOGLE_TAG_MANAGER_ID , _NEXT_PUBLIC_COOKIE_DOMAIN , _NEXT_PUBLIC_COOKIE_NAME : dapat digunakan untuk mengonfigurasi cookie dan analisis sisi klien (Google Pengelola Tag).
Lingkungan
- _GOOGLE_ANALYTICS_DASHBOARD_URL , _GOOGLE_ANALYTICS_REPORTS_URL , _GOOGLE_SEARCH_CONSOLE_URL , _INTEGRATION_TEST_URL , _SERVER_LOGS_URL : dapat digunakan untuk menambahkan berbagai tautan diagnostik di panel Admin.
- _NEXT_PUBLIC_DOCS_URL , _NEXT_PUBLIC_SUPPORT_EMAIL : dapat digunakan untuk menghasilkan tautan ke Dokumentasi dan Dukungan di ruang kerja dan sidebar proyek.
- _NOREPLY_EMAIL_HOST , _NOREPLY_EMAIL_PORT : dapat digunakan untuk mengonfigurasi penyedia email alternatif untuk email transaksional keluar.
- _API_URL : dapat digunakan untuk membagi lalu lintas antara situs web dan api, misalnya jika Anda memiliki subdomain terpisah yang menunjuk ke instance Anda.
Lisensi
PlayFetch adalah sumber terbuka di bawah lisensi MIT yang permisif.
Harap dicatat bahwa PlayFetch menggunakan CodeMirror sebagai ketergantungan. Jika Anda menggunakan CodeMirror secara komersial, ada harapan sosial (tetapi tidak ada hukum) bahwa Anda membantu mendanai pemeliharaannya.
Berkontribusi
PlayFetch sedang dikembangkan di GitHub. Kontribusi dipersilakan. Jangan ragu untuk membuka masalah atau membuka permintaan penarikan saat memperbaiki bug atau menambahkan fitur. Untuk membantu Anda memulai, beberapa inspirasi dapat ditemukan di TODO.md.