Genkit eklentileri yazma

Firebase Genkit'in özellikleri, eklentilerle genişletilecek şekilde tasarlanmıştır. Genkit Eklentiler, model, alıcı, dizinleyici ve kullanıcı aracıları ve çok daha fazlasını yapabilirsiniz. Şimdiye kadar sadece 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
}

Vertex AI eklentisi, yapılandırma (ör. kullanıcının Google Cloud proje kimliği) sağlar ve çeşitli yeni modelleri, yerleştiricileri ve daha fazlasını Genkit kayıt defteri. Kayıt otoritesi, modellerini çalıştırmak ve incelemek için Genkit'in yerel kullanıcı arayüzünü destekler. istemler ve daha fazlası.

Eklenti oluşturma

Go'da Genkit eklentisi, tek bir kod tabanına bağlı küçük bir belirler. Tek bir modülde birçok eklenti bulunabilir.

Sağlayıcı Kimliği

Her eklentinin, onu diğerlerinden ayıran benzersiz bir tanımlayıcı dizesi olmalıdır diğer eklentiler. Genkit bu tanımlayıcıyı her kaynak için ad alanı olarak kullanır eklentisinin diğer eklentilerle adlandırma çakışmalarını önlemek için tanımlamasıdır.

Örneğin, eklentiniz yourplugin kimliğine sahipse ve text-generator ise tam model tanımlayıcısı yourplugin/text-generator olur.

Sağlayıcı kimliğinizi dışa aktarmanız gerekmez ancak sağlayıcı kimliğinizi bir kez tanımlamanız gerekir. eklentinizi test edin ve bir Genkit işlevi tarafından gerekli kılındığında tutarlı bir şekilde kullanın.

const providerID = "yourplugin"

Standart dışa aktarma işlemleri

Her eklenti aşağıdaki simgeleri tanımlamalı ve dışa aktarmalıdır:

  • Aşağıdaki gibi bir bildirime sahip Init() işlevi:

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

    Kullanmadığınız parametreleri atlayın (örneğin, bir cfg parametresini kullanabilirsiniz. seçenekleri).

    Bu işlevde, eklentinizin gerektirdiği kurulum adımlarını uygulayın. Örneğin:

    • Gerekli yapılandırma değerlerinin belirtildiğini onaylayın ve varsayılan değerleri, belirtilmemiş tüm isteğe bağlı ayarlara uygulayabilirsiniz.
    • Verilen yapılandırma seçeneklerinin birlikte geçerli olduğunu doğrulayın.
    • Eklentinizin geri kalanı için gereken paylaşılan kaynakları oluşturun. Örneğin, Örneğin, eklentinizin eriştiği tüm hizmetler için istemciler oluşturun.

    Mümkün olduğu kadar, eklentiniz tarafından sağlanan kaynaklar kullanıcının Init çağrısı dışında bir işlem yaptığını varsayın.

    Eklentiniz herhangi bir başlatma işlemi yoktur. Bu durumda, Init yalnızca nil hatası döndürebilir.

  • Config struct türü. Bu tür, yapılandırmanın seçenekler Init tarafından kabul edildi.

    API anahtarları gibi gizli değer olan eklenti seçenekleri için Yapılandırılacak hem bir Config seçeneği hem de bir varsayılan ortam değişkeni sunun somut olarak ortaya koyar. Bu, eklentinizin gizli anahtar yönetim özelliklerinden yararlanabilmesini sağlar birçok barındırma sağlayıcısı (ör. Cloud Secret Manager) tarafından sunulan Cloud Run ile birlikte kullanılmasına izin verin). Örneğin:

    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
    }
    

Eklenti özellikleri oluşturma

Tek bir eklentiyle Genkit'teki birçok yeni özellik etkinleştirilebilir. Örneğin, Vertex AI eklentisi, hem yeni modelleri etkinleştirir hem de bir yerleşik aracı etkinleştirir.

Model eklentileri

Genkit model eklentileri, Genkit'e bir veya daha fazla üretken yapay zeka modeli ekler. kayıt otoritesi. Model, alan adına ulaşabilen her türlü üretken giriş olarak istemini ve çıkış olarak metin, medya veya veri oluşturmayı seçebilirsiniz.

Genkit model eklentisi yazma bölümüne bakın.

Telemetri eklentileri

Genkit telemetri eklentileri, Genkit'in OpenTelemetry enstrümantasyonunu izleri, metrikleri ve günlükleri belirli bir izlemeye veya görselleştirmeye aktarmak aracını kullanın.

Genkit telemetri eklentisi yazma bölümüne bakın.

Eklenti yayınlama

Genkit eklentileri normal Go paketleri olarak yayınlanabilir. Artırmak için bulunabilir olması için, paketinizin adında bir yerde genkit olması gerekir. basit bir aramayla bulunabilir. pkg.go.dev Aşağıdakilerden herhangi biri iyi seçimler:

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