はじめに
前回の記事では、Gemini APIのFile Search Toolを使ったRAGの構築方法を紹介しました。NotebookLM並みの性能を持つRAGを簡単に構築できて素晴らしいのですが、ファイルストア管理機能が無いのが手間でした。
そこで今回は、Gemini FileStoreをターミナルから簡単に管理できるCLIツール「genai-fs」 を作成したので紹介します。
genai-fsとは
genai-fsは、Gemini FileStore APIをターミナルUIで操作できるCLIツールです。
主な機能
- ストア管理: FileSearchストアの作成・一覧表示・削除
- ドキュメント管理: ファイルのアップロード・一覧表示・削除
- インタラクティブUI: キーボードショートカットで直感的に操作
- ファイルブラウザ: アップロードするファイルをターミナル上で選択可能
インストール
npx/bunxで直接実行(インストール不要)
GEMINI_API_KEY=your_api_key npx genai-fs
or
GEMINI_API_KEY=your_api_key bunx genai-fs
グローバルインストール
# npm
npm install -g genai-fs
# bun
bun add -g genai-fs
インストール後は、環境変数を設定して実行します。.envでも設定できます。
export GEMINI_API_KEY=your_api_key_here
genai-fs
APIキーが設定されていない場合でも、起動時に入力画面が表示されます。
使い方
ストア一覧
起動すると、既存のFileSearchストア一覧が表示されます。
Gemini FileStore Manager v1.0.9
AIza...XXXX
Name Created Updated
❯ My Test Store 2024/12/29 10:00:00 2024/12/29 10:30:00
Another Store 2024/12/28 15:00:00 2024/12/28 15:00:00
Up/Down: Select Enter: Open i: Info n: New d: Delete q: Quit
| キー | 操作 |
|---|---|
| Up/Down | ストアを選択 |
| Enter | ストアを開く(ドキュメント一覧へ) |
| i | ストア詳細を表示 |
| n | 新規ストア作成 |
| d | ストア削除 |
| q | 終了 |
ドキュメント一覧
ストアを選択すると、そのストア内のドキュメント一覧が表示されます。
Gemini FileStore Manager v1.0.9
AIza...XXXX / My Test Store
Name Size Status Created
❯ document1.pdf 1.2 MB Active 2024/12/29 10:15:00
notes.md 45.3 KB Active 2024/12/29 10:20:00
data.xlsx 892.1 KB Pending 2024/12/29 10:30:00
Up/Down: Select Enter/i: Info u: Upload d: Delete Esc: Back q: Quit
| キー | 操作 |
|---|---|
| Up/Down | ドキュメントを選択 |
| Enter/i | ドキュメント詳細を表示 |
| u | ファイルをアップロード |
| d | ドキュメントを削除 |
| Esc | ストア一覧に戻る |
ファイルブラウザ
uキーを押すと、ファイルブラウザが起動します。ターミナル上でディレクトリを移動し、アップロードするファイルを選択できます。
Select a file:
Current path: /Users/username/Documents
❯ 📁 ..
📁 projects
📁 work
📄 report.pdf 2.5 MB
📄 presentation.pptx 8.1 MB
Up/Down: Select Enter: Confirm/Open Esc: Cancel
技術スタック
このツールは以下の技術で構築しています。
- ランタイム: Bun(Node.jsでも動作可能)
- UI: Ink + React
- API: @google/genai
InkはReactのコンポーネントモデルをターミナルUIに適用できるライブラリで、宣言的にCLIツールを構築できます。ちょっとリッチにしたくて今回初めて使ってみました。
実装的にはファイル選択を作ったりダイアログ的に出したりと便利なので、今後のコマンドラインツール系を作る時に使っても良いかなと思います。ただ、CLIですのでデバッグがめんどくさいですね(笑。
ぶつぶつ
Gemini File Search Toolは非常に強力なRAG機能なので、ストア管理できればだいぶ便利に使えるかと思います。興味があればお試しください!
リンク
- GitHub: https://github.com/bellx2/genai-fs
- npm: https://www.npmjs.com/package/genai-fs
- 前回の記事: https://qiita.com/bellx2/items/d4830d32076fef90e287
- Gemini File Search API: https://ai.google.dev/api/file-search/file-search-stores