Kemampuan Firebase Genkit dirancang untuk diperluas melalui plugin. Plugin Genkit adalah modul yang dapat dikonfigurasi dan dapat menyediakan model, pengambil, pengindeks, men-trace penyimpanan, dan banyak lagi. Anda telah melihat cara kerja plugin hanya dengan menggunakan Genkit:
import {
"github.com/firebase/genkit/go/ai"
"github.com/firebase/genkit/go/plugins/vertexai"
}
// Default to the value of GCLOUD_PROJECT for the project,
// and "us-central1" for the location.
// To specify these values directly, pass a vertexai.Config value to Init.
if err := vertexai.Init(ctx, nil); err != nil {
return err
}
Plugin Vertex AI mengambil konfigurasi (seperti project ID Google Cloud pengguna) dan mendaftarkan berbagai model baru, penyemat, dan masih banyak lagi dengan registry Genkit. Registry berfungsi sebagai layanan pencarian untuk tindakan bernama saat runtime serta mendukung UI lokal Genkit untuk menjalankan dan memeriksa model, prompt, dan masih banyak lagi.
Membuat plugin
Di Go, plugin Genkit hanyalah paket yang mematuhi serangkaian konvensi. Satu modul dapat berisi beberapa plugin.
ID Penyedia
Setiap plugin harus memiliki string ID unik yang membedakannya dari plugin lainnya. Genkit menggunakan ID ini sebagai namespace untuk setiap resource yang ditentukan plugin Anda, untuk mencegah konflik penamaan dengan plugin lain.
Misalnya, jika plugin Anda memiliki ID yourplugin
dan menyediakan model yang disebut
text-generator
, ID model lengkapnya adalah yourplugin/text-generator
.
Anda tidak perlu mengekspor ID penyedia, tetapi Anda harus menentukannya sekali untuk plugin Anda dan menggunakannya secara konsisten saat diperlukan oleh fungsi Genkit.
const providerID = "yourplugin"
Ekspor standar
Setiap plugin harus menentukan dan mengekspor simbol berikut:
Fungsi
Init()
dengan deklarasi seperti berikut:func Init(ctx context.Context, cfg *Config) (err error)
Hapus parameter yang tidak digunakan (misalnya, Anda mungkin tidak memiliki parameter
cfg
jika plugin tidak menyediakan opsi konfigurasi apa pun di seluruh plugin).Dalam fungsi ini, lakukan langkah-langkah penyiapan yang diperlukan oleh plugin Anda. Misalnya:
- Pastikan nilai konfigurasi yang diperlukan telah ditentukan dan tetapkan nilai default pada setelan opsional yang belum ditentukan.
- Verifikasi bahwa opsi konfigurasi yang diberikan sudah valid secara keseluruhan.
- Buat resource bersama yang diperlukan oleh plugin lainnya. Sebagai contoh, buat klien untuk setiap layanan yang diakses plugin Anda.
Sebisa mungkin, resource yang disediakan oleh plugin Anda tidak boleh berasumsi bahwa pengguna telah melakukan tindakan selain memanggil
Init
.Anda harus menentukan dan mengekspor fungsi ini meskipun plugin Anda tidak memerlukan inisialisasi apa pun. Dalam hal ini,
Init
bisa saja menampilkan errornil
.Jenis struct
Config
. Jenis ini harus mengenkapsulasi semua opsi konfigurasi yang disetujui olehInit
.Untuk opsi plugin apa pun yang berupa nilai secret, seperti kunci API, Anda harus menawarkan opsi
Config
dan variabel lingkungan default untuk mengonfigurasinya. Dengan begitu, plugin Anda dapat memanfaatkan fitur pengelolaan secret yang ditawarkan oleh banyak penyedia hosting (seperti Cloud Secret Manager, yang dapat Anda gunakan dengan Cloud Run). Contoh:type Config struct { ExampleAPIKey string } func Init(cfg *Config) (err error) { apiKey := cfg.ExampleAPIKey if apiKey == "" { apiKey = os.Getenv("EXAMPLE_API_KEY") } if apiKey == "" { return fmt.Errorf(`the Example plug-in requires you to specify an API key for the Example service, either by passing it to example.Init() or by setting the EXAMPLE_API_KEY environment variable`) } return nil }
Membuat fitur plugin
Satu plugin dapat mengaktifkan banyak hal baru di dalam Genkit. Misalnya, plugin Vertex AI akan mengaktifkan beberapa model baru dan penyemat.
Plugin model
Plugin model Genkit menambahkan satu atau beberapa model AI generatif ke registry Genkit. Model mewakili semua model generatif yang mampu menerima prompt sebagai input dan menghasilkan teks, media, atau data sebagai output.
Lihat Menulis plugin model Genkit.
Plugin telemetri
Plugin telemetri Genkit mengonfigurasi instrumentasi OpenTelemetry Genkit untuk mengekspor trace, metrik, dan log ke alat pemantauan atau visualisasi tertentu.
Lihat Menulis plugin telemetri Genkit.
Memublikasikan plugin
Plugin genkit dapat dipublikasikan sebagai paket Go normal. Untuk meningkatkan
visibilitas, paket Anda harus memiliki genkit
dalam namanya sehingga
dapat ditemukan dengan pencarian sederhana di
pkg.go.dev
. Salah satu dari hal berikut
merupakan pilihan yang baik:
github.com/yourorg/genkit-plugins/servicename
github.com/yourorg/your-repo/genkit/servicename