One API - LLM API管理・配信システム
プロジェクト概要
One APIは、OpenAI、Azure、Anthropic Claude、Google Gemini、DeepSeek、ChatGLMなどの主要モデルをサポートするオープンソースのLLM API管理・配信システムです。APIを統一的に適合させ、キー管理や二次配信に利用できます。このプロジェクトは、単一の実行可能ファイルを提供し、Dockerイメージをサポートし、ワンクリックでデプロイでき、すぐに使用できます。
主要な特徴
📋 複数モデルのサポート
このプロジェクトは、多くの主要な大規模言語モデルプロバイダーをサポートしています。
- OpenAIシリーズ: ChatGPTシリーズモデル(Azure OpenAI APIをサポート)
- Anthropic: Claudeシリーズモデル(AWS Claudeをサポート)
- Google: PaLM2/Geminiシリーズモデル
- その他: その他のシリーズモデル
🔧 主要機能
API管理・配信
- ミラーリングおよび多くのサードパーティプロキシサービスの構成をサポート
- 負荷分散方式による複数のチャネルへのアクセスをサポート
- streamモードをサポートし、ストリーミング伝送によるタイプライター効果を実現可能
- 複数マシンでのデプロイをサポート
- 失敗時の自動再試行をサポート
- 描画インターフェースをサポート
ユーザーと権限管理
- トークン管理: トークンの有効期限、割り当て、許可されるIP範囲、および許可されるモデルアクセスを設定
- 引換コード管理: 引換コードの一括生成とエクスポートをサポートし、引換コードを使用してアカウントをチャージ可能
- ユーザーグループ: ユーザーグループとチャネルグループをサポートし、異なるグループに異なる倍率を設定可能
- チャネル管理: チャネルの一括作成、チャネル設定モデルリストをサポート
監視と統計
- 割り当ての詳細の表示をサポート
- ユーザー招待報酬をサポート
- 割り当てを米ドル単位で表示することをサポート
- Message Pusherと連携して、アラーム情報をさまざまなAppにプッシュ可能
カスタム機能
- お知らせの公開、チャージリンクの設定、新規ユーザーの初期割り当ての設定をサポート
- モデルマッピングをサポートし、ユーザーのリクエストモデルをリダイレクト
- カスタムシステム名、ロゴ、フッターをサポート
- カスタムホームページとアバウトページをサポート
- システムアクセストークンによる管理APIの呼び出しをサポート
🔐 セキュリティと認証
複数のログイン方法
- メールアドレスによるログイン登録(登録メールアドレスのホワイトリストをサポート)およびメールアドレスによるパスワードリセット
- 飛書(Lark)認証ログイン
- GitHub認証ログイン
- WeChat公式アカウント認証(別途WeChat Serverのデプロイが必要)
セキュリティ機能
- Cloudflare Turnstileユーザー検証をサポート
- テーマ切り替えをサポート
- Cloudflare AI Gatewayをサポート
デプロイ方法
Dockerデプロイ(推奨)
SQLiteを使用
docker run --name one-api -d --restart always -p 3000:3000 -e TZ=Asia/Shanghai -v /home/ubuntu/data/one-api:/data justsong/one-api
MySQLを使用
docker run --name one-api -d --restart always -p 3000:3000 -e SQL_DSN="root:123456@tcp(localhost:3306)/oneapi" -e TZ=Asia/Shanghai -v /home/ubuntu/data/one-api:/data justsong/one-api
Docker Composeデプロイ
# 現在、MySQLの起動をサポートし、データは./data/mysqlフォルダに保存されます
docker-compose up -d
# デプロイステータスの確認
docker-compose ps
手動デプロイ
- GitHub Releasesから実行可能ファイルをダウンロードするか、ソースコードからコンパイルします。
git clone https://github.com/songquanpeng/one-api.git
# フロントエンドの構築
cd one-api/web/default
npm install
npm run build
# バックエンドの構築
cd ../..
go mod download
go build -ldflags "-s -w" -o one-api
- 実行:
chmod u+x one-api
./one-api --port 3000 --log-dir ./logs
クラウドプラットフォームへのデプロイ
Zeaburデプロイ
- コードリポジトリをフォーク
- Zeaburでプロジェクトを作成し、MySQLサービスを追加
- 環境変数
PORT=3000とSQL_DSNを設定 - デプロイしてドメインを構成
Renderデプロイ
- Dockerイメージを直接デプロイ
- リポジトリのフォークは不要
構成説明
環境変数構成
データベース構成
SQL_DSN: データベース接続文字列(MySQLまたはPostgreSQLの使用を推奨)LOG_SQL_DSN: ログテーブルの独立したデータベース接続
キャッシュ構成
REDIS_CONN_STRING: Redis接続文字列(キャッシュ用)MEMORY_CACHE_ENABLED: メモリキャッシュを有効にするSYNC_FREQUENCY: データベース同期頻度(秒)
クラスタ構成
SESSION_SECRET: 固定セッションキーNODE_TYPE: ノードタイプ(master/slave)FRONTEND_BASE_URL: フロントエンドリダイレクトアドレス
セキュリティ構成
GLOBAL_API_RATE_LIMIT: APIレート制限GLOBAL_WEB_RATE_LIMIT: Webレート制限RELAY_TIMEOUT: 中継タイムアウト設定
コマンドライン引数
--port <port_number>: ポート番号を指定(デフォルト3000)--log-dir <log_dir>: ログフォルダを指定--version: バージョン番号を出力--help: ヘルプを表示
使用方法
- 初期ログイン: デフォルトアカウント
root、パスワード123456を使用 - チャネル構成: チャネルページでAPIキーを追加
- トークン作成: トークンページでアクセストークンを作成
- クライアント構成: API BaseをOne APIデプロイアドレスに設定し、API Keyを生成されたトークンに設定
API使用例
# OpenAI公式ライブラリ構成
OPENAI_API_KEY="sk-xxxxxx"
OPENAI_API_BASE="https://<HOST>:<PORT>/v1"
チャネル指定
トークンの後にチャネルIDを追加することで、特定のチャネルを使用するように指定できます。
Authorization: Bearer ONE_API_KEY-CHANNEL_ID
アーキテクチャ設計
ユーザー → One API → OpenAI/Azure/Claude/Geminiなどの複数のプロバイダー
One APIは中間層として、異なるプロバイダーのAPI形式を統一し、以下を提供します。
- 負荷分散
- リクエストの中継と形式変換
- ユーザー管理と権限制御
- 使用量統計と課金
統合事例
ChatGPT Next Web
docker run --name chat-next-web -d -p 3001:3000 yidadaa/chatgpt-next-web
ページでインターフェースアドレスとAPIキーを設定するだけです。
ChatGPT Web
docker run --name chatgpt-web -d -p 3002:3002 -e OPENAI_API_BASE_URL=https://openai.justsong.cn -e OPENAI_API_KEY=sk-xxx chenzhaoyu94/chatgpt-web
ライセンス
このプロジェクトはMITライセンスでオープンソース化されており、ページ下部に帰属表示と本プロジェクトへのリンクを残す必要があります。
プロジェクトアドレス
- GitHub:https://github.com/songquanpeng/one-api
- オンラインデモ:https://openai.justsong.cn
- Docker Hub:justsong/one-api