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 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łądnil
.Typ struktury
Config
. Ten typ powinien obejmować całą konfigurację opcje zaakceptowane przez użytkownikaInit
.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
dobre opcje:
github.com/yourorg/genkit-plugins/servicename
github.com/yourorg/your-repo/genkit/servicename