AI Proxy - 企業向け多AIプロバイダ対応API代理サービス
概要
AI Proxyは複数のAIプロバイダ(Claude、ChatGPT、Geminiなど)を統合し、企業向けに安定したAI APIサービスを提供するプロキシサーバーです。Spring WebFluxをベースにしたリアクティブアーキテクチャにより高いパフォーマンスを実現し、サーバー送信イベント(SSE)を使ったストリーミングもサポートしています。多アカウント管理機能により、APIキーの自動切り替えや負荷分散を行い、安定したサービス運用を可能にします。OAuth 2.0 PKCEフローやJWT認証でセキュリティを担保し、API利用状況の監視や限流制御も実装。Dockerでコンテナ化されており、React+TypeScriptで構築された管理画面を備え、運用管理を効率化します。
リポジトリの統計情報
- スター数: 14
- フォーク数: 2
- ウォッチャー数: 14
- コミット数: 3
- ファイル数: 12
- メインの言語: Java
主な特徴
- Spring WebFluxによるリアクティブかつ高性能なAPIプロキシサーバー
- 複数AIプロバイダ対応(Claude、ChatGPT、Gemini)で統一されたAPIインターフェース
- アカウントプール管理でAPIキーの自動切り替えと負荷分散を実現
- OAuth 2.0 PKCE、JWT認証、APIキー管理による堅牢なセキュリティ
- リクエストログや使用統計、エラートラッキングなどの監視機能
- リクエスト頻度制限やトークン使用量制御による限流保護
- Dockerコンテナ化と環境変数設定による簡単なデプロイ
- React + TypeScript + TailwindCSSによる使いやすい管理画面
技術的なポイント
本プロジェクトの最大の技術的特徴は、JavaとSpring Boot 3.2+の最新技術を活用したリアクティブプログラミング基盤にあります。Spring WebFluxを採用することで、ノンブロッキングI/Oを活用して大量の同時接続を効率的に処理可能であり、SSE(サーバー送信イベント)を用いたストリーミングレスポンスにも対応しています。これにより、AIの応答をリアルタイムにクライアントへストリーム配信できる設計となっています。
複数AIプロバイダのAPIを統一的に扱うための抽象化が行われており、Claude、ChatGPT、GeminiそれぞれのAPI呼び出しをラップし、呼び出し元は統一されたインターフェースで利用可能。これにより、AIプロバイダの追加や切り替えが容易です。
APIキー管理は「アカウントプール」として実装されており、複数APIキーを登録し自動で負荷分散や切り替えを行うことで、高可用性とスループット向上を実現しています。OAuth 2.0のPKCEフローに対応し、セキュリティ面も強化。JWTトークンによる認証とAPIキー管理により、アクセス制御や権限管理が厳格に行われています。
リクエストの監視・統計機能も充実しており、利用状況やエラーログを詳細にトラッキング。これにより問題の早期発見や利用傾向の把握が可能です。さらに、リクエスト頻度やトークン使用量に対する限流機能を備え、悪意のあるリクエストや過負荷からサービスを保護します。
開発・運用面ではDockerコンテナ化により環境差異を減らし、環境変数による柔軟な設定が可能。フロントエンドはReact 18、TypeScript、Vite、TailwindCSSで構成されており、管理者がAPIキー管理やモニタリングを直感的に行える管理画面を提供します。
このように、最新のJavaリアクティブ技術と堅牢なセキュリティ設計、多プロバイダ対応、運用管理機能を融合した企業向けAI API代理サービスとして高い完成度を誇っています。
プロジェクトの構成
主要なファイルとディレクトリ:
.gitignore
: Git管理対象外ファイル指定Dockerfile
: Dockerコンテナ構築用設定ファイルREADME.md
: プロジェクト概要と使用方法のドキュメントSETUP.md
: 初期セットアップ手順書aiproxy-admin
: 管理画面フロントエンドのReactアプリケーションディレクトリ- 他のJavaソースコードや設定ファイル計7ファイル
まとめ
多AI対応の高性能で安全な企業向けAI APIプロキシ。
リポジトリ情報:
- 名前: aiproxy
- 説明: 企業向けAI API代理サービス
- スター数: 14
- 言語: Java
- URL: https://github.com/dev-tonic/aiproxy
- オーナー: dev-tonic
- アバター: https://avatars.githubusercontent.com/u/75539269?v=4