Skip to content

Latest commit

 

History

History
724 lines (539 loc) · 47 KB

File metadata and controls

724 lines (539 loc) · 47 KB
logo

AIClient-2-API 🚀

複数のクライアント専用大規模言語モデルAPI(Gemini CLI、Antigravity、Qwen Code、Kiro ...)を模擬リクエストし、ローカルのOpenAI互換インターフェースに統一的にラッピングする強力なプロキシ。

AIClient2API はクライアント制限を突破するAPIプロキシサービスで、Gemini、Antigravity、Qwen Code、Kiroなど、元々クライアント内でのみ使用可能な無料大規模モデルを、あらゆるアプリケーションから呼び出せる標準OpenAI互換インターフェースに変換します。Node.jsをベースに構築され、OpenAI、Claude、Geminiの3大プロトコル間のインテリジェント変換をサポートし、Cherry-Studio、NextChat、Clineなどのツールで、Claude Opus 4.5、Gemini 3.0 Pro、Qwen3 Coder Plusなどの高度なモデルを大規模に無料で使用できるようにします。プロジェクトはストラテジーパターンとアダプターパターンに基づくモジュラーアーキテクチャを採用し、アカウントプール管理、インテリジェントポーリング、自動フェイルオーバー、ヘルスチェック機構を内蔵し、99.9%のサービス可用性を保証します。

Note

🎉 重要なマイルストーン

  • Ruan Yifeng先生による週刊359号での推薦に感謝します

📅 バージョン更新ログ

クリックして詳細なバージョン履歴を展開
  • 2026.03.02 - Grokプロトコルサポートを追加:Cookie/SSO方式でxAI Grokシリーズモデル(Grok 3/4)へのアクセスに対応し、マルチモーダル入力、画像/動画生成、自動トークンリフレッシュ、ストリーミング出力をサポート
  • 2026.01.26 - Codexプロトコルサポートを追加:OpenAI Codex OAuth認証での接続に対応
  • 2026.01.25 - AI 監視プラグインの強化:AI プロトコル変換前後のリクエストパラメータとレスポンスの監視をサポート。ログ管理の最適化:統一されたログ形式、ビジュアル設定
  • 2026.01.15 - プロバイダープールマネージャーの最適化:非同期リフレッシュキューメカニズム、バッファキュー重複排除、グローバル並行制御、ノードウォームアップと自動期限切れ検出を追加
  • 2026.01.03 - テーマ切替機能を追加し、プロバイダープール初期化を最適化、プロバイダーのデフォルト設定を使用するフォールバック戦略を削除
  • 2025.12.30 - メインプロセス管理と自動更新機能を追加
  • 2025.12.25 - 設定ファイル統一管理:すべての設定を configs/ ディレクトリに集約。Dockerユーザーはマウントパスを -v "ローカルパス:/app/configs" に更新が必要
  • 2025.12.11 - Dockerイメージが自動的にビルドされ、Docker Hubで公開されました: justlikemaki/aiclient-2-api
  • 2025.11.30 - Antigravityプロトコルサポートの追加、Google内部インターフェース経由でGemini 3 Pro、Claude Sonnet 4.5などのモデルへのアクセスをサポート
  • 2025.11.11 - Web UI管理コントロールコンソールの追加、リアルタイム設定管理と健康状態モニタリングをサポート
  • 2025.11.06 - Gemini 3 プレビュー版のサポートを追加、モデル互換性とパフォーマンス最適化を向上
  • 2025.10.18 - Kiroオープン登録、新規アカウントに500クレジット付与、Claude Sonnet 4.5を完全サポート
  • 2025.09.01 - Qwen Code CLIを統合、qwen3-coder-plusモデルサポートを追加
  • 2025.08.29 - アカウントプール管理機能をリリース、マルチアカウントポーリング、自動フェイルオーバー、自動ダウングレード戦略をサポート
    • 設定方法:config.jsonにPROVIDER_POOLS_FILE_PATHパラメータを追加
    • 参考設定:provider_pools.json
  • 開発済み履歴
    • Gemini CLI、Kiroなどのクライアント2APIをサポート
    • OpenAI、Claude、Geminiの3つのプロトコル相互変換、自動インテリジェント切り替え

💡 コアアドバンテージ

🎯 統一アクセス、ワンストップ管理

  • マルチモデル統一インターフェース:標準OpenAI互換プロトコルを通じて、一度の設定でGemini、Claude、Grok、Qwen Code、Kimi K2、MiniMax M2などの主流大規模モデルにアクセス
  • 柔軟な切り替えメカニズム:Pathルーティング、起動パラメータ、環境変数の3つの方法で動的にモデルを切り替え、異なるシナリオのニーズに対応
  • ゼロコスト移行:OpenAI API仕様と完全互換、Cherry-Studio、NextChat、Clineなどのツールを変更なしで使用可能
  • マルチプロトコルインテリジェント変換:OpenAI、Claude、Geminiの3大プロトコル間のインテリジェント変換をサポートし、クロスプロトコルモデル呼び出しを実現

🚀 制限を突破、効率を向上

  • 公式制限の回避:OAuth認証メカニズムを利用して、Gemini、Antigravityなどの無料APIのレート制限と割り当て制限を効果的に突破
  • TLS 指紋の回避:内蔵の TLS Sidecar (Go uTLS) によりブラウザの特徴をシミュレートし、Grok などのサービスの Cloudflare 403 ブロックを効果的に回避
  • 無料高度モデル:Kiro APIモードでClaude Opus 4.5を無料使用、Qwen OAuthモードでQwen3 Coder Plusを使用し、使用コストを削減
  • インテリジェントアカウントプールスケジューリング:マルチアカウントポーリング、自動フェイルオーバー、設定ダウングレードをサポートし、99.9%のサービス可用性を保証

🛡️ 安全で制御可能、データ透明

  • フルチェーンログ記録:すべてのリクエストとレスポンスデータをキャプチャし、監査とデバッグをサポート
  • プライベートデータセット構築:ログデータに基づいて専用トレーニングデータセットを迅速に構築
  • システムプロンプト管理:オーバーライドと追加の2つのモードをサポートし、統一された基本指示と個別拡張の完璧な組み合わせを実現

🔧 開発者フレンドリー、拡張が容易

  • Web UI管理コントロールコンソール:リアルタイム設定管理、健全性モニタリング、APIテスト、ログ表示
  • モジュラーアーキテクチャ:ストラテジーパターンとアダプターパターンに基づき、新しいモデルプロバイダーの追加はわずか3ステップ
  • 完全なテストカバレッジ:統合テストと単体テストのカバレッジ90%+、コード品質を保証
  • コンテナ化デプロイ:Dockerサポートを提供、ワンクリックデプロイ、クロスプラットフォーム実行

📑 クイックナビゲーション


🔧 使用方法

🚀 クイックスタート

AIClient-2-APIを使い始める最も推奨される方法は、自動起動スクリプトを使用し、Web UIコンソールで直接ビジュアル設定を行うことです。

🐳 Docker クイックスタート (推奨)

docker run -d -p 3000:3000 -p 8085-8086:8085-8086 -p 1455:1455 -p 19876-19880:19876-19880 --restart=always -v "指定パス:/app/configs" --name aiclient2api justlikemaki/aiclient-2-api

パラメータ説明

  • -d:バックグラウンドでコンテナを実行
  • -p 3000:3000 ...:ポートマッピング。3000はWeb UI用、その他はOAuthコールバック用(Gemini: 8085, Antigravity: 8086, Codex: 1455, Kiro: 19876-19880)
  • --restart=always:コンテナ自動再起動ポリシー
  • -v "指定パス:/app/configs":設定ディレクトリをマウント(「指定パス」を実際のパスに置き換えてください、例:/home/user/aiclient-configs
  • --name aiclient2api:コンテナ名

🐳 Docker Compose デプロイ

Docker Compose を使用してデプロイすることもできます。まず、docker ディレクトリに移動します:

cd docker
mkdir -p configs
docker compose up -d

プリビルドイメージの代わりにソースからビルドする場合は、docker-compose.yml を編集してください:

  1. image: justlikemaki/aiclient-2-api:latest 行をコメントアウト
  2. build: セクションのコメントを解除
  3. docker compose up -d --build を実行

1. 起動スクリプトの実行

  • Linux/macOS: chmod +x install-and-run.sh && ./install-and-run.sh
  • Windows: install-and-run.bat をダブルクリックして実行

💡 スクリプトの実行に失敗した場合は、手動で依存関係をインストールして起動できます:

npm install
npm start

2. コンソールへのアクセス

サーバー起動後、ブラウザで以下にアクセスしてください: 👉 http://localhost:3000

デフォルトパスワード: admin123 (ログイン後、コンソールまたは pwd ファイルの変更で変更可能)

3. ビジュアル設定 (推奨)

「設定管理」 ページに入ると、以下を直接行えます:

  • ✅ 各プロバイダーの API Key の入力または OAuth 認証情報のアップロード
  • ✅ デフォルトモデルプロバイダーのリアルタイム切り替え
  • ✅ 健全性ステータスとリアルタイムリクエストログの監視

4. ローカル環境の準備 (非 Docker ユーザー)

ローカルで直接実行(スクリプトまたは Node.js 経由)し、Grok などのサービスの TLS 検出を回避する必要がある場合は、以下を確認してください:

  • Go 言語のインストールGo 公式サイト からダウンロードしてインストール (1.20+)。
  • Sidecar の手動ビルド:以下のコマンドを実行して TLS プロキシコンポーネントをビルドします:
    cd tls-sidecar && go build -o tls-sidecar && cd ..
    注意:このバイナリファイルがビルドされていない場合、TLS Sidecar 機能は実行ファイルが見つからないため起動に失敗します。

スクリプト実行例

========================================
  AI Client 2 API 快速インストール起動スクリプト
========================================

[確認] Node.js がインストールされているかを確認中...
✅ Node.js がインストールされています、バージョン: v20.10.0
✅ package.json ファイルが見つかりました
✅ node_modules ディレクトリが既に存在しています
✅ プロジェクトファイルの確認が完了しました

========================================
  AI Client 2 API サーバーを起動中...
========================================

🌐 サーバーは http://localhost:3000 で起動します
📖 管理インターフェースを表示するには http://localhost:3000 にアクセス
⏹️  サーバーを停止するには Ctrl+C を押してください

💡 ヒント:スクリプトは自動的に依存関係をインストールし、サーバーを起動します。問題が発生した場合、スクリプトは明確なエラーメッセージと解決案を提供します。


📋 コア機能

Web UI管理コントロールコンソール

Web UI

以下の機能モジュールを備えたWeb管理インターフェース:

📊 ダッシュボード:システム概要、インタラクティブなルーティング例、クライアント設定ガイド

⚙️ 設定管理:全プロバイダー(Gemini、Antigravity、OpenAI、Claude、Kiro、Qwen)のリアルタイムパラメータ修正、高度設定、ファイルアップロード対応

🔗 プロバイダープール:アクティブ接続監視、プロバイダー健全性統計、有効化/無効化管理

📁 設定ファイル:OAuth資格情報の集中管理、検索フィルタリング、ファイル操作機能

📜 リアルタイムログ:システムログとリクエストログのライブ表示、管理コントロール付き

🔐 ログイン認証:デフォルトパスワード admin123pwdファイルで変更可能

アクセス:http://localhost:3000 → ログイン → サイドバーナビゲーション → 即座有効

マルチモーダル入力機能

画像、ドキュメントなど様々なタイプの入力をサポートし、よりリッチなインタラクティブ体験とより強力なアプリケーションシナリオを提供します。

最新モデルサポート

以下の最新大規模モデルをシームレスにサポート、Web UIまたはconfig.jsonで対応するエンドポイントを設定するだけで使用可能:

  • Grok 3 / Grok 4 - xAIのフラッグシップモデル。Grok Cookie/SSO経由でサポートされ、思考モデル、画像生成、動画生成に対応
  • Claude 4.5 Opus - Anthropic史上最強モデル、Kiro、Antigravity経由でサポート
  • Gemini 3 Pro - Google次世代アーキテクチャプレビュー版、Gemini、Antigravity経由でサポート
  • Qwen3 Coder Plus - アリババ通義千問の最新コード専用モデル、Qwen Code経由でサポート
  • Kimi K2 / MiniMax M2 - 国内トップフラッグシップモデルの同期サポート、カスタムOpenAI、Claude経由でサポート

🔐 認証設定ガイド

クリックして各プロバイダーの認証設定詳細手順を展開

💡 ヒント:最適な体験を得るために、Web UIコンソールを通じてビジュアルに認証管理を行うことを推奨します。

🌐 Web UI クイック認証 (推奨)

Web UI管理インターフェースでは、極めて迅速に認証設定を完了できます:

  1. 認証の生成「プロバイダープール」 ページまたは 「設定管理」 ページで、対応するプロバイダー(Gemini、Qwenなど)の右上にある 「認証生成」 ボタンをクリックします。
  2. スキャン/ログイン:認証ダイアログが表示されるので、「ブラウザで開く」 をクリックしてログイン検証を行います。Qwenの場合はウェブログインを完了するだけ、Gemini、Antigravityの場合はGoogleアカウントの認証を完了させます。
  3. 自動保存:認証成功後、システムは自動的に資格情報を取得し、configs/ の対応するディレクトリに保存します。「設定ファイル」 ページで新しく生成された資格情報を確認できます。
  4. ビジュアル管理:Web UIでいつでも資格情報のアップロードや削除、または 「クイック関連付け」 機能を使用して既存の資格情報ファイルをワンクリックでプロバイダーにバインドできます。

Gemini CLI OAuth設定

  1. OAuth認証情報の取得Google Cloud Consoleにアクセスしてプロジェクトを作成し、Gemini APIを有効化
  2. プロジェクト設定:有効なGoogle CloudプロジェクトIDを提供する必要があり、起動パラメータ--project-idで指定可能
  3. プロジェクトIDの確認:Web UIで設定する際、入力したプロジェクトIDが Google Cloud Console および Gemini CLI で表示されるプロジェクトIDと一致していることを確認してください。

Antigravity OAuth設定

  1. 個人アカウント:個人アカウントは個別に認証が必要ですが、申請チャンネルは閉鎖されています。
  2. Pro会員:Antigravity は一時的に Pro 会員に開放されています。まず Pro 会員を購入する必要があります。
  3. 組織アカウント:組織アカウントは個別に認証が必要です。管理者に連絡して認証を取得してください。

Qwen Code OAuth設定

  1. 初回認証:Qwenサービス設定後、システムが自動的にブラウザで認証ページを開きます
  2. 推奨パラメータ:最良の結果を得るために公式デフォルトパラメータを使用
    {
      "temperature": 0,
      "top_p": 1
    }

Kiro API設定

  1. 環境準備Kiroクライアントをダウンロードしてインストール
  2. 認証完了:クライアントでアカウントにログインし、kiro-auth-token.json認証情報ファイルを生成
  3. ベストプラクティスClaude Codeとの併用を推奨、最適な体験を得られる
  4. 重要なお知らせ:Kiroサービス使用ポリシーが更新されました、最新の使用制限と条件については公式ウェブサイトをご確認ください。

Kiro 拡張思考 (Claude モデル)

AIClient-2-API は、claude-kiro-oauth にルーティングされた Claude 互換リクエスト (/v1/messages) または OpenAI 互換リクエスト (/v1/chat/completions) を使用する場合、Kiro 拡張思考をサポートします。

Claude 互換インターフェース (/v1/messages):

curl http://localhost:3000/claude-kiro-oauth/v1/messages \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer your-api-key" \
  -d '{
    "model": "claude-sonnet-4-5",
    "max_tokens": 1024,
    "thinking": { "type": "enabled", "budget_tokens": 10000 },
    "messages": [{ "role": "user", "content": "この問題をステップバイステップで解決してください。" }]
  }'

OpenAI 互換インターフェース (/v1/chat/completions):

curl http://localhost:3000/claude-kiro-oauth/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer your-api-key" \
  -d '{
    "model": "claude-sonnet-4-5",
    "messages": [{ "role": "user", "content": "この問題をステップバイステップで解決してください。" }],
    "extra_body": {
      "anthropic": {
        "thinking": { "type": "enabled", "budget_tokens": 10000 }
      }
    }
  }'

アダプティブモード:

  • Claude: "thinking": { "type": "adaptive", "effort": "high" }
  • OpenAI: "extra_body.anthropic.thinking": { "type": "adaptive", "effort": "high" }

注意:

  • budget_tokens[1024, 24576] の範囲に制限されます(省略または無効な場合はデフォルトの 20000 が適用されます)。
  • トークンの取得/リフレッシュ/プールローテーションメカニズムは変更されません。

Codex OAuth設定

  1. 認証の生成:Web UIの「プロバイダープール」または「設定管理」ページで、Codexの「認証生成」ボタンをクリック
  2. ブラウザログイン:システムがOpenAI Codex認証ページを開き、OAuthログインを完了
  3. 自動保存:認証成功後、システムがCodexのOAuth認証情報ファイルを自動保存
  4. コールバックポート:OAuthコールバックポート 1455 が占有されていないことを確認

Grok Cookie/SSO 設定

  1. SSOトークンの取得: Grok公式サイトにログインし、ブラウザの開発者ツールの Application -> Cookies から sso の値をコピーします。
  2. 設定の入力: Web UIの「設定管理」ページ、または設定ファイルを直接編集して、トークンを GROK_COOKIE_TOKEN に入力します。
  3. サポート機能:
    • チャットおよび思考モデル (Grok 3 Thinking)
    • 画像生成 (Grok Imagine)
    • 動画生成 (Grok Video)
  4. 注意事項: ブロックを避けるため、GROK_USER_AGENT がCookie取得時と同じブラウザのものであることを確認してください。

アカウントプール管理設定

  1. プール設定ファイルの作成provider_pools.json.example を参考に設定ファイルを作成します
  2. プールパラメータの設定:config.json で PROVIDER_POOLS_FILE_PATH を設定し、プール設定ファイルを指定します
  3. 起動パラメータ設定--provider-pools-file <path> パラメータを使用してプール設定ファイルのパスを指定します
  4. ヘルスチェック:システムは定期的にヘルスチェックを自動実行し、健全でないプロバイダーを使用しません

📁 認証ファイル保存パス

クリックして各サービスの認証情報のデフォルト保存場所を展開

各サービスの認証情報ファイルのデフォルト保存場所:

サービス デフォルトパス 説明
Gemini ~/.gemini/oauth_creds.json OAuth認証情報
Kiro ~/.aws/sso/cache/kiro-auth-token.json Kiro認証トークン
Qwen ~/.qwen/oauth_creds.json Qwen OAuth認証情報
Antigravity ~/.antigravity/oauth_creds.json Antigravity OAuth認証情報 (Claude 4.5 Opus サポート)
Codex ~/.codex/oauth_creds.json Codex OAuth認証情報

説明~はユーザーホームディレクトリを表します(Windows: C:\Users\ユーザー名、Linux/macOS: /home/ユーザー名または/Users/ユーザー名

カスタムパス:設定ファイルの関連パラメータまたは環境変数でカスタム保存場所を指定可能


高度な設定

クリックしてプロキシ設定、モデルフィルタリング、Fallbackなどの高度な設定を展開

1. プロキシ設定

本プロジェクトは柔軟なプロキシ設定をサポートしており、異なるプロバイダーに統一プロキシを設定したり、プロバイダー独自のプロキシ済みエンドポイントを使用したりできます。

設定方法

  1. Web UI設定(推奨):便利な設定管理

Web UIの「設定管理」ページで、すべてのプロキシオプションを視覚的に設定できます:

  • 統一プロキシ:「プロキシ設定」エリアにプロキシアドレスを入力し、プロキシを使用するプロバイダーにチェックを入れます
  • プロバイダーエンドポイント:各プロバイダーの設定エリアで、Base URLをプロキシ済みエンドポイントに直接変更します
  • 「設定を保存」をクリック:サービスを再起動せずに即座に有効になります
  1. 統一プロキシ設定:グローバルプロキシを設定し、どのプロバイダーがそれを使用するかを指定します

    • Web UI設定:「設定管理」ページの「プロキシ設定」エリアにプロキシアドレスを入力し、プロキシを使用するプロバイダーにチェックを入れます
    • 設定ファイルconfigs/config.jsonで設定
    {
      "PROXY_URL": "http://127.0.0.1:7890",
       "PROXY_ENABLED_PROVIDERS": [
         "gemini-cli-oauth",
         "gemini-antigravity",
         "claude-kiro-oauth",
         "grok-custom"
       ]

}


3. **プロバイダー独自のプロキシ済みエンドポイント**:一部のプロバイダー(OpenAI、Claudeなど)はプロキシ済みAPIエンドポイントの設定をサポートしています

- **Web UI設定**:「設定管理」ページの各プロバイダー設定エリアで、対応するBase URLを変更します
- **設定ファイル**:`configs/config.json`で設定
```json
{
  "OPENAI_BASE_URL": "https://your-proxy-endpoint.com/v1",
  "CLAUDE_BASE_URL": "https://your-proxy-endpoint.com"
}

サポートされるプロキシタイプ

  • HTTPプロキシhttp://127.0.0.1:7890
  • HTTPSプロキシhttps://127.0.0.1:7890
  • SOCKS5プロキシsocks5://127.0.0.1:1080

使用シナリオ

  • ネットワーク制限環境:Google、OpenAIなどのサービスに直接アクセスできないネットワーク環境で使用
  • ハイブリッド設定:一部のプロバイダーは統一プロキシを使用し、他はプロバイダー独自のプロキシ済みエンドポイントを使用
  • 柔軟な切り替え:Web UIでいつでも特定のプロバイダーのプロキシを有効化/無効化できます

注意事項

  • プロキシ設定の優先順位:統一プロキシ設定 > プロバイダー独自エンドポイント > 直接接続
  • プロキシサービスが安定して利用可能であることを確認してください。そうでない場合、サービス品質に影響する可能性があります
  • SOCKS5プロキシは通常、HTTPプロキシよりもパフォーマンスが優れています

2. モデルフィルタリング設定

notSupportedModels 設定を通じてサポートされていないモデルを除外でき、システムは自動的にこれらのプロバイダーをスキップします。

設定方法provider_pools.json でプロバイダーに notSupportedModels フィールドを追加:

{
  "gemini-cli-oauth": [
    {
      "uuid": "provider-1",
      "notSupportedModels": ["gemini-3.0-pro", "gemini-3.5-flash"],
      "checkHealth": true
    }
  ]
}

動作原理

  • 特定のモデルをリクエストする際、システムは自動的にそのモデルをサポートしていないと設定されたプロバイダーをフィルタリングします
  • そのモデルをサポートするプロバイダーのみがリクエストを処理するために選択されます

使用シナリオ

  • 一部のアカウントは割り当てまたは権限の制限により特定のモデルにアクセスできない
  • 異なるアカウントに異なるモデルアクセス権限を割り当てる必要がある

3. プロバイダー優先度設定

provider_pools.json 内のノードごとの priority フィールドを通じて、確定的なアカウント順序をサポートします。

設定方法(数値が小さいほど優先度が高くなります):

{
  "claude-kiro-oauth": [
    {
      "uuid": "primary-node-uuid",
      "priority": 1,
      "checkHealth": true
    },
    {
      "uuid": "backup-node-uuid",
      "priority": 2,
      "checkHealth": true
    }
  ]
}

動作原理

  • プールマネージャーはまず、最も低い priority 値によって健全/利用可能なノードをフィルタリングします
  • その最高優先度ティアのノードのみが LRU/スコアベースの負荷分散に参加します
  • 最高優先度ティア全体が利用不可になった場合、次の優先度ティアが自動的に使用されます
  • priority が省略されているか無効な場合、デフォルトの 100 が適用されます(後方互換性のある動作)

4. クロスタイプフォールバック設定

あるProvider Type(例:gemini-cli-oauth)のすべてのアカウントが429割り当て制限により枯渇したり、unhealthyとマークされた場合、システムは直接エラーを返すのではなく、互換性のある別のProvider Type(例:gemini-antigravity)に自動的にフォールバックできます。

設定方法configs/config.jsonproviderFallbackChain 設定を追加:

{
  "providerFallbackChain": {
    "gemini-cli-oauth": ["gemini-antigravity"],
    "gemini-antigravity": ["gemini-cli-oauth"],
    "claude-kiro-oauth": ["claude-custom"],
    "claude-custom": ["claude-kiro-oauth"]
  }
}

動作原理

  1. メインのProvider Typeプールからhealthyなアカウントを選択しようとします
  2. そのタイプのすべてのアカウントがunhealthyまたは429を返す場合:
    • 設定されたフォールバックタイプを検索
    • フォールバックタイプがリクエストされたモデルをサポートしているか確認(プロトコル互換性チェック)
    • フォールバックタイプのプールからhealthyなアカウントを選択
  3. 多段階降格チェーンをサポート:gemini-cli-oauth → gemini-antigravity → openai-custom
  4. すべてのフォールバックタイプも利用できない場合のみエラーを返します

使用シナリオ

  • バッチタスクシナリオでは、単一のProvider Typeの無料RPD割り当てが短時間で簡単に枯渇する可能性があります
  • クロスタイプフォールバックを通じて、複数のProviderの独立した割り当てを十分に活用し、全体的な可用性とスループットを向上させることができます

注意事項

  • フォールバックはプロトコル互換タイプ間でのみ発生します(例:gemini-* 間、claude-* 間)
  • システムは自動的にターゲットProvider Typeがリクエストされたモデルをサポートしているか確認します

5. TLS Sidecar (Bypass 403/Cloudflare)

Grok などの TLS 指紋(JA3/JA4)を厳密に検証するサービスに対して、本プロジェクトは Go uTLS ベースの Sidecar プロキシを統合しています。これにより、ブラウザの TLS 特徴をシミュレートし、403 Forbidden エラーを効果的に解決します。

設定手順:

  1. バイナリのビルド: TLS シミュレーションには Go 言語のサポートが必要です。まず sidecar をビルドする必要があります:

    cd tls-sidecar
    go build -o tls-sidecar

    Windows ユーザーは、ビルド後、生成された tls-sidecar.exetls-sidecar/ またはルートディレクトリにあることを確認してください。

  2. 設定の有効化: Web UI の「設定管理」ページで TLS Sidecar を有効にするか、configs/config.json を編集します:

    {
      "TLS_SIDECAR_ENABLED": true,
      "TLS_SIDECAR_PORT": 9090
    }
  3. 動作原理:

    • 有効にすると、システムは自動的に Go プロセスを起動し管理します。
    • 特定のプロバイダー(Grok など)へのリクエストは、自動的に Sidecar にルーティングされます。
    • Sidecar は最新の Chrome 指紋を使用して TLS ハンドシェイクを行い、HTTP/2 の自動ネゴシエーションをサポートします。

注意事項:

  • ローカル実行には Go 環境 (1.20+) が必要です。
  • Docker ユーザー: イメージには既にプリビルド済みのバイナリが含まれています。設定で有効にするだけでよく、手動でのビルドは不要です。

❓ よくある質問

クリックしてよくある質問と解決策を展開(ポート占有、Docker起動、429エラーなど)

1. OAuth認証失敗

問題の説明:「認証生成」をクリックした後、ブラウザで認証ページが開きますが、認証が失敗するか完了できません。

解決策

  • ネットワーク接続を確認:Google、アリババクラウドなどのサービスに正常にアクセスできることを確認
  • ポート占有を確認:OAuthコールバックには特定のポートが必要です(Gemini: 8085, Antigravity: 8086, Codex: 1455, Kiro: 19876-19880)、これらのポートが占有されていないことを確認
  • ブラウザキャッシュをクリア:シークレットモードを使用するか、ブラウザキャッシュをクリアして再試行
  • ファイアウォール設定を確認:ファイアウォールがローカルコールバックポートへのアクセスを許可していることを確認
  • Dockerユーザー:すべてのOAuthコールバックポートが正しくマッピングされていることを確認

2. ポートが使用中

問題の説明:サービス起動時にポートが既に使用中と表示されます(例:EADDRINUSE)。

解決策

# Windows - ポートを占有しているプロセスを検索
netstat -ano | findstr :3000
# タスクマネージャーで対応するPIDのプロセスを終了

# Linux/macOS - ポートを占有しているプロセスを検索して終了
lsof -i :3000
kill -9 <PID>

または configs/config.json のポート設定を変更して別のポートを使用します。

3. Dockerコンテナが起動しない

問題の説明:Dockerコンテナの起動に失敗するか、すぐに終了します。

解決策

  • ログを確認docker logs aiclient2api でエラーメッセージを確認
  • マウントパスを確認-v パラメータのローカルパスが存在し、読み書き権限があることを確認
  • ポート競合を確認:マッピングされたすべてのポートがホストで占有されていないことを確認
  • イメージを再取得docker pull justlikemaki/aiclient-2-api:latest

4. 認証情報ファイルが認識されない

問題の説明:認証情報ファイルをアップロードまたは設定した後、システムが認識できないかフォーマットエラーと表示されます。

解決策

  • ファイル形式を確認:認証情報ファイルが有効なJSON形式であることを確認
  • ファイルパスを確認:ファイルパスが正しいことを確認、Dockerユーザーはファイルがマウントディレクトリ内にあることを確認
  • ファイル権限を確認:サービスが認証情報ファイルを読み取る権限があることを確認
  • 認証情報を再生成:認証情報が期限切れの場合、OAuth認証を再度実行

5. リクエストが429エラーを返す

問題の説明:APIリクエストが頻繁に429 Too Many Requestsエラーを返します。

解決策

  • アカウントプールを設定provider_pools.json に複数のアカウントを追加し、ポーリングメカニズムを有効化
  • フォールバックを設定config.jsonproviderFallbackChain を設定し、クロスタイプ降格を実現
  • リクエスト頻度を下げる:リクエスト間隔を適切に増やし、レート制限のトリガーを回避
  • 割り当てリセットを待つ:無料割り当ては通常、毎日または毎分リセットされます

6. モデルが利用できないかエラーを返す

問題の説明:特定のモデルをリクエストするとエラーが返されるか、モデルが利用できないと表示されます。

解決策

  • モデル名を確認:正しいモデル名を使用していることを確認(大文字小文字を区別)
  • プロバイダーサポートを確認:現在設定されているプロバイダーがそのモデルをサポートしていることを確認
  • アカウント権限を確認:一部の高度なモデルは特定のアカウント権限が必要な場合があります
  • モデルフィルタリングを設定notSupportedModels を使用してサポートされていないモデルを除外

7. Web UIにアクセスできない

問題の説明:ブラウザで http://localhost:3000 を開けません。

解決策

  • サービス状態を確認:サービスが正常に起動したことを確認、ターミナル出力を確認
  • ポートマッピングを確認:Dockerユーザーは -p 3000:3000 パラメータが正しいことを確認
  • 別のアドレスを試すhttp://127.0.0.1:3000 へのアクセスを試す
  • ファイアウォールを確認:ファイアウォールがポート3000へのアクセスを許可していることを確認

8. ストリーミングレスポンスが中断される

問題の説明:ストリーミング出力を使用すると、レスポンスが途中で中断されるか不完全になります。

解決策

  • ネットワーク安定性を確認:ネットワーク接続が安定していることを確認
  • タイムアウトを増やす:クライアント設定でリクエストタイムアウトを増やす
  • プロキシ設定を確認:プロキシを使用している場合、プロキシが長時間接続をサポートしていることを確認
  • サービスログを確認:エラーメッセージがないか確認

9. 設定変更が反映されない

問題の説明:Web UIで設定を変更した後、サービスの動作が変わりません。

解決策

  • ページを更新:変更後にWeb UIページを更新
  • 保存状態を確認:設定が正常に保存されたことを確認(プロンプトメッセージを確認)
  • サービスを再起動:一部の設定はサービスの再起動が必要な場合があります
  • 設定ファイルを確認configs/config.json を直接確認して変更が書き込まれていることを確認

10. APIが404を返す

解決策

  • エンドポイントパスを確認/v1/chat/completions などの正しいエンドポイントパスを使用していることを確認
  • クライアントの自動補完を確認:一部のクライアント(Cherry-Studio、NextChatなど)はBase URLの後にパス(/v1/chat/completions など)を自動的に追加し、パスの重複を引き起こします。コンソールで実際のリクエストURLを確認し、冗长なパス部分を削除してください
  • サービス状態を確認:サービスが正常に起動していることを確認、http://localhost:3000 にアクセスしてWeb UIを確認
  • ポート設定を確認:リクエストが正しいポート(デフォルト3000)に送信されていることを確認
  • 利用可能なルートを確認:Web UIダッシュボードページの「インタラクティブルーティング例」ですべての利用可能なエンドポイントを確認

11. Unauthorized: API key is invalid or missing

問題の説明:APIエンドポイントを呼び出すと Unauthorized: API key is invalid or missing. エラーが返されます。

解決策

  • API Key設定を確認configs/config.json またはWeb UIでAPI Keyが正しく設定されていることを確認
  • リクエストヘッダー形式を確認:リクエストに正しい形式のAuthorizationヘッダーが含まれていることを確認、例:Authorization: Bearer your-api-key
  • サービスログを確認:Web UIの「リアルタイムログ」ページで詳細なエラーメッセージを確認し、具体的な原因を特定

12. No available and healthy providers for type

問題の説明:APIを呼び出すと No available and healthy providers for type xxx エラーが返されます。

解決策

  • プロバイダー状態を確認:Web UIの「プロバイダープール」ページで対応するタイプのプロバイダーが健全な状態にあるか確認
  • 認証情報の有効性を確認:OAuth認証情報が期限切れでないことを確認、期限切れの場合は認証を再生成
  • 割り当て制限を確認:一部のプロバイダーは無料割り当て上限に達している可能性があります。割り当てリセットを待つか、より多くのアカウントを追加
  • フォールバックを有効化config.jsonproviderFallbackChain を設定し、主プロバイダーが利用できない場合に自動的にバックアッププロバイダーに切り替え
  • 詳細ログを確認:Web UIの「リアルタイムログ」ページで具体的なヘルスチェック失敗の原因を確認

13. リクエストが403 Forbiddenエラーを返す

問題の説明:APIリクエストが403 Forbiddenエラーを返します。

解決策

  • TLS Sidecar の有効化:Grok などのサービスにおいて、403 エラーは TLS 指紋のブロックが原因であることが多いです。高度な設定 - TLS Sidecar を参照して Sidecar を有効にし、ビルドしてください。
  • ノード状態を確認:Web UIの「プロバイダープール」ページでノード状態が正常(ヘルスチェック合格)であれば、このエラーは無視できます。システムが自動的に処理します
  • アカウント権限を確認:使用しているアカウントがリクエストされたモデルまたはサービスにアクセスする権限があることを確認
  • API Key権限を確認:一部のプロバイダーのAPI Keyにはアクセス範囲の制限がある場合があります。Keyに十分な権限があることを確認
  • 地域制限を確認:一部のサービスには地域アクセス制限がある場合があります。プロキシまたはVPNの使用を試してください
  • 認証情報の状態を確認:OAuth認証情報が取り消されたり期限切れになっている可能性があります。認証の再生成を試してください
  • リクエスト頻度を確認:一部のプロバイダーはリクエスト頻度に厳しい制限があります。リクエスト頻度を下げて再試行
  • プロバイダードキュメントを確認:対応するプロバイダーの公式ドキュメントにアクセスして、具体的なアクセス制限と要件を理解

📄 オープンソースライセンス

本プロジェクトは GNU General Public License v3 (GPLv3) オープンソースライセンスに従います。詳細はルートディレクトリの LICENSE ファイルをご覧ください。

🙏 謝辞

本プロジェクトの開発は公式Google Gemini CLIから大きなインスピレーションを受け、Cline 3.18.0版 gemini-cli.ts の一部のコード実装を参考にしました。ここにGoogle公式チームとCline開発チームの優れた仕事に心より感謝申し上げます!

貢献者リスト

AIClient-2-APIプロジェクトに貢献してくれたすべての開発者に感謝します:

Contributors

🌟 Star History

Star History Chart


⚠️ 免責事項

使用リスクの注意

本プロジェクト(AIClient-2-API)は学習と研究目的のみです。ユーザーは本プロジェクト使用時、すべてのリスクを自己負担する必要があります。作者は本プロジェクトの使用により生じた直接的、間接的、または結果的な損失について一切の責任を負いません。

サードパーティサービスの責任説明

本プロジェクトはAPIプロキシツールであり、AIモデルサービスを提供していません。すべてのAIモデルサービスは対応するサードパーティプロバイダー(Google、OpenAI、Anthropicなど)により提供されます。ユーザーが本プロジェクトを通じてこれらのサードパーティサービスにアクセスする際は、各サードパーティサービスの利用規約とポリシーを遵守する必要があります。作者はサードパーティサービスの可用性、品質、セキュリティ、合法性について責任を負いません。

データプライバシー説明

本プロジェクトはローカルで実行され、ユーザーのデータを収集またはアップロードしません。ただし、ユーザーは本プロジェクト使用時、APIキーやその他の機密情報を保護することに注意する必要があります。定期的にAPIキーを確認・更新し、安全でないネットワーク環境での本プロジェクトの使用を避けることを推奨します。

法的コンプライアンスの注意

ユーザーは本プロジェクト使用時、所在国/地域の法律法規を遵守する必要があります。本プロジェクトを違法な目的に使用することは厳禁です。ユーザーが法律法規に違反したことによるいかなる結果も、ユーザー自身がすべての責任を負うものとします。