Genkit プラグインの作成

Firebase Genkit の機能は、プラグインによって拡張できるように設計されています。Genkit プラグインは構成可能なモジュールで、モデル、リトリーバー、インデクサ、 トレースストアなどに使用できます実際のプラグインについては、 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 プラグインは、構成(ユーザーの Google Cloud プロジェクト ID など)が作成されます。これにより、さまざまな新しいモデル、エンべディングなどが Genkit レジストリ。レジストリは、次の名前付きアクションのルックアップサービスとして機能します。 Genkit のローカル UI を強化し モデルの実行と検査に利用できます 使用できます。

プラグインの作成

Go における Genkit プラグインは、単に小さなパッケージ セットに準拠したパッケージです。 学びました。1 つのモジュールに複数のプラグインを含めることができます。

プロバイダ ID

すべてのプラグインに、プラグインを区別するための一意の識別子文字列が必要 できます。Genkit はこの ID をすべてのリソースの名前空間として使用する 他のプラグインとの名前の競合を防ぐために、自身のプラグインで定義される名前を指定します。

たとえば、プラグインに ID yourplugin があり、 text-generator の場合、完全なモデル ID は yourplugin/text-generator になります。

プロバイダ ID をエクスポートする必要はありませんが、 Genkit 関数で必要な場合は一貫して使用する必要があります。

const providerID = "yourplugin"

標準エクスポート

すべてのプラグインで、次のシンボルを定義してエクスポートする必要があります。

  • 次のような宣言を含む Init() 関数。

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

    使用しないパラメータは省略します(たとえば、cfg や パラメータがプラグイン全体の設定に対応していない場合は、このパラメータを使用します。 オプション)。

    この関数で、プラグインに必要な設定手順を実行します。次に例を示します。

    • 必要な構成値が指定されていることを確認してから、 未指定のオプション設定に変更できます。
    • 指定した構成オプションが同時に有効であることを確認します。
    • プラグインの残りの部分で必要とされる共有リソースを作成します。対象 たとえば、プラグインがアクセスする任意のサービスのクライアントを作成します。

    できる限り、プラグインが提供するリソースでは、 ユーザーが Init の呼び出し以外のアクションを行ったと想定します。

    プラグインが不要な場合でも、この関数を定義してエクスポートしてください。 初期化できます。この場合、Initnil エラーを返すだけで済みます。

  • Config 構造体型。このタイプでは、すべての構成をカプセル化し、 Init で承認されたオプション。

    API キーなどのシークレット値であるプラグイン オプションについては、 構成するための Config オプションとデフォルト環境変数の両方を提供 できます。これにより、プラグインでシークレット管理機能を活用できる Cloud Secret Manager など、多くのホスティング プロバイダが提供する 使用しないでください)。例:

    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
    }
    

プラグイン機能の構築

1 つのプラグインで Genkit 内の多くの新しい機能を有効にできます。たとえば、 Vertex AI プラグインにより、いくつかの新しいモデルとエンべディングがアクティブになります。

モデル プラグイン

Genkit モデル プラグインは Genkit に 1 つ以上の生成 AI モデルを追加する できます。モデルとは、入力メッセージを受け取れる 生成し、テキスト、メディア、データを出力として生成します。

Genkit モデル プラグインの作成をご覧ください。

テレメトリー プラグイン

Genkit テレメトリー プラグインは、Genkit の OpenTelemetry 計測を構成して、 特定のモニタリングまたは可視化機能にトレース、指標、ログをエクスポート ツールです。

Genkit テレメトリー プラグインの作成をご覧ください。

プラグインを公開する

Genkit プラグインは、通常の Go パッケージとして公開できます。増加 検出可能性を高めるには、パッケージの名前のどこかに genkit を含めて、 Google Chat でシンプルな pkg.go.dev。次のいずれか 適切な選択肢:

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