Kemampuan Firebase Genkit dirancang untuk diperluas oleh plugin. Alat Kesehatan plugin adalah modul yang dapat dikonfigurasi yang dapat menyediakan model, {i> retriever<i}, pengindeks, {i>trace store<i}, dan banyak lagi. Anda telah melihat cara kerja plugin hanya dengan menggunakan Alat Kesehatan:
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 antarmuka pengguna project ID) dan mendaftarkan berbagai model baru, sematan, dan lainnya dengan registry genkit. Registry berfungsi sebagai layanan pencarian untuk tindakan yang diberi nama di dan mendukung UI lokal Genkit untuk menjalankan dan memeriksa model, prompt, dan banyak lagi.
Membuat plugin
Di Go, plugin Genkit hanyalah paket yang mematuhi yang sesuai. 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
cfg
jika plugin Anda tidak menyediakan konfigurasi seluruh plugin lainnya).Dalam fungsi ini, lakukan langkah-langkah penyiapan yang diperlukan oleh plugin Anda. Misalnya:
- Pastikan nilai konfigurasi yang diperlukan telah ditentukan dan tetapkan nilai default ke setelan opsional yang tidak ditentukan.
- Memverifikasi bahwa opsi konfigurasi yang diberikan sudah valid bersama-sama.
- Buat resource bersama yang diperlukan oleh plugin Anda lainnya. Sebagai membuat klien untuk setiap layanan yang diakses plugin Anda.
Sebisa mungkin, resource yang disediakan oleh plugin Anda tidak berasumsi bahwa pengguna telah melakukan tindakan selain memanggil
Init
.Anda harus menentukan dan mengekspor fungsi ini meskipun plugin Anda tidak memerlukan setiap inisialisasi. Dalam hal ini,
Init
bisa saja menampilkan errornil
.Jenis struct
Config
. Jenis ini harus mengenkapsulasi semua konfigurasi opsi yang disetujui olehInit
.Untuk opsi plugin apa pun yang merupakan nilai secret, seperti kunci API, Anda harus menawarkan opsi
Config
dan variabel lingkungan default untuk dikonfigurasi anotasi. Dengan begitu, plugin Anda dapat memanfaatkan fitur pengelolaan rahasia 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 mengaktifkan beberapa model baru serta alat sematan.
Plugin model
Plugin model Genkit menambahkan satu atau beberapa model AI generatif ke Genkit {i>registry<i}. 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 pemantauan atau visualisasi tertentu menyediakan alat command line gcloud.
Lihat Menulis plugin telemetri Genkit.
Memublikasikan plugin
Plugin genkit dapat dipublikasikan sebagai paket Go normal. Untuk meningkatkan
visibilitas, paket Anda harus memiliki genkit
di suatu tempat dalam namanya sehingga
dapat ditemukan dengan
pencarian sederhana di
pkg.go.dev
. Salah satu dari yang
berikut ini adalah
pilihan yang baik:
github.com/yourorg/genkit-plugins/servicename
github.com/yourorg/your-repo/genkit/servicename