Die Funktionen von Firebase Genkit können durch Plug-ins erweitert werden. Genkit-Plug-ins sind konfigurierbare Module, die unter anderem Modelle, Abrufprogramme, Indexierer und Trace-Stores bereitstellen können. Sie haben bereits Plug-ins in Aktion gesehen, indem Sie Genkit verwendet haben:
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
}
Das Vertex AI-Plug-in nimmt die Konfiguration (z. B. die Google Cloud-Projekt-ID des Nutzers) an und registriert eine Vielzahl neuer Modelle, Embedder und mehr in der Genkit-Registrierung. Die Registry dient als Suchdienst für benannte Aktionen zur Laufzeit und ermöglicht die Ausführung und Prüfung von Modellen, Prompts und mehr über die lokale Benutzeroberfläche von Genkit.
Plug-in erstellen
In Go ist ein Genkit-Plug-in einfach ein Paket, das einigen Konventionen folgt. Ein einzelnes Modul kann mehrere Plug-ins enthalten.
Anbieter-ID
Jedes Plug-in muss einen eindeutigen ID-String haben, der es von anderen Plug-ins unterscheidet. Genkit verwendet diese Kennung als Namespace für jede Ressource, die in Ihrem Plug-in definiert wird, um Namenskonflikte mit anderen Plug-ins zu vermeiden.
Wenn Ihr Plug-in beispielsweise die ID yourplugin
hat und ein Modell namens text-generator
bereitstellt, lautet die vollständige Modell-ID yourplugin/text-generator
.
Sie müssen Ihre Anbieter-ID nicht exportieren, sollten sie aber einmal für Ihr Plug-in definieren und sie konsistent verwenden, wenn dies von einer Genkit-Funktion gefordert wird.
const providerID = "yourplugin"
Standardexporte
Jedes Plug-in sollte die folgenden Symbole definieren und exportieren:
Eine
Init()
-Funktion mit einer Deklaration wie der folgenden:func Init(ctx context.Context, cfg *Config) (err error)
Lassen Sie alle nicht verwendeten Parameter weg. Beispielsweise haben Sie möglicherweise keinen
cfg
-Parameter, wenn Ihr Plug-in keine pluginweiten Konfigurationsoptionen bietet.Führen Sie in dieser Funktion alle Einrichtungsschritte aus, die für Ihr Plug-in erforderlich sind. Beispiel:
- Prüfen Sie, ob alle erforderlichen Konfigurationswerte angegeben sind, und weisen Sie allen nicht angegebenen optionalen Einstellungen Standardwerte zu.
- Prüfen Sie, ob die angegebenen Konfigurationsoptionen zusammen gültig sind.
- Erstellen Sie alle freigegebenen Ressourcen, die für den Rest Ihres Plug-ins erforderlich sind. Erstellen Sie beispielsweise Clients für alle Dienste, auf die Ihr Plug-in zugreift.
Die vom Plug-in bereitgestellten Ressourcen sollten soweit möglich nicht davon ausgehen, dass der Nutzer eine andere Aktion als
Init
aufgerufen hat.Sie sollten diese Funktion auch dann definieren und exportieren, wenn Ihr Plug-in keine Initialisierung erfordert. In diesem Fall kann
Init
einfach einennil
-Fehler zurückgeben.Einen
Config
-Struct-Typ. Dieser Typ sollte alle vonInit
akzeptierten Konfigurationsoptionen umfassen.Für alle Plug-in-Optionen, die geheime Werte sind, z. B. API-Schlüssel, sollten Sie sowohl eine
Config
-Option als auch eine Standardumgebungsvariable zur Konfiguration anbieten. So können Sie die Secret-Verwaltungsfunktionen vieler Hostinganbieter nutzen, z. B. Cloud Secret Manager, den Sie mit Cloud Run verwenden können. Beispiel: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 }
Plug-in-Funktionen erstellen
Mit einem einzigen Plug-in können viele neue Funktionen in Genkit aktiviert werden. Das Vertex AI-Plug-in aktiviert beispielsweise mehrere neue Modelle sowie einen Embedder.
Modell-Plug-ins
Mit Genkit-Modell-Plug-ins werden der Genkit-Registrierung ein oder mehrere generative KI-Modelle hinzugefügt. Ein Modell ist ein beliebiges generatives Modell, das einen Prompt als Eingabe entgegennehmen und Text, Medien oder Daten als Ausgabe generieren kann.
Weitere Informationen finden Sie unter Genkit-Modell-Plug-in erstellen.
Telemetrie-Plug-ins
Genkit-Telemetrie-Plug-ins konfigurieren die OpenTelemetry-Instrumentierung von Genkit so, dass Traces, Messwerte und Logs in ein bestimmtes Monitoring- oder Visualisierungstool exportiert werden.
Weitere Informationen finden Sie unter Genkit-Telemetrie-Plug-in erstellen.
Plug-in veröffentlichen
Genkit-Plug-ins können als normale Go-Pakete veröffentlicht werden. Um die Sichtbarkeit zu erhöhen, sollte der Name Ihres Pakets genkit
enthalten, damit es bei einer einfachen Suche auf pkg.go.dev
gefunden werden kann. Eine der folgenden Optionen ist eine gute Wahl:
github.com/yourorg/genkit-plugins/servicename
github.com/yourorg/your-repo/genkit/servicename