Genkit Firebase: Solusi Tepat untuk Memulai Proyek Machine Learning Anda

Aditya Soedira
Firebase Indonesia
Published in
6 min readMay 15, 2024

Pada Google I/O 2024, Google mengumumkan banyak sekali perubahan dan improvisasinya pada model AI mereka, Gemini. Yang menjadi poin utama dari acara tersebut ialah, mereka mengumumkan Gemini Advanced, Nano, Live dan Flash.

Selain itu, Google juga mengumumkan penambahan fitur-fitur yang dapat mengintegrasikan Gemini dalam produk-produk lainnya. Baik itu Google Workspace, Android bahkan Firebase sekarang bisa menggunakan Gemini untuk mempermudah kegiatan kita sehari-hari. Untuk Firebase terutama, Google mengumumkan Firebase Genkit.

Apa itu Firebase Genkit?

Firebase Genkit

Firebase Genkit adalah framework open-source yang baru saja diluncurkan oleh Google pada Google I/O 2024. Ini dirancang untuk membantu developer dengan mudah mengintegrasikan fitur-fitur AI ke dalam aplikasi mereka yang sudah ada maupun yang baru.

Berikut adalah beberapa poin utama mengenai Firebase Genkit:

Fokus pada Pengembang: Didesain untuk developer JavaScript/TypeScript, Genkit menawarkan pengalaman pengembangan lokal yang kaya dan berpusat pada AI, sehingga pembuatan dan debugging beban kerja AI Anda menjadi lebih mudah.

Siap Produksi: Setelah selesai pengembangan, Anda dapat menggunakan Genkit untuk menerapkan solusi Anda ke Firebase atau Google Cloud, serta memantau aplikasi Anda untuk memastikannya siap untuk produksi.

Mendukung Berbagai Model: Genkit tidak terbatas pada Gemini saja. Faktanya, Genkit menyediakan format umum untuk konten yang mendukung kombinasi teks, data, dan media lainnya. Ini memungkinkan Anda menggunakan Genkit untuk model yang melakukan tugas generatif apa pun (seperti pembuatan gambar), tidak hanya LLM (large language model).

Integrasi: Genkit dirancang untuk bekerja dengan lancar dengan model AI Google yang ada, seperti Gemini dan Gemma. Ini berarti Anda dapat memanfaatkan fungsionalitas bawaan yang kuat tanpa perlu memulai semuanya dari awal.

Keamanan: Firebase Genkit dilengkapi dengan penanganan otorisasi dan keamanan, sehingga Anda dapat yakin bahwa data dan model Anda terlindungi.

Singkatnya, Firebase Genkit bertujuan untuk mempermudah dan mempercepat developer dalam mengintegrasikan kemampuan AI yang canggih ke dalam aplikasi mereka.

Kamu dapat melihat dokumentasinya pada halaman dibawah ini:

Mari kita coba lihat cara menggunakannya dalam Node.js

Pertama, pastikan bahwa kamu memiliki Node.js dengan versi 20 atau lebih tinggi. Kamu bisa memastikannya dengan menggunakan command berikut:

node --version

Jika sudah, mari kita buat folder baru untuk mencoba Genkit. Mari kita namakan test-genkit.

Kemudian mari kita buat project Nodejs baru pada folder tersebut

npm init -y

Lalu kita tambahkan project Genkit dengan command berikut

genkit init

Kemudian kamu akan diberikan pilihan dua kali. Pertama, kamu akan diminta untuk memilih opsi deployement. Saat ini, ada empat pilihan yaitu Firebase, Google Cloud, Node.js dan Next.js. Untuk saat ini, mari kita coba pada Node.js dulu.

Pada pilihan kedua, kamu akan diminta untuk memilih modelmu. Saat ini kamu bisa memilih Google AI (Gemini), Google Cloud Vertex AI, Ollama atau bahkan tidak memasukkan model sama sekali jika kamu ingin menambahkan modelmu sendiri nanti. Untuk sekarang, mari kita pilih menggunakan Google AI terlebih dahulu.

Jika sudah selesai proses instalasi, kamu bisa menambahkan Google API Key untuk Gemini API yang bisa kamu dapatkan di website Google AI Studio.

Kamu bisa mendapatkan API Key tersebut dengan klik Get API Key yang ada pada pojok kiri atas AI Studio.

Google AI Studio

Jika sudah, copy GOOGLE_API_KEY yang diberikan. Jangan sebarluaskan token ini dan simpan sebaik-baiknya di tempat yang aman agar tidak hilang. Lalu kamu bisa menambahkan token tersebut ke projectmu dengan command berikut.

export GOOGLE_API_KEY=(masukkan tokenmu disini tanpa kurung)

Jika sudah, kamu akan melihat bahwa akan ada kode berikut pada file index.ts.

import { generate } from '@genkit-ai/ai';
import { configureGenkit } from '@genkit-ai/core';
import { defineFlow, startFlowsServer } from '@genkit-ai/flow';
import { geminiPro } from '@genkit-ai/googleai';
import * as z from 'zod';
import { googleAI } from '@genkit-ai/googleai';

configureGenkit({
plugins: [
googleAI(),
],
logLevel: 'debug',
enableTracingAndMetrics: true,
});

export const menuSuggestionFlow = defineFlow(
{
name: 'menuSuggestionFlow',
inputSchema: z.string(),
outputSchema: z.string(),
},
async (subject) => {
const llmResponse = await generate({
prompt: `Suggest an item for the menu of a ${subject} themed restaurant`,
model: geminiPro,
config: {
temperature: 1,
},
});

return llmResponse.text();
}
);

startFlowsServer();

Dalam kode tersebut, kita mendapatkan satu flow secara default untuk menjadi contoh. Flow mengacu pada sebuah fungsi dengan karakteristik dan kemampuan tambahan yang dirancang untuk memfasilitasi pengembangan dan penggunaan fitur AI. Dalam contoh ini, flow menuSuggestionFlow berfungsi untuk menjelaskan menu yang bisa ditambahkan dalam restoran yang memiliki tema sesuai dengan input.

Sebagai contoh, mari kita jalankan command berikut untuk mencoba flow tersebut. Mari kita tanyakan menu apa saja yang kira-kira akan ada di restoran bertema “Pasta”.

genkit flow:run menuSuggestionFlow "\"Pasta\"" -s

Kemudian kamu akan mendapatkan output dalam format json seperti dibawah ini

Output[/dev-run-action-wrapper/menuSuggestionFlow/menuSuggestionFlow, googleai/gemini-pro]  {
model: 'googleai/gemini-pro',
path: '/dev-run-action-wrapper/menuSuggestionFlow/menuSuggestionFlow',
content: '**Lasagna Bolognese Classico**\n' +
'\n' +
'**Flavorful Layers:** Delicate lasagna sheets alternate with rich meat sauce, tender béchamel, and melted mozzarella cheese.\n' +
'\n' +
'**Authentic Sauce:** A classic Bolognese sauce made with slow-cooked ground beef, tomatoes, onions, carrots, celery, and aromatic herbs.\n' +
'\n' +
'**Creamy Indulgence:** Velvety béchamel sauce adds a smooth and creamy balance to the earthy flavors of the Bolognese.\n' +
'\n' +
'**Crispy Edges:** Golden-brown edges provide a delightful textural contrast to the moist filling.\n' +
'\n' +
'**Generous Portion:** Ample servings ensure a satisfying and indulgent dining experience.\n' +
'\n' +
'**Presentation:** Served in a traditional cazuela dish, garnished with fresh basil and grated Parmesan for a rustic yet elegant touch.',
partIndex: 0,
totalParts: 1,
candidateIndex: 0,
totalCandidates: 1,
messageIndex: 0,
finishReason: 'stop'
}

Tapi mari kita coba membuat flow sendiri. Mari kita coba apakah flow bisa digunakan layaknya menulis prompt seperti pada Gemini yang biasa kita gunakan. Mari kita buat flow baru bernama anythingGoesFlow. Kita akan menggunakan format yang sama, namun perbedaannya adalah pada bagian prompt kita hanya akan memasukkan subject saja, yakni hanyalah input dari pengguna saja.

export const anythingGoesFlow = defineFlow(
{
name: 'anythingGoesFlow',
inputSchema: z.string(),
outputSchema: z.string(),
},
async (subject1) => {
const llmResponse = await generate({
prompt: `${subject1}`,
model: geminiPro,
config: {
temperature: 1,
},
});

return llmResponse.text();
}
);

Jika sudah, jangan lupa save filemu dan build ulang projectnya. Jika sudah, mari kita coba tulis prompt seperti pada umumnya.

genkit flow:run anythingGoesFlow "\"Jelaskan apa itu Genkit Firebase\"" -s

Mari kita cek hasilnya

Output[/dev-run-action-wrapper/anythingGoesFlow/anythingGoesFlow, googleai/gemini-pro]  {
model: 'googleai/gemini-pro',
path: '/dev-run-action-wrapper/anythingGoesFlow/anythingGoesFlow',
content: '**Genkit Firebase**\n' +
'\n' +
'Genkit Firebase adalah kerangka kerja pengembangan aplikasi seluler sumber terbuka yang dibangun di atas Firebase dan Jetpack Compose dari Android. Ini menyediakan fungsionalitas bawaan untuk otentikasi, manajemen basis data, dan konsumsi API dengan arsitektur yang mengikuti pola MVVM (Model-View-ViewModel).\n' +
'\n' +
'**Fitur Genkit Firebase:**\n' +
'\n' +
'* **Layanan Firebase yang Terintegrasi:** Akses langsung ke layanan Firebase seperti Firebase Authentication, Firebase Database, dan Firebase Storage.\n' +
'* **Arsitektur MVVM yang Jelas:** Memisahkan logika aplikasi, tampilan, dan data untuk pengelolaan kode yang lebih baik.\n' + '* **Deklarasi UI dengan Jetpack Compose:** Pengalaman pembuatan UI deklaratif dan reaktif.\n' +
'* **Koneksi Basis Data Langsung:** Interaksi langsung dengan Firebase Database dalam arsitektur MVVM.\n' +
'* **Proyek Awal yang Komprehensif:** Menyediakan proyek awal yang lengkap dengan fitur dasar seperti otentikasi, manajemen pengguna, dan penyimpanan data.\n' +
'* **Templat Kode Generator:** Membangkitkan kode boilerplate untuk model, tampilan model, dan repositori secara otomatis.\n'
+
'* **Dokumentasi Lengkap:** Panduan dan tutorial yang komprehensif untuk membantu pengembang memahami dan menggunakan kerangka kerja.\n' +
'\n' +
'**Manfaat Menggunakan Genkit Firebase:**\n' +
'\n' +
'* **Pengurangan Boilerplate:** Mengotomatiskan pembuatan kode boilerplate, menghemat waktu dan upaya.\n' +
'* **Integrasi Firebase yang Mudah:** Mengakses layanan Firebase dengan cepat dan mudah.\n' +
'* **UI Reaktif:** UI yang responsif terhadap perubahan data yang mendasarinya dengan Jetpack Compose.\n' +
'* **Arsitektur Bersih:** Mempertahankan aplikasi yang terstruktur dan mudah dipelihara.\n' +
'* **Percepatan Pengembangan:** Menyediakan standar dan templat untuk mempercepat proses pengembangan.\n' +
'\n' +
'**Ringkasan:**\n' +
'\n' +
'Genkit Firebase adalah kerangka kerja pengembangan aplikasi seluler yang komprehensif yang menggabungkan Firebase, Jetpack Compose, dan arsitektur MVVM. Ini memungkinkan pengembang membangun aplikasi seluler yang kuat dan dapat diskalakan dengan lebih cepat dan efisien.',
partIndex: 0,
totalParts: 1,
candidateIndex: 0,
totalCandidates: 1,
messageIndex: 0,
finishReason: 'stop'
}

Sesuai perkiraan, prompt tersebut akan menghasilkan hasil yang sama seperti menggunakan Gemini pada umumnya.

Jadi kita bisa menggunakan Genkit baik untuk keperluan spesifik, maupun menggunakannya seperti chatbot pada umumnya. Kita bisa bebas mengaturnya sesuai kebutuhan dan keinginan kita.

Kita juga bisa membuka Genkit Developer UI dengan command dibawah ini.

genkit start

Dengan UI ini kita bisa melihat ringkasan dari model kita dan memperhatikan beberapa fitur lainnya yang telah kita buat.

Genkit Developer UI

Sekian informasi singkat mengenai Genkit Firebase yang diumumkan pada Google I/O 2024. Stay tuned untuk bahasan Firebase berikutnya yaa;)

--

--