Genkit-Plug-ins schreiben

Die Funktionen von Firebase Genkit wurden durch Plug-ins erweitert. Genkit-Plug-ins sind konfigurierbare Module, die unter anderem Modelle, Abrufprogramme, Indexierungsprogramme und Trace-Stores bereitstellen können. Sie haben bereits Plug-ins in Aktion gesehen, indem Sie Genkit:

import {
	"github.com/firebase/genkit/go/ai"
	"github.com/firebase/genkit/go/genkit"
	"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, g, nil); err != nil {
	return err
}

Das Vertex AI-Plug-in übernimmt die Konfiguration (z. B. die Google Cloud des Nutzers) Projekt-ID) und registriert eine Vielzahl neuer Modelle, Einbettungen und mehr mit dem Genkit-Registry. Die Registry dient als Suchdienst für benannte Aktionen unter und nutzt die lokale Benutzeroberfläche von Genkit zum Ausführen und Überprüfen von Modellen, und mehr.

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 Kennungsstring haben, der es von anderen Plug-ins unterscheidet. Genkit verwendet diese Kennung als Namespace für jede Ressource vom 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, ist die vollständige Modellkennung 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 Parameter weg, die Sie nicht verwenden (z. B. wenn Sie kein cfg verwenden). Parameter, wenn Ihr Plug-in keine Plug-in-weite Konfiguration bietet Optionen).

    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 gemeinsam genutzten Ressourcen, die für das restliche Plug-in erforderlich sind. Erstellen Sie beispielsweise Clients für alle Dienste, auf die Ihr Plug-in zugreift.

    Die von Ihrem Plug-in bereitgestellten Ressourcen dürfen nicht dass der Nutzer eine andere Aktion als das Aufrufen von Init ausgeführt hat.

    Sie sollten diese Funktion auch dann definieren und exportieren, wenn Ihr Plug-in keine Initialisierung erfordert. In diesem Fall kann Init einfach einen nil-Fehler zurückgeben.

  • Ein Config-Strukturtyp. Dieser Typ sollte alle von Init akzeptierten Konfigurationsoptionen umfassen.

    Für alle Plug-in-Optionen, bei denen es sich um Secret-Werte handelt, z. B. API-Schlüssel, sollten Sie sowohl eine Config-Option als auch eine Standardumgebungsvariable zum Konfigurieren anbieten . Dadurch kann Ihr Plug-in die Funktionen zur Secret-Verwaltung nutzen die von vielen Hostinganbietern wie Cloud Secret Manager angeboten werden, in Cloud Run verwenden). 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

Ein einzelnes Plug-in kann viele neue Elemente in Genkit aktivieren. Beispiel: Der Parameter Das Vertex AI-Plug-in aktiviert mehrere neue Modelle sowie einen Einbettungscode.

Modell-Plug-ins

Mit Genkit-Modell-Plug-ins werden der Genkit-Registrierung ein oder mehrere generative KI-Modelle hinzugefügt. Ein Modell stellt jedes generative Modell dar, das in der Lage ist, ein Prompt als Eingabe und generieren Text, Medien oder Daten als Ausgabe.

Siehe Plug-in für Genkit-Modell schreiben.

Telemetrie-Plug-ins

Genkit-Telemetrie-Plug-ins konfigurieren die OpenTelemetry-Instrumentierung von Genkit so, dass Traces, Messwerte und Logs in ein bestimmtes Monitoring oder eine bestimmte Visualisierung exportieren .

Siehe Genkit-Telemetrie-Plug-in schreiben.

Plug-in veröffentlichen

Genkit-Plug-ins können als normale Go-Pakete veröffentlicht werden. Zum Erhöhen sollte der Name des Pakets genkit enthalten, damit es können Sie mit einer einfachen Suche pkg.go.dev Folgende Optionen sind verfügbar: gute Wahlmöglichkeiten:

  • github.com/yourorg/genkit-plugins/servicename
  • github.com/yourorg/your-repo/genkit/servicename