メインコンテンツへスキップ

Google Gemini

このガイドでは、@aigne/gemini パッケージを介して AIGNE フレームワーク内で Google の Gemini モデルを設定および使用する方法について説明します。API キーの設定、モデルの選択、およびチャット、画像、動画生成で利用可能な特定の機能について解説します。

このガイドでは、@aigne/gemini パッケージを介して AIGNE フレームワーク内で Google の Gemini モデルを設定および使用する方法について説明します。API キーの設定、モデルの選択、およびチャット、画像、動画生成で利用可能な特定の機能について解説します。

@aigne/gemini パッケージは、Gemini マルチモーダルモデルや Imagen テキストから画像へのモデルなど、Google の高度な AI 機能とのシームレスな統合を提供し、AIGNE エコシステム内で一貫したインターフェースを提供します。

機能

  • Google API 統合: Google の Gemini、Imagen、Veo API サービスへの直接インターフェースを提供します。
  • チャット補完: 会話型 AI のために利用可能なすべての Gemini チャットモデルをサポートします。
  • 画像生成: 画像生成および編集のために Imagen と Gemini の両モデルと統合します。
  • 動画生成: テキストから動画へ、画像から動画へ、およびフレーム補間タスクのために Google の Veo モデルを活用します。
  • マルチモーダルサポート: テキスト、画像、音声、動画を組み合わせた入力をネイティブに処理します。
  • 関数呼び出し: 外部ツールと対話するための Gemini の関数呼び出し機能をサポートします。
  • ストリーミング応答: より応答性の高いアプリケーションのためにリアルタイムのデータ処理を可能にします。
  • タイプセーフ: すべての API とモデル設定のための包括的な TypeScript 型定義を含みます。

インストール

お好みのパッケージマネージャーを使用して、必要なパッケージをインストールしてください。

bash
npm install @aigne/gemini @aigne/core

設定

リクエストを認証するには、Google API キーを提供する必要があります。これは環境変数を設定することで行うことができ、フレームワークが自動的に検出します。

環境変数

bash
export GEMINI_API_KEY="your-google-api-key"

または、モデルのコンストラクタで apiKey を直接渡すこともできます。

チャット補完

GeminiChatModel クラスは、会話型のインタラクションに使用されます。

基本的な使用方法

次の例は、GeminiChatModel をインスタンス化して呼び出す方法を示しています。

チャットモデルの使用法

typescript
import { GeminiChatModel } from "@aigne/gemini";

const model = new GeminiChatModel({
  // GEMINI_API_KEY 環境変数が設定されている場合、API キーは任意です。
  apiKey: "your-api-key",
  // モデルを指定します。デフォルトは 'gemini-2.0-flash' です。
  model: "gemini-1.5-flash",
  modelOptions: {
    temperature: 0.7,
  },
});

const result = await model.invoke({
  messages: [{ role: "user", content: "Hi there, introduce yourself" }],
});

console.log(result);

応答例

json
{
  "text": "Hello from Gemini! I'm Google's helpful AI assistant. How can I assist you today?",
  "model": "gemini-1.5-flash",
  "usage": {
    "inputTokens": 12,
    "outputTokens": 18
  }
}

ストリーミング応答

リアルタイムアプリケーションの場合、ストリーミングを有効にすることで、応答チャンクが到着するたびに処理できます。

ストリーミングの例

typescript
import { isAgentResponseDelta } from "@aigne/core";
import { GeminiChatModel } from "@aigne/gemini";

const model = new GeminiChatModel({
  apiKey: "your-api-key",
  model: "gemini-1.5-flash",
});

const stream = await model.invoke(
  {
    messages: [{ role: "user", content: "Hi there, introduce yourself" }],
  },
  { streaming: true }
);

let fullText = "";
const json = {};

for await (const chunk of stream) {
  if (isAgentResponseDelta(chunk)) {
    const text = chunk.delta.text?.text;
    if (text) fullText += text;
    if (chunk.delta.json) Object.assign(json, chunk.delta.json);
  }
}

console.log(fullText);
// Output: "Hello from Gemini! I'm Google's helpful AI assistant. How can I assist you today?"

console.log(json);
// Output: { model: "gemini-1.5-flash" }

チャットモデルのパラメータ

  • messages array (required) — 会話履歴。各メッセージオブジェクトには 'role' と 'content' が含まれます。
  • tools array — モデルが呼び出すことができる利用可能な関数ツールのリスト。
  • toolChoice string | object — モデルがツールをどのように使用するかを制御します。「auto」、「required」、「none」、または特定のツールを指定できます。
  • responseFormat object — 構造化された JSON など、希望する出力形式を指定します。
  • model string — 使用するモデル (例: 'gemini-1.5-pro', 'gemini-1.5-flash')。
  • temperature number — ランダム性を制御します (0-1)。値が高いほど、より創造的な応答が生成されます。
  • topP number — Nucleus サンプリングパラメータ (0-1)。
  • topK number — Top-k サンプリングパラメータ。
  • frequencyPenalty number — トークンの繰り返しを減らす可能性を高めます。
  • presencePenalty number — モデルが新しいトピックを導入するように促します。
  • reasoningEffort string | number — 思考モデル (例: Gemini 2.5) の場合、推論のためのトークンバジェットを設定します。「minimal」、「low」、「medium」、「high」、または特定のトークン数を指定できます。
  • modalities array — ['TEXT']、['IMAGE']、または ['TEXT', 'IMAGE'] など、希望する応答モダリティを指定します。

画像生成

GeminiImageModel クラスは、特殊な Imagen モデルとマルチモーダル Gemini モデルの両方を使用して、画像の生成と編集をサポートします。

基本的な画像生成

この例では、Imagen モデルを使用して画像を生成します。

画像生成

typescript
import { GeminiImageModel } from "@aigne/gemini";

const model = new GeminiImageModel({
  apiKey: "your-api-key",
  model: "imagen-4.0-generate-001", // Default Imagen model
});

const result = await model.invoke({
  prompt: "A serene mountain landscape at sunset with golden light",
  n: 1,
});

console.log(result);

応答例

json
{
  "images": [
    {
      "type": "file",
      "data": "iVBORw0KGgoAAAANSUhEUgAA...",
      "mimeType": "image/png"
    }
  ],
  "usage": { "inputTokens": 0, "outputTokens": 0 },
  "model": "imagen-4.0-generate-001"
}

Gemini モデルによる画像編集

マルチモーダル Gemini モデルは、テキストプロンプトに基づいて既存の画像を編集できます。

画像編集

typescript
import { GeminiImageModel } from "@aigne/gemini";

const model = new GeminiImageModel({
  apiKey: "your-api-key",
  model: "gemini-2.0-flash-exp", // Gemini model for editing
});

const result = await model.invoke({
  prompt: "Add vibrant flowers in the foreground",
  image: [
    {
      type: "url",
      url: "https://example.com/original-image.png",
    },
  ],
  n: 1,
});

console.log(result.images); // Array of edited images

画像モデルのパラメータ

パラメータは、使用されるモデルファミリーによって異なります。

共通パラメータ

パラメータ説明
promptstring**必須。**希望する画像のテキスト説明。
modelstring使用するモデル。デフォルトは imagen-4.0-generate-001 です。
nnumber生成する画像の数。デフォルトは 1 です。
imagearrayGemini モデルの場合、編集のための参照画像の配列。

Imagen モデルのパラメータ

パラメータ説明
seednumber再現可能な結果を得るためのランダムシード。
safetyFilterLevelstringコンテンツモデレーションのセーフティフィルターレベル。
personGenerationstring人物の画像を生成するための設定を制御します。
outputMimeTypestring出力画像の形式 (例: image/png)。
negativePromptstring画像から除外するものの説明。
imageSizestring生成される画像の寸法 (例: "1024x1024")。
aspectRatiostring画像のアスペクト比 (例: "16")。

Gemini モデルのパラメータ

パラメータ説明
temperaturenumberランダム性を制御します (0.0 から 1.0)。
maxOutputTokensnumber応答内の最大トークン数。
topPnumberNucleus サンプリングパラメータ。
topKnumberTop-k サンプリングパラメータ。
safetySettingsarrayコンテンツ生成のためのカスタムセーフティ設定。
seednumber再現可能な結果を得るためのランダムシード。
systemInstructionstringモデルをガイドするためのシステムレベルの指示。

動画生成

GeminiVideoModel クラスは、Google の Veo モデルを使用して、テキストまたは画像から動画を生成します。

基本的な動画生成

テキストから動画へ

typescript
import { GeminiVideoModel } from "@aigne/gemini";

const videoModel = new GeminiVideoModel({
  apiKey: "your-api-key",
  model: "veo-3.1-generate-preview",
});

const result = await videoModel.invoke({
  prompt: "A serene lake with mountains in the background, gentle waves rippling",
  aspectRatio: "16:9",
  size: "720p",
  seconds: "8",
});

console.log(result);

応答例

json
{
  "videos": [
    {
      "type": "file",
      "data": "base64-encoded-video-data...",
      "mimeType": "video/mp4",
      "filename": "timestamp.mp4"
    }
  ],
  "usage": { "inputTokens": 0, "outputTokens": 0 },
  "model": "veo-3.1-generate-preview",
  "seconds": 8
}

高度な動画生成

Veo モデルは、画像から動画への変換とフレーム補間もサポートしています。

  • 画像から動画へ: prompt とソース image を提供して、静止画をアニメーション化します。
  • フレーム補間: prompt、開始 image、および終了 lastFrame を提供して、それらの間の滑らかな遷移を生成します。

画像から動画へ

typescript
const result = await videoModel.invoke({
  prompt: "Animate this image with gentle movement, clouds drifting slowly",
  image: {
    type: "url",
    url: "https://example.com/input-image.png",
  },
  seconds: "8",
});

動画モデルのパラメータ

  • prompt string (required) — 希望する動画コンテンツのテキスト説明。
  • model string — 使用する Veo モデル。デフォルトは 'veo-3.1-generate-preview' です。
  • aspectRatio string — 動画のアスペクト比。「16」(デフォルト) または「9」。
  • size string — 動画の解像度。「720p」(デフォルト) または「1080p」。
  • seconds string — 動画の長さ (秒): 「4」、「6」、または「8」(デフォルト)。
  • image object — 画像から動画への変換のための参照画像、または補間のための最初のフレーム。
  • lastFrame object — フレーム補間のための最後のフレーム。
  • referenceImages array — 動画生成のための追加の参照画像 (Veo 3.1 のみ)。
  • negativePrompt string — 動画で避けるべき内容の説明。

さらに読む

完全な API の詳細については、公式ドキュメントを参照してください。