Gemini APIをJavaScriptから使う最短ルートは、Node.jsへ公式のGoogle Gen AI SDKを入れ、APIキーを環境変数へ設定し、Interactions APIの ai.interactions.create() を呼ぶ方法です。
Gemini APIには過去のサンプルでよく見かける generateContent もありますが、2026年7月17日時点の公式ドキュメントでは、新しい機能の提供先としてInteractions APIが案内されています。この記事は新規実装を想定し、現行の最小例を使います。
Node.jsプロジェクトの作成、APIキーの設定、最初の応答、会話状態と保存の考え方、代表的なエラーまで順番に解説します。
情報確認日:2026年7月17日(日本時間)
結論:@google/genaiとInteractions APIを使う
最小構成
- Node.jsとnpm
- Gemini APIキー
- 環境変数
GEMINI_API_KEY - 公式パッケージ
@google/genai ai.interactions.create()を呼ぶサーバー側JavaScript
gemini-api-sample/
├── .gitignore
├── config.mjs
├── example.mjs
├── package-lock.json
└── package.json
APIキーはブラウザへ配信するコードに置かず、Node.jsなど自分が管理するサーバー側から呼び出します。キー管理の基本はAI APIキーの安全な管理方法も参照してください。
Node.jsプロジェクトを準備する
プロジェクトを作成する
mkdir gemini-api-sample
cd gemini-api-sample
npm init -y
npm pkg set type=module
npm pkg set scripts.start="node example.mjs"
Node.jsの対応条件はSDKの更新で変わる可能性があります。現行LTSを使い、導入時のpackage要件も確認してください。
公式SDKをインストールする
npm install @google/genai
旧パッケージや非公式ラッパーと混同せず、公式ドキュメントに記載されている @google/genai を使います。
APIキーを環境変数へ設定する
macOS・Linuxでは次の形式です。
export GEMINI_API_KEY="your_api_key_here"
PowerShellでは次の形式です。
$env:GEMINI_API_KEY="your_api_key_here"
node_modules/
.env
.env.*
!.env.example
注意:本物のキーをサンプルコード、Git、画面共有へ含めないでください。誤って公開したキーは削除表示だけで済ませず、無効化して再発行します。
JavaScriptで最初の応答を取得する
モデル名を設定ファイルへ分ける
config.mjsを作成します。
export const MODEL =
process.env.GEMINI_MODEL || "gemini-3.5-flash";
初期値は2026年7月17日時点の公式Get startedに掲載される例です。利用できるモデルはプロジェクトや時期で変わるため、環境変数で差し替えられる構成にしています。
Interactions APIを呼ぶ
example.mjsを作成します。
import { GoogleGenAI } from "@google/genai";
import { MODEL } from "./config.mjs";
if (!process.env.GEMINI_API_KEY) {
throw new Error("GEMINI_API_KEY is not set");
}
const ai = new GoogleGenAI({});
const interaction = await ai.interactions.create({
model: MODEL,
input: "JavaScriptのconstを50文字程度の日本語で説明してください。",
store: false,
});
console.log(interaction.output_text);
実行します。
npm start
成功すると、interaction.output_text にテキスト応答が入ります。この例では1往復だけなので、サーバー側へInteractionを保存しない store: false を指定しています。
storeと会話状態を理解する
Interactions APIは、既定でInteractionを保存し、前のIDを previous_interaction_id に渡して会話を継続できます。公式ドキュメントでは、確認時点の保持期間として有料階層55日、無料階層1日が案内されています。保持条件は公開前に再確認してください。
| 方式 | 指定 | 特徴 |
|---|---|---|
| 状態あり | 既定の保存+previous_interaction_id |
履歴を毎回送り直さず会話を継続 |
| 状態なし | store: false |
アプリ側で必要な履歴を管理 |
保存を使うかは、利便性だけでなく、入力データ、保持期間、削除要件、社内規程で判断します。store: false はバックグラウンド実行や前InteractionのIDによる継続と両立しないため、機能要件も確認します。
前の会話を継続する例
const first = await ai.interactions.create({
model: MODEL,
input: "私は犬を2匹飼っています。",
});
const second = await ai.interactions.create({
model: MODEL,
input: "犬は何匹でしたか?",
previous_interaction_id: first.id,
});
console.log(second.output_text);
tools、system_instruction、生成設定などはInteractionごとの設定です。継続時にも必要なものを毎回明示します。
画像・PDF・長い入力へ広げる前の判断
Geminiはマルチモーダル入力に対応しますが、最初からファイル処理まで加えると、MIMEタイプ、アップロード、サイズ、保存、権限の問題が増えます。まずテキスト1往復を成功させ、次の順に広げます。
- テキスト1往復
- ストリーミング表示
- 会話状態
- 構造化出力
- 画像・音声・文書
- Tool Calling
JSONをアプリで使う場合は、文章だけでJSONを要求する方法とスキーマ指定を分けて考えます。詳しくはAIにJSONを出力させる方法で解説しています。
generateContentとの違い
既存コードでは ai.models.generateContent() を見かけます。すぐに動かなくなるという意味ではありませんが、公式は新機能の提供先としてInteractions APIを案内し、移行ガイドも公開しています。
| 状況 | 判断 |
|---|---|
| 新規プロジェクト | Interactions APIを先に検討する |
| 既存generateContent実装 | 移行ガイドで機能差と保存方針を確認する |
| 短期の検証コード | 使うAPIと確認日をREADMEへ記録する |
代表的なエラーの切り分け
| 症状 | 確認点 |
|---|---|
| キーがない | 実行した同じターミナルで環境変数を設定したか |
| 認証エラー | キーの有効性、対象プロジェクト、制限設定 |
| モデルが見つからない | モデルID、利用可能地域、API・SDKの現行ドキュメント |
| 429 | レート制限、割り当て、課金状態、再試行間隔 |
| importエラー | package導入、ES Modules設定、Node.js要件 |
| 出力が空に見える | output_text、終了理由、安全フィルタ、レスポンス全体 |
まとめ
Gemini APIの新規JavaScript実装は、公式の @google/genai とInteractions APIから始めると、現在の機能提供方針へ合わせやすくなります。APIキーはサーバー側の環境変数へ置き、まず1往復を成功させます。
その後、保存方針を決めてから会話、ストリーミング、構造化出力、マルチモーダル、ツールへ段階的に広げてください。