Gemini CLI for Ubuntu: インストール、設定、基本コマンド解説


Gemini CLI for Ubuntu: インストール、設定、基本コマンド解説

1. はじめに

人工知能(AI)モデルの利用は、もはや特別なものではなくなりつつあります。開発者や研究者、あるいは日常的なタスクの自動化を目指す人々にとって、AIモデルへの容易なアクセスは非常に重要です。Googleが提供するGeminiモデルは、その強力な機能と多様な能力により、注目を集めています。GeminiモデルはAPIを通じてアクセスできますが、より手軽にコマンドラインから利用したいというニーズも存在します。

そこで登場するのが、Googleが開発したGemini CLI(Command Line Interface)ツールです。このツールを使用することで、ターミナルから直接Geminiモデルと対話し、テキスト生成、埋め込み生成、モデル情報の取得といった操作を行うことができます。本記事では、特に多くの開発者が利用しているUbuntu環境に焦点を当て、Gemini CLIのインストール、設定、そして基本的な使い方から実践的な応用例までを詳細に解説します。

なぜCLIなのか? GUIツールやWebインターフェースと比較して、CLIには以下のような利点があります。

  • 自動化との親和性: シェルスクリプトや他のコマンドラインツールと容易に連携させ、複雑なワークフローに組み込むことができます。パイプライン処理やファイルバッチ処理などが典型的な例です。
  • 効率性: キーボード操作のみで完結するため、慣れると迅速に操作できます。
  • 再現性: 実行したコマンドの履歴が残りやすく、同じ処理を何度でも正確に繰り返すことができます。
  • リソース効率: GUIアプリケーションに比べて一般的に軽量です。

本記事は、Ubuntuの基本的な操作ができる方を対象としています。Go言語のインストールからGemini CLIの設定、そして具体的なコマンドの使用例まで、順を追って丁寧に解説します。記事を読み進めることで、Gemini CLIを使いこなし、AIモデルをより身近なツールとして活用できるようになることを目指します。

2. Gemini CLIのインストール

Gemini CLIはGo言語で記述されており、Goのツールチェーンを使用してインストールするのが一般的です。そのため、まずはUbuntu環境にGo言語をインストールする必要があります。

2.1 Go言語のインストール

Goのインストールにはいくつかの方法がありますが、ここでは公式サイトから最新のバイナリをダウンロードしてインストールする方法を推奨します。この方法が最もシンプルで、最新バージョンを確実に入手できるためです。

ステップ1: 既存のGoバージョンの確認(オプション)

もし以前にGoをインストールしたことがある場合は、以下のコマンドでバージョンを確認できます。

bash
go version

出力がない場合、または古いバージョンの場合は、新しいバージョンをインストールします。

ステップ2: Goバイナリのダウンロード

Goの公式ダウンロードページ(https://go.dev/dl/)にアクセスし、Ubuntu(Linux)用の最新版アーカイブ(.tar.gz形式)のURLを確認します。例として、go1.22.4.linux-amd64.tar.gz のようなファイル名になります(バージョンは変更される可能性があります)。

以下のコマンドを使用して、ダウンロードします。[DOWNLOAD_URL]は公式サイトで確認したURLに置き換えてください。

“`bash
wget [DOWNLOAD_URL]

例: wget https://go.dev/dl/go1.22.4.linux-amd64.tar.gz

“`

ステップ3: アーカイブの展開と配置

ダウンロードしたアーカイブを /usr/local ディレクトリに展開します。これにより、Goがシステム全体で利用可能になります。展開には tar コマンドを使用します。[DOWNLOADED_FILE]はダウンロードしたファイル名に置き換えてください。

“`bash
sudo tar -C /usr/local -xzf [DOWNLOADED_FILE]

例: sudo tar -C /usr/local -xzf go1.22.4.linux-amd64.tar.gz

“`

このコマンドは、指定されたディレクトリ (/usr/local) にアーカイブの内容を展開します。sudo が必要なのは、/usr/local ディレクトリに書き込む権限が必要だからです。

ステップ4: 環境変数の設定

Goの実行ファイル(goコマンドなど)をどのディレクトリからでも実行できるように、Goのインストールディレクトリをシステムの PATH 環境変数に追加する必要があります。また、Goのビルド関連で必要な GOPATH 環境変数も設定することが推奨されます。

一般的に、これらの設定はユーザーのホームディレクトリにあるシェル設定ファイル(例: ~/.bashrc または ~/.zshrc)に追記します。今回は ~/.bashrc を例に説明します。

テキストエディタ(nano, vim, geditなど)で ~/.bashrc ファイルを開きます。

bash
nano ~/.bashrc

ファイルの末尾に以下の行を追加します。

“`bash

Go language environment variables

export PATH=$PATH:/usr/local/go/bin
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin
“`

  • export PATH=$PATH:/usr/local/go/bin: 既存の PATH/usr/local/go/bin ディレクトリを追加します。ここに go コマンドのバイナリがあります。
  • export GOPATH=$HOME/go: Goのワークスペースディレクトリを ~/go に設定します。ここにはダウンロードした外部ライブラリや、自分で開発したGoプログラムなどが配置されます。
  • export PATH=$PATH:$GOPATH/bin: GOPATH ディレクトリ内の bin サブディレクトリも PATH に追加します。go install コマンドでインストールされた実行可能ファイルは、通常 $GOPATH/bin に配置されるため、ここをPATHに追加することで、インストールしたGoプログラムをどこからでも実行できるようになります。

ファイルを保存してエディタを終了します。

ステップ5: 環境設定の反映

設定を現在のターミナルセッションに反映させるには、source コマンドを使用します。

bash
source ~/.bashrc

これにより、.bashrc ファイルに記述した環境変数が現在のシェルにロードされます。今後新しくターミナルを開いた際は、自動的にこれらの設定が読み込まれます。

ステップ6: インストール確認

最後に、Goが正しくインストールされ、環境変数が設定されたかを確認します。

bash
go version
go env GOPATH

go version コマンドはインストールしたGoのバージョンを表示するはずです。go env GOPATH コマンドは設定した GOPATH のパス(例: /home/your_user/go)を表示するはずです。

もし go コマンドが見つからない、またはバージョン情報が表示されない場合は、PATH 環境変数の設定が正しくないか、source コマンドを実行し忘れている可能性があります。.bashrc ファイルの内容を確認し、スペルミスがないかなどをチェックしてください。

Go言語のインストールはこれで完了です。Gemini CLIをインストールするための準備が整いました。

2.2 Gemini CLIのインストール

Goが利用可能な状態になったら、いよいよGemini CLIをインストールします。Goのツールチェーンに含まれる go install コマンドを使用するのが最も簡単な方法です。

ステップ1: Gemini CLIのインストールコマンド実行

以下のコマンドを実行します。このコマンドは、GitHub上にあるGemini CLIのソースコードを取得し、ビルドして、実行可能バイナリを $GOPATH/bin ディレクトリに配置します。

bash
go install github.com/google/generative-ai-go/cmd/gemini@latest

  • go install: Goモジュール(Goプログラムのパッケージ管理単位)をダウンロード、ビルドし、実行可能なコマンドとしてインストールします。
  • github.com/google/generative-ai-go/cmd/gemini: インストール対象のGoモジュールのパスです。Gemini CLIのソースコードはここにあります。
  • @latest: 利用可能な最新バージョンをインストールすることを指定します。

このコマンドの実行には、インターネット接続が必要です。ソースコードのダウンロードとビルドには数秒から数分かかる場合があります。

ステップ2: インストール確認

インストールが完了したら、Gemini CLIが正しくインストールされたかを確認します。PATH$GOPATH/bin を追加してあれば、ターミナルを再起動するか source ~/.bashrc を実行した後、以下のコマンドが実行できるはずです。

bash
gemini version

もし正しくインストールされていれば、Gemini CLIのバージョン情報が出力されます。例: gemini version 0.1.0

もし gemini: command not found と表示される場合は、以下の点を確認してください。

  • go install コマンドがエラーなく完了したか。
  • $GOPATH 環境変数が正しく設定されているか (go env GOPATH で確認)。
  • $GOPATH/bin ディレクトリが PATH 環境変数に含まれているか (echo $PATH で確認)。
  • $GOPATH/bin ディレクトリに gemini という名前の実行ファイルが存在するか (ls $GOPATH/bin で確認)。
  • 環境変数の設定を変更した場合、ターミナルを再起動したか、または source ~/.bashrc を実行したか。

これらの点を確認し、必要に応じてGoのインストール手順を見直してください。

これで、Ubuntu環境へのGemini CLIのインストールは完了です。次に、Geminiモデルを利用するために必要なAPIキーの取得と設定を行います。

3. Gemini APIキーの取得

Gemini CLIを利用するには、Google CloudまたはGoogle AI StudioからAPIキーを取得する必要があります。個人利用や小規模なテストであれば、Google AI Studioから無償枠のあるAPIキーを取得するのが最も手軽です。

ステップ1: Google AI Studioにアクセス

ウェブブラウザを開き、以下のURLにアクセスします。
https://aistudio.google.com/

Googleアカウントでログインを求められたら、ログインしてください。

ステップ2: APIキーの取得ページへ移動

Google AI Studioのインターフェースに移動したら、通常は画面左側のナビゲーションメニューまたは画面上部の「Get API key」のようなリンクを探します。初めて利用する場合は、Welcomeページなどに表示されていることが多いです。

「Get API key in Google Cloud」または類似のリンクをクリックします。これにより、Google Cloud Platform (GCP) のAPIキー管理ページにリダイレクトされます。

ステップ3: 新しいAPIキーの作成

GCPのAPIキー管理ページに移動したら、「+ Create API Key」または「認証情報を作成」のようなボタンを探してクリックします。

新しいAPIキーが即座に作成され、表示されます。このAPIキーは非常に重要であり、あなたのGoogleアカウントと課金情報(もし設定していれば)に関連付けられています。

ステップ4: APIキーの記録

作成されたAPIキーは、文字列として表示されます。このAPIキーを安全な場所にコピーして保管してください。 表示された画面を閉じると、後からキーの文字列自体を再度表示することはできません(セキュリティ上の理由)。ただし、キーの名前や作成日などは確認でき、必要であれば新しいキーを再生成することは可能です。

重要な注意点:

  • APIキーの秘密保持: APIキーはあなたのIDであり、Google Gemini APIへのアクセス権限を付与するものです。絶対に公開しないでください。 ソースコードに直接埋め込んだり、GitHubのようなパブリックなリポジトリにプッシュしたりすることは非常に危険です。
  • キーの制限設定(推奨): セキュリティを向上させるため、作成したAPIキーに対して制限を設定することを強く推奨します。
    • API制限: このキーがアクセスできるAPIを「Generative Language API」に制限します。これにより、万が一キーが漏洩しても、他のGoogle Cloudサービスが悪用されるリスクを低減できます。
    • アプリケーション制限: 可能であれば、APIキーを使用するアプリケーションの種類(例: IPアドレス、HTTPリファラ、Android/iOSアプリなど)に基づいて制限を設定します。CLIから利用する場合、特定のIPアドレスからのアクセスに制限するのが考えられますが、自宅や会社のIPアドレスが変わる可能性もあるため、慎重に設定してください。小規模なテスト利用であれば、API制限のみでも一定の効果があります。

これらの制限設定は、GCPのAPIキー管理ページで、作成したキーを選択して編集することで行えます。

APIキーの取得はこれで完了です。次に、取得したAPIキーをGemini CLIで利用できるように設定します。

4. Gemini CLIの設定

Gemini CLIは、APIキーを以下のいずれかの方法で認識します。

  1. 環境変数: GEMINI_API_KEY という名前の環境変数にAPIキーを設定する。
  2. 設定ファイル: ~/.config/gemini/config.json ファイルにJSON形式でAPIキーを記述する。

一般的には、環境変数による設定が推奨されます。 その理由は、APIキーがファイルシステム上のプレーンテキストファイルとして保存されるリスクを避けられること、そしてシェル設定ファイル(.bashrcなど)に記述しておけば、ターミナルを開くたびに自動的にロードされるため手軽だからです。

ここでは、環境変数による設定方法を詳しく解説し、設定ファイルによる方法も簡単に触れます。

4.1 環境変数による設定 (推奨)

この方法では、取得したAPIキーを GEMINI_API_KEY という名前のシェル環境変数に設定します。

ステップ1: シェル設定ファイルの編集

Goのインストール時に編集したのと同様に、ホームディレクトリにあるシェル設定ファイル(例: ~/.bashrc または ~/.zshrc)をテキストエディタで開きます。

bash
nano ~/.bashrc

ステップ2: 環境変数の追加

ファイルの末尾(またはGoの環境変数設定の近くなど、分かりやすい場所)に、以下の行を追加します。YOUR_API_KEY の部分を、ステップ3で取得した実際のAPIキーの文字列に置き換えてください。

“`bash

Gemini API key

export GEMINI_API_KEY=”YOUR_API_KEY”
“`

APIキーは非常に長い文字列です。コピー&ペースト時に誤りがないように注意してください。また、キー全体をダブルクォート (") で囲むことを忘れないでください。

ファイルを保存してエディタを終了します。

ステップ3: 環境設定の反映

設定を現在のターミナルセッションに反映させるには、Goの時と同様に source コマンドを使用します。

bash
source ~/.bashrc

これにより、GEMINI_API_KEY 環境変数が現在のシェルに設定されます。今後新しくターミナルを開いた際は、自動的にこの環境変数がロードされます。

ステップ4: 設定の確認

環境変数が正しく設定されたかを確認するには、以下のコマンドを使用します。

bash
echo $GEMINI_API_KEY

設定したAPIキーの文字列が表示されれば成功です。もし何も表示されない場合や、設定したキーと異なる場合は、.bashrc ファイルの内容や source コマンドの実行を確認してください。

これでGemini CLIがAPIキーを認識できるようになりました。

4.2 設定ファイルによる設定 (代替方法)

環境変数ではなく、設定ファイルにAPIキーを記述することも可能です。この方法は、特定のプロジェクトや環境でのみ異なるAPIキーを使用したい場合などに役立つ可能性がありますが、ファイルとして保存されるため取り扱いには十分注意が必要です。

ステップ1: 設定ディレクトリの作成

Gemini CLIの設定ファイルは通常、ユーザーのホームディレクトリ内の隠しディレクトリに保存されます。設定ファイルを配置するディレクトリを作成します。

bash
mkdir -p ~/.config/gemini

mkdir -p コマンドは、親ディレクトリ(.config)が存在しない場合でも同時に作成してくれます。

ステップ2: 設定ファイルの作成と編集

作成したディレクトリ内に config.json という名前で設定ファイルを作成し、テキストエディタで開きます。

bash
nano ~/.config/gemini/config.json

ファイルに以下の内容をJSON形式で記述します。YOUR_API_KEY の部分を、取得したAPIキーの文字列に置き換えてください。

json
{
"apiKey": "YOUR_API_KEY"
}

JSON形式なので、キー名 (apiKey)、コロン (:), 値 ("YOUR_API_KEY"), そして全体を波括弧 ({}) で囲むことを忘れないでください。値は文字列なのでダブルクォートで囲みます。

ファイルを保存してエディタを終了します。

ステップ3: ファイル権限の設定(重要)

設定ファイルにはAPIキーという機密情報が含まれています。他のユーザーから読み取られないように、ファイルの権限を適切に設定することが非常に重要です。所有者のみが読み書きできるように設定します。

bash
chmod 600 ~/.config/gemini/config.json

このコマンドにより、ファイル所有者には読み書き権限 (6) が、その他のユーザーには権限なし (00) が与えられます。

ステップ4: 設定の確認

設定ファイルが正しく読み込まれるかを確認するには、Gemini CLIの config list コマンドを使用します。

bash
gemini config list

設定ファイルに記述したAPIキーがマスクされて表示されれば成功です。

apiKey: ****************YOUR_API_KEY_SUFFIX*
model: gemini-pro
temperature: 0.9
maxTokens: 256
topP: 1
topK: 1

もし環境変数と設定ファイルの両方にAPIキーが設定されている場合、環境変数が優先されます。Gemini CLIはまず環境変数 GEMINI_API_KEY を探し、見つからなければ設定ファイル (~/.config/gemini/config.json) を読み込みます。

これでGemini CLIを利用するための設定は完了です。いよいよ基本的なコマンドを使ってみましょう。

5. Gemini CLIの基本コマンド

Gemini CLIは、様々な機能を持つサブコマンドを提供しています。コマンドの使い方は、ヘルプオプション (--help または -h) で確認できます。

  • 全体のヘルプ: gemini --help または gemini -h
  • 特定のサブコマンドのヘルプ: gemini [command] --help または gemini [command] -h (例: gemini generate --help)

以下に、主要な基本コマンドとその使い方を解説します。

5.1 テキスト生成 (gemini generate)

最も頻繁に使用されるコマンドです。プロンプト(指示や質問)を与えて、Geminiモデルにテキストを生成させます。

基本構文:

bash
gemini generate "あなたのプロンプト"

プロンプトはダブルクォートで囲むのが安全です。特にスペースや特殊文字を含む場合に必須です。

例1: 簡単な質問

「日本の首都はどこですか?」と質問する。

bash
gemini generate "日本の首都はどこですか?"

想定される出力:

日本の首都は東京です。

例2: より複雑な生成タスク

「犬と猫の違いについて、子供にもわかるように説明してください。」というプロンプトで説明を生成する。

bash
gemini generate "犬と猫の違いについて、子供にもわかるように説明してください。"

想定される出力:

“`
犬と猫は、どちらも人気のペットですが、いろいろな違いがあります。

見た目の違い

  • 体の形: 犬はいろんな大きさと形がいますが、猫は比較的小さくてしなやかな体つきの子が多いです。
  • 顔: 犬はいろんな鼻の形がありますが、猫は丸い顔と短い鼻の子が多いです。
  • しっぽ: 犬はブンブン振って気持ちを表しますが、猫はピーンと立てたり、ゆっくり振ったりします。

鳴き声の違い

  • 犬は「ワンワン!」と吠えます。いろんな声で、気持ちを表します。
  • 猫は「ニャーニャー」と鳴きます。ゴロゴロとのどを鳴らすこともあります。

性格の違い

  • 犬はとっても人に懐いて、遊ぶのが大好き!お散歩も喜びます。
  • 猫は気まぐれで、自分のペースで過ごすのが好きです。お昼寝も大好き!

生活の違い

  • 犬はお散歩が必要ですが、猫はお家の中で過ごすことができます。
  • 犬はご飯をペロリと食べますが、猫はちょっとずつ食べることもあります。

まとめ

犬も猫も、それぞれに魅力があってかわいい動物です。どちらを飼うかは、その子の性格や、お世話ができるかどうかで決まりますね。
“`

複数行のプロンプト:

長いプロンプトや、整形されたテキストをプロンプトとして与えたい場合は、Here Document (heredoc) 構文が便利です。

“`bash
gemini generate <<EOF
以下の条件を満たす短編小説のあらすじを書いてください。
– 主人公は普通のサラリーマン
– ある日突然、猫と話せるようになる
– それによって彼の日常がどう変わるか

あらすじ:
EOF
“`

<<EOF ... EOF の間に書かれた内容が、まとめて gemini generate コマンドの標準入力に渡され、プロンプトとして扱われます。

主なオプション:

gemini generate コマンドには、生成結果を制御するための様々なオプションがあります。

  • --temperature value : 生成されるテキストのランダム性(創造性)を制御します。値が低いほど予測可能で保守的な出力になり、高いほど多様で創造的な出力になります。0.0から1.0の間の値を指定します(デフォルトは0.9)。
    例: gemini generate --temperature 0.5 "夕食のアイデアをいくつか教えてください。"
  • --max-tokens value : 生成されるレスポンスの最大トークン数(単語や記号のまとまり)を指定します。レスポンスが途中で切れてしまうのを防いだり、逆に長すぎるレスポンスを抑制したりできます。
    例: gemini generate --max-tokens 100 "アインシュタインの相対性理論について簡単に説明してください。"
  • --top-p value : nucleus sampling と呼ばれる手法で、生成されるトークンの候補を確率の累積和に基づいてフィルタリングします。0.0から1.0の間で指定し、値が高いほど多様性が増します(デフォルトは1.0)。
  • --top-k value : top-k sampling と呼ばれる手法で、確率の高い上位 k 個のトークン候補から次のトークンを選択します。値が大きいほど多様性が増します(デフォルトは1.0、これは実質的にtop-k samplingを無効にすることを意味します。通常、0より大きい整数を指定します。例えば10を指定すると、上位10候補から選ばれます)。
  • --format value : 出力フォーマットを指定します。例えば json を指定すると、JSON形式で詳細な情報を含むレスポンスが得られます。
    例: gemini generate --format json "Hello, world!"
  • --stream : レスポンスをトークンごとにストリーミング出力します。レスポンスが長い場合に、全体の生成を待たずに途中経過を見ることができます。インタラクティブなアプリケーションなどで有効です。
    例: gemini generate --stream "長い物語を生成してください。"
  • --chat : 対話(チャット)形式でテキストを生成します。後述します。

5.2 チャット形式の対話 (gemini generate --chat)

--chat オプションを使用すると、Geminiモデルと連続した対話を行うことができます。モデルは以前のターンでの会話内容を記憶しているかのように応答を生成します。

基本構文:

bash
gemini generate --chat

このコマンドを実行すると、対話セッションが開始されます。プロンプトを入力してEnterキーを押すと、モデルが応答を生成します。対話を終了するには、Ctrl+D(EOF)を押します。

例: 対話セッション

bash
$ gemini generate --chat
You: こんにちは、Geminiさん。
Gemini: こんにちは!どのようにお手伝いできますか?
You: 宇宙について何か面白いことを教えてください。
Gemini: もちろんです。宇宙には、私たちの太陽系がある天の川銀河以外にも、数千億個もの銀河が存在すると推定されています。そして、それぞれの銀河にはさらに数千億個の星が存在する可能性があります。想像もつかないほど広大ですね!
You: すごいですね。ブラックホールについてもう少し詳しく教えてもらえますか?
Gemini: ブラックホールは、非常に密度の高い天体で、その重力が非常に強いため、光さえも脱出できません。事象の地平線と呼ばれる境界を一度越えてしまうと、二度と戻ってくることはできません。ブラックホールには、恒星が崩壊してできる恒星ブラックホールと、銀河の中心にある巨大な超大質量ブラックホールの2種類があります。
You: ありがとうございます。勉強になりました。
Gemini: どういたしまして!宇宙は本当に fascinating ですよね。他に何か知りたいことはありますか?
You: [Ctrl+Dを押して終了]

--chat オプションを使用する場合、Gemini CLIは内部的に対話履歴を管理し、各ターンで履歴全体をモデルに渡して応答を生成させます。これにより、文脈を踏まえた自然な対話が可能になります。

チャット履歴の管理:

デフォルトでは、--chat セッションは終了すると履歴がクリアされます。しかし、Gemini CLIは履歴をファイルに保存し、後でロードする機能も持っています。これは、長時間の対話や、特定の対話状態を保存しておきたい場合に便利です。詳細については、gemini generate --chat --help を参照するか、Gemini CLIのドキュメントを確認してください。

5.3 埋め込み (Embeddings) の生成 (gemini embed)

テキストの埋め込み(Embedding)とは、単語や文章の意味を数値ベクトルとして表現したものです。意味的に近いテキストは、ベクトル空間上で近くに配置されるという性質を持ちます。埋め込みは、検索、クラスタリング、分類、レコメンデーションなど、様々な自然言語処理タスクの基盤となります。

gemini embed コマンドを使用すると、指定したテキストの埋め込みベクトルを生成できます。

基本構文:

bash
gemini embed "埋め込みたいテキスト"

例1: 単一テキストの埋め込み

「猫はかわいい」というテキストの埋め込みを生成する。

bash
gemini embed "猫はかわいい"

想定される出力:

[-0.0034558374 -0.032227716 ... 0.04578971] # 非常に長い数値ベクトルの配列が出力されます

出力されるベクトルは非常に長いです。デフォルトでは、各要素がスペース区切りで表示されます。

例2: 複数テキストの埋め込み

複数のテキストの埋め込みを一度に生成することも可能です。各テキストは改行で区切って標準入力から渡します。

bash
gemini embed <<EOF
犬が好きです
猫が好きです
プログラミングは楽しい
EOF

想定される出力:

[0.012345 -0.06789 ...] # 「犬が好きです」のベクトル
[-0.023456 0.07890 ...] # 「猫が好きです」のベクトル
[0.034567 0.08901 ...] # 「プログラミングは楽しい」のベクトル

各行に対応するベクトルが出力されます。

主なオプション:

  • --format value : 出力フォーマットを指定します。json を指定すると、各テキストとそれに対応する埋め込みベクトルを含むJSON配列が出力されます。他のシステムと連携させる場合に便利です。
    例: gemini embed --format json "りんご" "みかん"
    想定される出力 (JSON):
    json
    [
    {
    "text": "りんご",
    "embedding": [0.01122, -0.03456, ...]
    },
    {
    "text": "みかん",
    "embedding": [0.02345, -0.05678, ...]
    }
    ]
  • --model value : 使用する埋め込みモデルを指定します。Geminiモデルには、テキスト生成モデルとは別に埋め込み専用のモデルが用意されています。デフォルトは embedding-001 など、適切なモデルが使用されます。特定のモデルを使用したい場合に指定します。
    例: gemini embed --model embedding-001 "テキスト"

埋め込みは、テキスト間の類似度を計算したり、テキストデータを機械学習モデルに入力したりする際に非常に役立ちます。

5.4 モデル情報の取得 (gemini models)

利用可能なGeminiモデルに関する情報を取得できます。どのモデルがテキスト生成や埋め込みに対応しているかなどを確認する際に便利です。

基本構文:

bash
gemini models [command]

models サブコマンドには、さらに以下のサブコマンドがあります。

  • list: 利用可能なモデルの一覧を表示します。
  • get [model_name]: 特定のモデルの詳細情報を表示します。

例1: 利用可能なモデル一覧の表示

bash
gemini models list

想定される出力:

Name Description
gemini-pro Generative model suitable for text and code.
gemini-pro-vision Multimodal model that accepts text and images.
embedding-001 Embedding model used for text embeddings.
...

出力されるモデル名や種類は、APIのアップデートによって変更される可能性があります。Description を見て、テキスト生成に使いたいのか(例: gemini-pro)、埋め込みに使いたいのか(例: embedding-001)などを判断できます。

例2: 特定モデルの詳細情報表示

gemini-pro モデルの詳細情報を確認する。

bash
gemini models get gemini-pro

想定される出力:

Name: gemini-pro
Description: Generative model suitable for text and code.
Input Methods: generateText, embedContent
Output Methods: generateText, embedContent
Supported Generation Methods: generateText, embedContent
Max Input Tokens: 30720
Max Output Tokens: 2048
Supported Harm Categories: HARM_CATEGORY_SEXUALLY_EXPLICIT, HARM_CATEGORY_HATE_SPEECH, HARM_CATEGORY_HARASSMENT, HARM_CATEGORY_DANGEROUS_CONTENT
Version: 001
DisplayName: Gemini Pro
Topic: text

この出力から、モデルの名前、説明、サポートする入力/出力形式(generateText, embedContent)、最大入力/出力トークン数、コンテンツフィルタリングに関する情報などが確認できます。

5.5 設定の管理 (gemini config)

Gemini CLIの設定を確認、設定、削除するためのコマンドです。主にAPIキー以外の設定(デフォルトモデル、温度など)を管理する場合に使用します。ただし、APIキーは環境変数または設定ファイルで管理するのが一般的であるため、gemini config set でAPIキーを設定することはあまりありません(環境変数やファイル設定が優先されるため)。

基本構文:

bash
gemini config [command]

config サブコマンドには、以下のサブコマンドがあります。

  • list: 現在の設定値の一覧を表示します。
  • get [key]: 特定の設定キーの値を取得します。
  • set [key] [value]: 特定の設定キーに値を設定します。
  • unset [key]: 特定の設定キーの設定を削除します。

例1: 現在の設定値の表示

bash
gemini config list

想定される出力:

apiKey: ****************YOUR_API_KEY_SUFFIX* # 環境変数から読み込まれている場合、このように表示されます
model: gemini-pro
temperature: 0.9
maxTokens: 256
topP: 1
topK: 1

APIキーはセキュリティのために一部がマスクされて表示されます。

例2: デフォルトモデルの設定

gemini generate コマンドで明示的に --model オプションを指定しない場合に使用されるデフォルトモデルを設定します。例えば、Visionモデルをデフォルトにしたい場合(あまり一般的ではありませんが)。

bash
gemini config set model gemini-pro-vision

例3: デフォルト温度の設定

生成時のデフォルト温度を0.7に変更する。

bash
gemini config set temperature 0.7

例4: 設定値の取得

デフォルトモデルの設定値を確認する。

bash
gemini config get model

例5: 設定値の削除

デフォルト温度の設定を削除し、CLIのデフォルト値に戻す。

bash
gemini config unset temperature

これらの設定は、~/.config/gemini/config.json ファイルに書き込まれます。環境変数で設定した値は、config list で確認できますが、config set で変更することはできません(環境変数が優先されるため)。

5.6 バージョン情報の確認 (gemini version)

インストールされているGemini CLIのバージョン情報を表示します。

基本構文:

bash
gemini version

想定される出力:

gemini version 0.1.0 # 例

問題が発生した場合や、特定の機能が利用可能か確認したい場合に、バージョン情報が役立ちます。

6. 実践的な利用例

Gemini CLIは、シェルスクリプトや他のコマンドと組み合わせることで、様々なタスクを自動化したり、効率化したりできます。ここではいくつかの実践的な利用例を紹介します。

6.1 シェルスクリプトとの連携 (パイプライン処理)

標準入出力とパイプ (|) を活用することで、Gemini CLIの出力を他のコマンドの入力として渡したり、他のコマンドの出力をGemini CLIの入力として渡したりできます。

例1: ファイル内容の要約

長いテキストファイル(例: report.txt)の内容を読み込み、その要約をGeminiモデルに生成させる。

bash
cat report.txt | gemini generate "以下のレポート内容を3文で要約してください。"

  • cat report.txt: ファイルの内容を標準出力に出力します。
  • |: パイプ。前のコマンドの標準出力を、次のコマンドの標準入力に渡します。
  • gemini generate "...": 標準入力から受け取ったテキストと指定したプロンプトを組み合わせてモデルに渡し、要約を生成させます。

例2: コードのコメント生成

Pythonファイル(例: my_script.py)の各関数にDocstring(説明コメント)を生成させる。

bash
cat my_script.py | gemini generate "以下のPythonコードの各関数に、その機能と引数、戻り値を説明するDocstringを追加してください。コードはそのまま出力してください。" > my_script_commented.py

  • cat my_script.py: 元のコードを標準出力に出力。
  • | gemini generate "...": コードをプロンプトの一部としてモデルに渡し、コメント付きのコードを生成させる。
  • > my_script_commented.py: 生成されたコードを新しいファイルにリダイレクトして保存。

この例では、モデルがコード構造を維持しつつコメントを追加する能力に依存します。複雑なコードや特殊なフォーマットの場合、期待通りにならないこともあります。

例3: コマンド出力の整形

あるコマンド(例: df -h)の出力を、人間が読みやすいように整形・説明させる。

bash
df -h | gemini generate "以下のコマンド出力はディスク使用状況を示しています。それぞれの列が何を表しているか、簡単な表形式でまとめて説明してください。"

  • df -h: ディスク使用状況を人間が読みやすい形式で出力。
  • | gemini generate "...": コマンド出力をプロンプトの一部としてモデルに渡し、説明を生成させる。

6.2 ファイルの要約や翻訳

複数のファイルを一度に処理したり、特定の種類のファイルを処理したりするシェルスクリプトを作成できます。

例: ディレクトリ内の全テキストファイルを要約

カレントディレクトリにある全ての .txt ファイルを個別に読み込み、それぞれの内容を要約して出力する。

bash
for file in *.txt; do
if [ -f "$file" ]; then
echo "--- ファイル: $file の要約 ---"
cat "$file" | gemini generate "以下のテキストファイルの内容を簡潔に要約してください。"
echo "" # 要約の後に空行を入れる
fi
done

  • for file in *.txt; do ... done: カレントディレクトリにある .txt で終わるファイルを一つずつ file 変数に代入してループ処理。
  • if [ -f "$file" ]; then ... fi: $file が通常のファイルであることを確認。
  • echo "--- ファイル: $file の要約 ---": どのファイルの要約かを示す見出しを出力。
  • cat "$file" | gemini generate "...": ファイル内容を読み込み、Gemini CLIにパイプして要約を生成。
  • echo "": ファイルごとの出力を見やすくするための空行。

6.3 簡単なチャットボットの作成

gemini generate --chat は対話型ですが、それを非対話的に利用することも可能です。expect コマンドなどと組み合わせることで、簡単なチャットボットのようなものを作成できます。

例: 固定の質問に応答するスクリプト

(これはあくまで概念的な例であり、実用的なチャットボットにはより複雑な状態管理やエラー処理が必要です)

“`bash

!/bin/bash

対話セッションを開始し、最初のプロンプトを送る

echo “こんにちは、どうしましたか?” | gemini generate –chat
“`

この例は単純すぎますが、より高度なスクリプトでは、ユーザー入力に応じて次に送るプロンプトを動的に生成したり、対話履歴をファイルに保存・ロードしたりすることで、簡単な対話アプリケーションを構築できます。

6.4 コード生成やデバッグ支援

プロンプトを工夫することで、コードスニペットの生成、既存コードの問題点の指摘、エラーメッセージの説明などを依頼できます。

例1: 特定言語のコード生成

「指定されたタスクを実行するPythonコードを生成する」というプロンプト。

bash
gemini generate "ファイルのリストを受け取り、それぞれのファイルの行数をカウントしてファイル名と行数を出力するPythonスクリプトを書いてください。"

例2: エラーメッセージの説明

遭遇したエラーメッセージをGeminiモデルに渡して、原因や解決策を説明させる。

“`bash
error_message=”Traceback (most recent call last): File \”script.py\”, line 5, in print(x / 0) ZeroDivisionError: division by zero”

gemini generate “このPythonのエラーメッセージは、何が原因で発生していますか?考えられる解決策を教えてください。\n\nエラーメッセージ:\n$error_message”
“`

変数にエラーメッセージを格納しておき、それをプロンプトに含めることで、より詳細な情報をモデルに提供できます。

これらの例はGemini CLIの可能性の一部を示しています。シェルスクリプトの強力さと組み合わせることで、様々な自動化や効率化のタスクに応用できるでしょう。

7. 高度なトピック

7.1 プロキシ設定

企業内ネットワークなど、インターネットアクセスにプロキシサーバーを経由する必要がある環境では、Gemini CLIがAPIエンドポイントに接続できるよう、プロキシ設定を行う必要があります。

Gemini CLI(およびGo言語でビルドされた多くのプログラム)は、標準的な環境変数 HTTP_PROXYHTTPS_PROXYNO_PROXY を認識します。

  • HTTP_PROXY: HTTPプロトコルのリクエストに使用するプロキシサーバーのアドレス。例: http://proxy.example.com:8080
  • HTTPS_PROXY: HTTPSプロトコルのリクエストに使用するプロキシサーバーのアドレス。通常はこちらを設定します。例: http://proxy.example.com:8080 (HTTPSトラフィックも多くの場合HTTPプロキシ経由でトンネルされます) または https://proxy.example.com:8443
  • NO_PROXY: プロキシを経由しないホストのリスト(カンマ区切り)。例: localhost,127.0.0.1,.example.com

これらの環境変数をシェル設定ファイル(~/.bashrcなど)に追記し、source コマンドで反映させることで、Gemini CLIがプロキシを経由して通信するようになります。

“`bash

Proxy settings (if needed)

export HTTPS_PROXY=”http://your_proxy_server:port”
export HTTP_PROXY=”http://your_proxy_server:port” # HTTPS_PROXYと同じで良いことが多い

export NO_PROXY=”localhost,127.0.0.1″ # プロキシを経由しないホスト

“`

プロキシ設定後、gemini models list など簡単なコマンドを実行して、正常にAPIに接続できるか確認してください。

7.2 レート制限とクォータ

Gemini APIには、利用量に関する制限(レート制限とクォータ)があります。

  • レート制限: 1分あたりに送信できるリクエスト数。
  • クォータ: 1日あたり、または1ヶ月あたりの最大利用量(トークン数など)。

これらの制限を超えると、APIからの応答としてエラーが返されます。CLIから利用している場合、以下のようなエラーメッセージが表示される可能性があります。

  • Resource has been exhausted (クォータ超過)
  • Rate limit exceeded (レート制限超過)

これらのエラーが発生した場合、しばらく待ってから再試行するか、Google Cloud ConsoleのAPI & Servicesダッシュボードで現在の利用状況と制限を確認してください。必要であれば、クォータの引き上げを申請することも可能です。

CLIからの連続的な利用(特にスクリプト内でのループ処理など)を行う場合は、API呼び出しの間に適切な遅延を入れる(sleep コマンドなどを使用する)ことで、レート制限に抵触する可能性を減らすことができます。

7.3 コスト管理

Gemini APIの利用には費用がかかる場合があります。無償枠が提供されていますが、それを超えると従量課金が発生します。CLIから利用する場合も、API呼び出し回数や処理したトークン数に応じて費用が発生します。

費用を確認するには、Google Cloud ConsoleのBillingセクションを参照してください。CLI自体にはコストを表示する機能はありません。

無償枠を超えた利用を予期しない課金を避けるためには、Google Cloud Consoleで予算アラートを設定したり、APIキーに利用上限を設定したりすることを検討してください。また、gemini generate --max-tokens オプションを使用して、レスポンスの最大長を制限することも、コスト管理の一助となります。

7.4 CLIのカスタマイズ

Gemini CLIの挙動は、設定ファイル(~/.config/gemini/config.json)や環境変数によってある程度カスタマイズ可能です。デフォルトモデルやデフォルト温度などを設定することで、コマンドラインでの入力を簡略化できます。

より高度なカスタマイズや、独自の処理を組み込みたい場合は、Gemini CLIを直接フォークして改造するか、またはGo言語のGenerative AIクライアントライブラリを直接使用して独自のコマンドラインツールを作成することを検討することになります。

8. トラブルシューティング

Gemini CLIのインストールや使用中に遭遇する可能性のある一般的な問題とその解決策をいくつか挙げます。

  • gemini: command not found:
    • 原因: Gemini CLIの実行ファイルがシステムの PATH 環境変数に含まれていないディレクトリにある。
    • 解決策:
      • go install コマンドがエラーなく完了したか確認する。
      • go env GOPATH$GOPATH が正しく設定されているか確認する。
      • echo $PATH$GOPATH/binPATH に含まれているか確認する。含まれていない場合は、.bashrc (または使用しているシェルの設定ファイル) に export PATH=$PATH:$GOPATH/bin を追記し、source コマンドで反映させるか、ターミナルを再起動する。
      • ls $GOPATH/bingemini という名前の実行ファイルが存在するか確認する。存在しない場合は go install ... コマンドを再実行する。
  • Go command not found / go version: command not found:
    • 原因: Go言語が正しくインストールされていないか、Goの実行ファイルへのパスが PATH 環境変数に含まれていない。
    • 解決策:
      • Goのインストール手順(セクション2.1)を見直し、/usr/local/go/bin にGoのバイナリが存在することを確認する。
      • .bashrcexport PATH=$PATH:/usr/local/go/bin が正しく追記されているか確認する。
      • source .bashrc を実行するか、ターミナルを再起動する。
  • API key not set. Please set the GEMINI_API_KEY environment variable or configure it in ~/.config/gemini/config.json:
    • 原因: APIキーが設定されていない。
    • 解決策:
      • APIキーを取得したか確認する(セクション3)。
      • GEMINI_API_KEY 環境変数が正しく設定されているか (echo $GEMINI_API_KEY で確認) し、source .bashrc で反映したか確認する。
      • 設定ファイル (~/.config/gemini/config.json) を使用する場合は、ファイルが存在し、JSON形式が正しく、APIキーが記述されているか確認する。ファイル権限が 600 に設定されているか確認する。
  • API関連のエラー (例: 認証失敗, 無効なAPIキー):
    • 原因: 提供したAPIキーが間違っている、無効になっている、または権限がない。
    • 解決策:
      • APIキーの文字列がコピー&ペースト時に破損していないか、正確であるか再度確認する。
      • Google Cloud ConsoleのAPI & Servicesダッシュボードで、該当のAPIキーが有効であり、Generative Language APIへのアクセスが許可されているか確認する。必要であれば新しいAPIキーを生成して試す。
      • 無料利用枠を超過していないか確認する。
  • Resource has been exhausted または Rate limit exceeded:
    • 原因: APIのクォータまたはレート制限を超過した。
    • 解決策:
      • しばらく時間を置いてから再試行する。
      • Google Cloud Consoleで現在の利用状況と制限を確認する。必要であればクォータの引き上げを申請する。
      • スクリプト内で連続して呼び出す場合は、呼び出し間に遅延 (sleep) を入れる。
  • プロンプトに対して期待通りの出力が得られない:
    • 原因: プロンプトが不明確、モデルが要求を理解できなかった、モデルの制限、または生成パラメータ(温度、top-k, top-p)の設定。
    • 解決策:
      • プロンプトの表現をより具体的に、明確にする。どのような形式で、どのような情報を含めてほしいかを詳細に記述する。
      • --temperature オプションを調整してみる。より保守的な出力が必要なら値を小さく(0.0に近い)、より創造的な出力が必要なら値を大きく(1.0に近い)してみる。
      • --max-tokens オプションで、十分な長さのレスポンスが生成されるように設定する。
      • 別のGeminiモデル (gemini models list で確認) が利用可能であれば、そちらを試してみる。
      • 場合によっては、プロンプト自体に問題がある(例: 不適切な内容、非常に複雑すぎる要求)。
  • JSON出力が壊れている、または不正な形式である (--format json 使用時):
    • 原因: モデルからのレスポンスが期待通りに整形されなかった、またはCLIが出力を正しくパースできなかった。
    • 解決策:
      • プロンプトに「JSON形式で出力してください」といった明確な指示を含めることで、モデルの出力形式を誘導できる場合がある。
      • プロンプトによってはモデルがJSON形式で応答できない場合があるため、プロンプトを見直す。
      • CLIのバージョンが古い場合はアップデートを検討する。
  • permission denied:
    • 原因: Gemini CLI実行ファイルや設定ファイルに対するファイル権限がない。
    • 解決策:
      • gemini コマンドの場合、$GOPATH/bin/gemini ファイルに実行権限 (chmod +x $GOPATH/bin/gemini) があるか確認する。
      • 設定ファイルの場合、~/.config/gemini/config.json ファイルに読み取り権限 (chmod 600 ~/.config/gemini/config.json など) があるか確認する。

これらのトラブルシューティングのヒントが、問題解決の一助となれば幸いです。解決しない場合は、Google AI Studioのヘルプドキュメントやコミュニティフォーラムを参照することも有効です。

9. まとめ

本記事では、Ubuntu環境に焦点を当て、Gemini CLIのインストールから基本的な使い方、そして実践的な応用例や高度なトピック、トラブルシューティングまでを詳細に解説しました。

Go言語のインストールから始まり、Gemini CLI自体のインストール、そしてAPIキーの取得と環境変数または設定ファイルによる設定方法を学びました。これにより、コマンドラインからGeminiモデルを利用するための基盤を構築しました。

gemini generate コマンドによるテキスト生成、gemini generate --chat による対話、gemini embed による埋め込み生成、gemini models によるモデル情報取得、gemini config による設定管理といった主要な基本コマンドの使い方を、具体的な例を交えながら習得しました。特に、--temperature, --max-tokens, --format, --stream といった便利なオプションについても詳しく解説しました。

さらに、シェルスクリプトとの連携、ファイル処理、コード関連のタスクなど、Gemini CLIを実際のワークフローに組み込むための実践的な利用例を紹介しました。これにより、単なる対話ツールとしてだけでなく、自動化や効率化のための強力なツールとしてGemini CLIを活用できるイメージを持っていただけたかと思います。

プロキシ設定、レート制限とクォータ、コスト管理といった高度なトピックにも触れ、大規模な利用や特定のネットワーク環境での注意点についても言及しました。最後に、遭遇しやすいトラブルとその解決策をリストアップし、スムーズな利用をサポートするための情報を提供しました。

Gemini CLIは、Googleの強力なGeminiモデルにコマンドラインから手軽にアクセスできる優れたツールです。本記事で解説した内容を参考に、ぜひご自身の環境でGemini CLIを試してみてください。シェルスクリプトや他のツールと組み合わせることで、AIモデルの可能性をさらに引き出し、日々の開発や作業を効率化できるでしょう。

AI技術は日々進化しています。GeminiモデルやCLIツールも今後機能が追加されたり、改善されたりしていくことが予想されます。最新の情報は、公式ドキュメント(https://pkg.go.dev/github.com/google/generative-ai-go/cmd/gemini など)を参照することをお勧めします。

Gemini CLIを活用し、AIとの対話やAIを活用した開発を楽しんでください!


コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

上部へスクロール