Pisanie wtyczek Genkit

Możliwości Firebase Genkit zostały zaprojektowane tak, aby można było je rozszerzać przez wtyczki. Genkit Wtyczki to konfigurowalne moduły, które mogą udostępniać modele, moduły pobierania, i nie tylko. Wiesz już, jak działają wtyczki, korzystając z 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
}

Wtyczka Vertex AI pobiera konfigurację (np. usługę Google Cloud użytkownika identyfikatora projektu) i rejestruje różne nowe modele, elementy osadzone i nie tylko Rejestr Genkit. Rejestr służy jako usługa wyszukiwania nazwanych działań w w środowisku wykonawczym i obsługuje lokalny interfejs użytkownika Genkit do uruchamiania i sprawdzania modeli, itp.

Tworzenie wtyczki

W Go: wtyczka Genkit to po prostu pakiet zgodny z małym zestawem i konwencji. Jeden moduł może zawierać kilka wtyczek.

Identyfikator dostawcy

Każda wtyczka musi mieć unikalny ciąg identyfikatora, który odróżnia ją od z innymi wtyczkami. Genkit używa tego identyfikatora jako przestrzeni nazw dla każdego zasobu zdefiniowane przez wtyczkę, by uniknąć konfliktów z nazwami innych wtyczek.

Jeśli na przykład wtyczka ma identyfikator yourplugin i udostępnia model o nazwie text-generator, pełnym identyfikatorem modelu będzie yourplugin/text-generator.

Identyfikatora dostawcy nie trzeba eksportować, ale trzeba go zdefiniować raz, wtyczki i używaj jej konsekwentnie, gdy wymaga tego funkcja Genkit.

const providerID = "yourplugin"

Eksporty standardowe

Każda wtyczka powinna zdefiniować i wyeksportować te symbole:

  • funkcję Init() z deklaracją podobną do tej:

    func Init(ctx context.Context, cfg *Config) (err error)
    

    Pomiń wszystkie parametry, których nie używasz (np. możesz nie mieć parametru cfg , jeśli wtyczka nie zapewnia żadnej konfiguracji na poziomie wtyczki ).

    W ramach tej funkcji wykonaj wszystkie czynności konfiguracyjne wymagane przez wtyczkę. Przykład:

    • Sprawdź, czy są określone wymagane wartości konfiguracji, i przypisz je do wszystkich nieokreślonych ustawień opcjonalnych.
    • Sprawdź, czy podane opcje konfiguracji są razem prawidłowe.
    • Utwórz wszystkie udostępnione zasoby wymagane przez pozostałą część wtyczki. Dla: Można na przykład utworzyć klienty usług, do których uzyskuje dostęp wtyczka.

    W miarę możliwości zasoby udostępniane przez wtyczkę nie powinny Zakładamy, że użytkownik wykonał inne działanie niż wywołało Init.

    Należy zdefiniować i wyeksportować tę funkcję, nawet jeśli wtyczka nie wymaga dowolną inicjalizację. W tym przypadku Init może po prostu zwrócić błąd nil.

  • Typ struktury Config. Ten typ powinien obejmować całą konfigurację opcje zaakceptowane przez użytkownika Init.

    W przypadku opcji wtyczek, które są wartościami tajnymi, takimi jak klucze interfejsu API, oferują zarówno opcję Config, jak i domyślną zmienną środowiskową do konfigurowania . Umożliwi to wtyczce korzystanie z funkcji zarządzania obiektami tajnymi oferowanej przez wielu dostawców usług hostingowych (takich jak Cloud Secret Manager, który możesz do użytku w Cloud Run). Przykład:

    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
    }
    

Tworzenie funkcji wtyczek

Pojedyncza wtyczka może aktywować wiele nowych funkcji w Genkit. Na przykład parametr Wtyczka Vertex AI aktywuje kilka nowych modeli oraz komponent do umieszczenia.

Wtyczki modelu

Wtyczki modelu Genkit dodają do Genkit co najmniej 1 model generatywnej AI rejestr. Model reprezentuje dowolny model generatywny, który może otrzymać jako dane wejściowe i generować tekst, multimedia lub dane jako dane wyjściowe.

Przeczytaj artykuł Pisanie wtyczki modelu Genkit.

Wtyczki telemetryczne

Wtyczki telemetryczne Genkit konfigurują instrumentację OpenTelemetry firmy Genkit do eksportowanie logów czasu, wskaźników i logów do konkretnego monitorowania lub wizualizacji; .

Zapoznaj się z artykułem Zapisywanie wtyczki telemetrycznej Genkit.

Publikowanie wtyczki

Wtyczki Genkit można publikować jako zwykłe pakiety w języku Go. Aby zwiększyć wykrywalność, pakiet powinien mieć w nazwie atrybut genkit, aby można ją znaleźć dzięki prostym wyszukiwaniu na pkg.go.dev Dowolny z tych elementów jest dobrych wyborów:

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