普段、Gemini CLIは gemini
のまま使うことが多いだろう。
すぐに単発で使う場合は gemini -p
でプロンプトを指定して使うことになるが、たまたま今日やったら、エラーでもなく次のメッセージが表示されるのみで実行されなかったので、自分の忘備録として対処法を記載しておく。
現象
> gemini -p "今日の日付と曜日と時間を表示して
Loaded cached credentials
「Loaded cached credentials」というメッセージが出るのみで、プロンプトの内容は実行されず。
原因と対処
Gensparkに尋ねてみるといくつか考えられるらしい。
Loaded cached credentials. というメッセージが表示されるということは、認証自体は成功していて、Gemini CLIがユーザーのGoogleアカウントの認証情報をキャッシュできている状態。これは正常な動作とのこと。
ネットワーク接続の問題
IPv6周りの問題が多いようだ。特にNode.jsがIPv6を優先して接続しようとして失敗するパターン。
ちなみに gemini
単体のインタラクティブモードではまったくこの症状は起きない。
# shell
export NODE_OPTIONS="--dns-result-order=ipv4first"
gemini -p "今日の日付と曜日と時間を表示して。"
# powershell
NODE_OPTIONS="--dns-result-order=ipv4first"
gemini -p "今日の日付と曜日と時間を表示して。"
この NODE_OPTIONS="--dns-result-order=ipv4first"
を定義したら解決した。
相変わらず「Loaded cached credentials」は表示されるが、プロンプト自体は実行されるようになった。
当面の対応
毎回指定するのが面倒なので、次のようにすればいいだろう。
PowerShellプロファイルや .bashrcなどに書く
自分はWin11のPowerShellなので、とりあえず次のサンプル。
# PowerShellプロファイルを編集
notepad $PROFILE
# 以下の行を追加
$env:NODE_OPTIONS = "--dns-result-order=ipv4first"
バッチファイルにする
次の処理内容で、どこかパスの通ったフォルダに gemini2.batとか、mygemini.bat などとして保存する。
@echo off
set NODE_OPTIONS=--dns-result-order=ipv4first
gemini %*
終わりに
geminiをインタラクティブモードで使っていると気づきにくい今回の問題。
gemini -p で使われている方でもし同じ問題にぶつかったら、参考にしてみて欲しい。
もしもっと適切な解決方法が見つかったらぜひ教えていただけると幸いです。