gemini-cost-tracker
Version:
CLI tool to display token usage and costs for Gemini and Vertex AI
305 lines (226 loc) • 9.69 kB
Markdown
# gemini-cost-tracker
CLI tool to track token usage and costs for Gemini and Vertex AI
## 概要
gemini-cost-trackerは、Google CloudのGemini APIとVertex AIの利用状況とコストを簡単に追跡・確認できるコマンドラインツールです。
## 特徴
- 📊 トークン使用量の表示(入力・出力別)
- 💰 リアルタイムコスト計算(35+モデル対応)
- 📅 期間指定(今日・週・月・カスタム期間)
- 🔧 複数のフォーマット対応(テーブル・JSON・CSV・グラフ)
- 🌍 通貨変換対応(USD・JPY)
- 🔒 安全な認証情報管理
- 📝 構造化ログとエラーハンドリング
- ⚙️ 設定管理とバリデーション機能
- 🧪 リアルAPIデータとモックデータの両対応
## インストール
### npx使用(推奨)
```bash
npx gemini-cost-tracker@latest
```
### グローバルインストール
```bash
npm install -g gemini-cost-tracker
gemini-cost-tracker --help
```
## 初期設定
初回実行時に認証情報を設定してください:
```bash
npx gemini-cost-tracker@latest config
```
対話形式で以下の情報を入力します:
- Gemini API Key
- Google Cloud Project ID
- Google Cloud Service Account Key File(オプション)
### 環境変数での設定
環境変数でも認証情報を設定できます:
```bash
export GEMINI_API_KEY="your-api-key"
export GCP_PROJECT_ID="your-project-id"
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/service-account-key.json"
# ログレベル設定(optional)
export LOG_LEVEL="INFO" # ERROR, WARN, INFO, DEBUG
export LOG_FORMAT="text" # text, json
```
## 使用方法
### 基本的な使用例
```bash
# 今日の使用量を表示
npx gemini-cost-tracker@latest show
# 過去1週間の使用量を表示
npx gemini-cost-tracker@latest show --period week
# 過去1ヶ月の使用量を表示
npx gemini-cost-tracker@latest show --period month
# カスタム期間を指定
npx gemini-cost-tracker@latest show --period custom --start-date 2025-01-01 --end-date 2025-01-31
```
### フィルタリングオプション
```bash
# プロジェクト別に表示
npx gemini-cost-tracker@latest show --project my-project
# モデル別に表示
npx gemini-cost-tracker@latest show --model gemini-pro
# 日本円で表示
npx gemini-cost-tracker@latest show --currency JPY
# グラフ形式で表示
npx gemini-cost-tracker@latest show --format chart
# 週間データをグラフで表示
npx gemini-cost-tracker@latest show --period week --format chart
```
### データエクスポート
```bash
# JSONファイルにエクスポート
npx gemini-cost-tracker@latest export --format json --output usage-report.json
# CSVファイルにエクスポート
npx gemini-cost-tracker@latest export --format csv --output usage-report.csv
# 過去1ヶ月のデータをエクスポート
npx gemini-cost-tracker@latest export --period month --format json
```
## コマンドリファレンス
### `show` - 使用量とコストの表示
```bash
npx gemini-cost-tracker@latest show [options]
```
オプション:
- `-p, --period <period>`: 期間指定 (today|week|month|custom)
- `-s, --start-date <date>`: 開始日 (YYYY-MM-DD)
- `-e, --end-date <date>`: 終了日 (YYYY-MM-DD)
- `--project <project>`: プロジェクトID
- `--model <model>`: モデル名(35+モデルサポート)
- `-f, --format <format>`: 出力形式 (table|json|chart)
- `-c, --currency <currency>`: 通貨 (USD|JPY)
- `--real-data`: 実際のAPI使用データを取得(デフォルトはモックデータ)
### `export` - データのエクスポート
```bash
npx gemini-cost-tracker@latest export [options]
```
オプション:
- `-p, --period <period>`: 期間指定 (today|week|month|custom)
- `-s, --start-date <date>`: 開始日 (YYYY-MM-DD)
- `-e, --end-date <date>`: 終了日 (YYYY-MM-DD)
- `--project <project>`: プロジェクトID
- `--model <model>`: モデル名
- `-f, --format <format>`: エクスポート形式 (json|csv)
- `-o, --output <file>`: 出力ファイルパス
- `-c, --currency <currency>`: 通貨 (USD|JPY)
### `config` - 設定管理
```bash
npx gemini-cost-tracker@latest config [options]
```
オプション:
- `--set-gemini-key <key>`: Gemini APIキーを設定
- `--set-project <project>`: デフォルトプロジェクトIDを設定
- `--set-key-file <file>`: サービスアカウントキーファイルパスを設定
- `--show`: 現在の設定を表示
### `test` - 接続テスト
```bash
npx gemini-cost-tracker@latest test
```
認証情報とGoogle Cloud APIへの接続をテストします。
### `update-pricing` - 料金情報更新
```bash
npx gemini-cost-tracker@latest update-pricing [options]
```
オプション:
- `--dry`: プレビューモード(更新内容を表示のみ)
- `--report`: 料金比較レポートを生成
- `-o, --output <file>`: レポート出力ファイル
## サポート対象モデル(35+モデル)
### Gemini API Models
- **Gemini 2.5 Series**: `gemini-2.5-pro`, `gemini-2.5-flash`, `gemini-2.5-flash-lite`
- **Gemini 2.0 Series**: `gemini-2.0-flash`, `gemini-2.0-flash-lite`
- **Gemini 1.5 Series**: `gemini-1.5-pro`, `gemini-1.5-flash`, `gemini-1.5-flash-8b`
- **Classic Models**: `gemini-pro`, `gemini-pro-vision`
- **Extended Models**: `gemini-1.5-pro-extended`, `gemini-2.5-pro-extended`
- **Audio Models**: `gemini-2.5-flash-audio`, `gemini-2.5-flash-native-audio`
- **Specialized**: `gemini-2.5-flash-thinking`
### Vertex AI Models
- **PaLM 2 Text**: `text-bison-001`, `text-bison-002`
- **PaLM 2 Chat**: `chat-bison-001`, `chat-bison-002`
- **PaLM 2 Code**: `codechat-bison-001`, `codechat-bison-002`
- **Gemini on Vertex**: `gemini-1.5-pro-vertex`, `gemini-1.5-flash-vertex`, `gemini-2.5-pro-vertex`, `gemini-2.5-flash-vertex`
> 最新のモデル情報は `update-pricing` コマンドで自動更新されます。
## 料金情報
料金は2025年1月時点の公式価格に基づいて計算されます。最新の料金については、各サービスの公式ドキュメントをご確認ください。
- [Gemini API Pricing](https://ai.google.dev/pricing)
- [Vertex AI Pricing](https://cloud.google.com/vertex-ai/pricing)
## アーキテクチャ
リファクタリング後の新しいアーキテクチャ構成:
```
src/
├── types/index.ts # 型定義とErrorCode列挙型(26+エラーコード)
├── utils/
│ ├── constants.ts # アプリケーション定数
│ ├── errorHandler.ts # 集約エラーハンドリング
│ ├── logger.ts # 構造化ログシステム
│ └── validation.ts # 入力バリデーション
└── services/
└── config/
└── configManager.ts # 設定管理システム
```
### 主な改善点
- ⚙️ **エラーハンドリングの統一**: 26種類のErrorCodeで一貫したエラー管理
- 📝 **構造化ログ**: JSON/テキスト形式、コンテキスト対応
- 🛡️ **入力バリデーション**: 包括的なパラメータ検証
- 📁 **設定管理**: ファイルベースの設定とデフォルト値管理
## トラブルシューティング
### 認証エラー
```
Error: AUTH_MISSING_GEMINI_KEY - Gemini API key not configured
```
→ `gemini-cost-tracker config`で認証情報を設定してください。
### プロジェクトアクセスエラー
```
Error: AUTH_MISSING_GCP_PROJECT - Google Cloud Project ID not configured
```
→ 正しいプロジェクトIDが設定されているか確認してください。
### APIエラー
- APIキーの権限を確認
- プロジェクトでのAPI有効化を確認
- 利用制限に達していないか確認
## 開発
### 要件
- Node.js 16.x以上
- TypeScript 5.x
### セットアップ
```bash
git clone https://github.com/ronkovic/gemini-cost-tracker.git
cd gemini-cost-tracker
npm install
npm run build
```
### 開発コマンド
```bash
npm run dev # 開発モードで実行
npm run build # ビルド
npm run test # テスト実行
npm run lint # リント
npm run format # フォーマット
```
## ライセンス
MIT License
## 📚 ドキュメント
詳細な使用方法やトラブルシューティングについては、以下のドキュメントを参照してください:
- **[使用方法ガイド](./docs/usage.md)** - 詳細な使用方法と実用例
- **[APIリファレンス](./docs/api-reference.md)** - プログラマティックな使用方法
- **[トラブルシューティング](./docs/troubleshooting.md)** - よくある問題と解決方法
- **[貢献ガイドライン](./CONTRIBUTING.md)** - プロジェクトへの貢献方法
## 🤝 貢献
バグ報告や機能要望は、GitHubのIssuesからお願いします。プロジェクトへの貢献については、[貢献ガイドライン](./CONTRIBUTING.md)をご確認ください。
## 更新履歴
### v0.1.3
- ログ出力をクリーンアップ(デフォルトログレベルをWARNに変更)
- より見やすいコマンド出力を実現
### v0.1.2
- テーブル表示で使用履歴を降順(最新が上)で表示するよう修正
- 全ての出力形式で一貫した日付順序を実現
### v0.1.1
- config コマンドの npx 環境でのエラーを修正
- 設定ディレクトリに XDG_CONFIG_HOME 標準を採用
- 設定更新時の既存値保持を改善
- チャート表示機能の追加
### v0.1.0
- 初回リリース
- 基本的な使用量表示機能
- コスト計算機能
- 設定管理機能
- データエクスポート機能