go-gemini-client

module
v1.0.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 19, 2026 License: MIT

README

✨ Go Gemini Client

Language Go Version GitHub tag (latest by date)

🎯 概要: Gemini APIのクライアントライブラリ

go-gemini-client は、Google の Gemini API (Google GenAI SDK) を Go 言語からより安全かつ効率的に利用するためのラッパーライブラリです。特にマルチモーダル生成(画像生成・理解)におけるリソース管理と、エンタープライズ用途に耐えうる堅牢なエラーハンドリングに特化しています。


💎 特徴と設計思想

🛡️ 安定した画像生成パイプライン

Gemini API を利用した画像生成において、参照画像の一貫性を保つための File API ライフサイクル管理 をネイティブにサポートします。

🤖 堅牢な AI クライアント (pkg/gemini)
  • 高度なリトライ戦略: 指数バックオフによる自動復旧。セーフティフィルタによるブロックなど、リトライすべきでないエラーを識別して即時停止するインテリジェントなロジックを搭載。
  • 決定論的な制御: シード値 (Seed) の管理により、生成 AI 特有の揺らぎを制御し、再現性のある出力をサポート。
  • 型安全なエラー判定: センチネルエラーの導入により、errors.Is を用いた正確なエラーハンドリングが可能です。
📁 高度なリソース管理
  • File API サポート: 巨大なメディアデータを事前にアップロードし、Active 状態になるまで自動ポーリング。生成された URI を複数のリクエストで効率的に再利用できます。

🚀 クイックスタート

クライアントの初期化
ctx := context.Background()
client, err := gemini.NewClient(ctx, gemini.Config{
    APIKey:      "YOUR_GEMINI_API_KEY",
    Temperature: genai.Ptr(0.7),
    MaxRetries:  3,
})

画像リファレンスを使用した生成 (File API)
// 1. 画像を File API にアップロード
uri, fileName, err := client.UploadFile(ctx, imageBytes, "image/png", "character-design")

// 2. アップロードした URI を使用して生成
parts := []*genai.Part{
    {Text: "このキャラクターのデザインを維持したまま、別のポーズを生成して"},
    {FileData: &genai.FileData{FileURI: uri}},
}
resp, err := client.GenerateWithParts(ctx, "imagen-3.0-generate-001", parts, gemini.GenerateOptions{
    AspectRatio: "16:9",
})

// 3. 最後にリソースをクリーンアップ
client.DeleteFile(ctx, fileName)


⚙️ 詳細設定 (gemini.Config)

設定項目 役割 デフォルト値
APIKey Gemini API キー (必須) -
Temperature 応答の創造性 (0.0 - 1.0) 0.7
MaxRetries 最大リトライ回数 1
InitialDelay リトライ開始時の待機時間 30s
MaxDelay リトライ待機時間の上限 120s

📂 プロジェクト構造

ディレクトリ 役割
pkg/gemini コア・クライアント: 通信、リトライ、File API 管理、パラメータ制御。

📜 エラーハンドリング

本ライブラリでは、以下のセンチネルエラーをエクスポートしています。

  • ErrEmptyPrompt: プロンプトが空の場合。
  • ErrAPIKeyRequired: API キーが設定されていない場合。
  • ErrInvalidTemperature: 温度設定が範囲外の場合。

📜 ライセンス (License)

このプロジェクトは MIT License の下で公開されています。


Directories

Path Synopsis
pkg

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL