MCPcopy Index your code
hub / github.com/tbphp/gpt-load

github.com/tbphp/gpt-load @v1.4.9 sqlite

repository ↗ · DeepWiki ↗ · release v1.4.9 ↗
747 symbols 1,961 edges 101 files 549 documented · 73%
README

GPT-Load

English | 中文 | 日本語

Release Go Version License

複数のAIサービスを統合する必要がある企業や開発者向けに特別に設計された、高性能でエンタープライズグレードのAI APIトランスペアレントプロキシサービス。Goで構築され、インテリジェントなキー管理、ロードバランシング、包括的な監視機能を備え、高並行性の本番環境向けに設計されています。

詳細なドキュメントについては、公式ドキュメントをご覧ください。

tbphp%2Fgpt-load | Trendshift Featured|HelloGitHub

スポンサー

Unity2.ai Unity2.aiによる本プロジェクトへのスポンサー支援に感謝します!Unity2.aiは、個人開発者、チーム、企業向けの高性能AIモデルAPI中継プラットフォームです。中国国内の大手企業に長期的にサービスを提供しており、1日あたり300億token超の呼び出しを処理し、5000 RPM級の高並行性をサポートします。残高課金、初回チャージ特典、組み合わせサブスクリプション、企業向け請求書発行、専属連携サポートに対応しています。こちらのリンクから登録すると$2の残高を受け取れ、公式グループ参加でさらに$10の残高、最大$12の無料枠を受け取れます。
LINUX DO LINUX DOコミュニティからのサポートに心より感謝いたします!
DigitalOcean Referral Badge このプロジェクトはDigitalOceanの支援を受けています。

特徴

  • トランスペアレントプロキシ: ネイティブAPIフォーマットの完全な保持、OpenAI、Google Gemini、Anthropic Claudeなどのフォーマットをサポート
  • インテリジェントキー管理: グループベース管理、自動ローテーション、障害復旧を備えた高性能キープール
  • ロードバランシング: サービスの可用性を向上させる複数のアップストリームエンドポイント間の重み付けロードバランシング
  • スマート障害処理: サービスの継続性を確保する自動キーブラックリスト管理と復旧メカニズム
  • 動的設定: システム設定とグループ設定は再起動不要のホットリロードをサポート
  • エンタープライズアーキテクチャ: 水平スケーリングと高可用性をサポートする分散リーダー・フォロワーデプロイメント
  • モダンな管理: Vue 3ベースの直感的で使いやすいWeb管理インターフェース
  • 包括的な監視: リアルタイム統計、ヘルスチェック、詳細なリクエストログ
  • 高性能設計: ゼロコピーストリーミング、接続プール再利用、アトミック操作
  • 本番対応: グレースフルシャットダウン、エラー復旧、包括的なセキュリティメカニズム
  • デュアル認証: 管理とプロキシの分離認証、プロキシ認証はグローバルおよびグループレベルのキーをサポート

サポートされているAIサービス

GPT-Loadは、さまざまなAIサービスプロバイダーのネイティブAPIフォーマットを完全に保持するトランスペアレントプロキシサービスとして機能します:

  • OpenAIフォーマット: 公式OpenAI API、Azure OpenAI、その他のOpenAI互換サービス
  • Google Geminiフォーマット: Gemini Pro、Gemini Pro VisionなどのモデルのネイティブAPI
  • Anthropic Claudeフォーマット: Claudeシリーズモデル、高品質な会話とテキスト生成をサポート

クイックスタート

システム要件

  • Go 1.24+(ソースビルド用)
  • Docker(コンテナ化デプロイメント用)
  • MySQL、PostgreSQL、またはSQLite(データベースストレージ用)
  • Redis(キャッシュと分散調整用、オプション)

方法1: Dockerクイックスタート

docker run -d --name gpt-load \
    -p 3001:3001 \
    -e AUTH_KEY=your-secure-key-here \
    -v "$(pwd)/data":/app/data \
    ghcr.io/tbphp/gpt-load:latest

your-secure-key-hereを強力なパスワードに変更してください(デフォルト値は絶対に使用しないでください)。その後、管理インターフェースにログインできます:http://localhost:3001

方法2: Docker Composeを使用(推奨)

インストールコマンド:

# ディレクトリを作成
mkdir -p gpt-load && cd gpt-load

# 設定ファイルをダウンロード
wget https://raw.githubusercontent.com/tbphp/gpt-load/refs/heads/main/docker-compose.yml
wget -O .env https://raw.githubusercontent.com/tbphp/gpt-load/refs/heads/main/.env.example

# .envファイルを編集し、AUTH_KEYを強力なパスワードに変更します。デフォルトやsk-123456のような単純なキーは絶対に使用しないでください。

# サービスを開始
docker compose up -d

デプロイメント前に、デフォルトの管理キー(AUTH_KEY)を必ず変更してください。推奨フォーマット:sk-prod-[32文字のランダム文字列]。

デフォルトのインストールは、軽量な単一インスタンスアプリケーションに適したSQLiteバージョンを使用します。

MySQL、PostgreSQL、Redisをインストールする必要がある場合は、docker-compose.ymlファイルで必要なサービスのコメントを解除し、対応する環境変数を設定して、再起動してください。

その他のコマンド:

# サービスステータスを確認
docker compose ps

# ログを表示
docker compose logs -f

# サービスを再起動
docker compose down && docker compose up -d

# 最新バージョンに更新
docker compose pull && docker compose down && docker compose up -d

デプロイメント後:

変更したAUTH_KEYを使用して管理インターフェースにログインしてください。

方法3: ソースビルド

ソースビルドには、ローカルにインストールされたデータベース(SQLite、MySQL、またはPostgreSQL)とRedis(オプション)が必要です。

# クローンとビルド
git clone https://github.com/tbphp/gpt-load.git
cd gpt-load
go mod tidy

# 設定を作成
cp .env.example .env

# .envファイルを編集し、AUTH_KEYを強力なパスワードに変更します。デフォルトやsk-123456のような単純なキーは絶対に使用しないでください。
# .envでDATABASE_DSNとREDIS_DSNの設定を変更
# REDIS_DSNはオプションです。設定されていない場合、メモリストレージが有効になります

# 実行
make run

デプロイメント後:

変更したAUTH_KEYを使用して管理インターフェースにログインしてください。

方法4: クラスターデプロイメント

クラスターデプロイメントでは、すべてのノードが同じMySQL(またはPostgreSQL)とRedisに接続する必要があり、Redisは必須です。統一された分散MySQLとRedisクラスターの使用を推奨します。

デプロイメント要件:

  • すべてのノードは同一のAUTH_KEYDATABASE_DSNREDIS_DSNを設定する必要があります
  • リーダー・フォロワーアーキテクチャで、フォロワーノードは環境変数を設定する必要があります:IS_SLAVE=true

詳細については、クラスターデプロイメントドキュメントを参照してください。

設定システム

設定アーキテクチャの概要

GPT-Loadは二層設定アーキテクチャを採用しています:

1. 静的設定(環境変数)

  • 特性: アプリケーション起動時に読み込まれ、実行時は不変、有効にするにはアプリケーションの再起動が必要
  • 用途: データベース接続、サーバーポート、認証キーなどのインフラストラクチャ設定
  • 管理: .envファイルまたはシステム環境変数を介して設定

2. 動的設定(ホットリロード)

  • システム設定: データベースに保存され、アプリケーション全体に統一された動作標準を提供
  • グループ設定: 特定のグループ用にカスタマイズされた動作パラメータ、システム設定を上書き可能
  • 設定優先度: グループ設定 > システム設定 > 環境設定
  • 特性: ホットリロードをサポート、変更後はアプリケーションの再起動なしで即座に有効

静的設定(環境変数)

サーバー設定:

設定 環境変数 デフォルト 説明
サービスポート PORT 3001 HTTPサーバーリスニングポート
サービスアドレス HOST 0.0.0.0 HTTPサーバーバインディングアドレス
読み取りタイムアウト SERVER_READ_TIMEOUT 60 HTTPサーバー読み取りタイムアウト(秒)
書き込みタイムアウト SERVER_WRITE_TIMEOUT 600 HTTPサーバー書き込みタイムアウト(秒)
アイドルタイムアウト SERVER_IDLE_TIMEOUT 120 HTTP接続アイドルタイムアウト(秒)
グレースフルシャットダウンタイムアウト SERVER_GRACEFUL_SHUTDOWN_TIMEOUT 10 サービスグレースフルシャットダウン待機時間(秒)
フォロワーモード IS_SLAVE false クラスターデプロイメント用フォロワーノード識別子
タイムゾーン TZ Asia/Shanghai タイムゾーンを指定

セキュリティ設定:

設定 環境変数 デフォルト 説明
管理キー AUTH_KEY - 管理端末のアクセス認証キー、強力なパスワードに変更してください
暗号化キー ENCRYPTION_KEY - APIキーを保存時に暗号化。任意の文字列をサポート、空の場合は暗号化を無効化。データ暗号化移行を参照

データベース設定:

設定 環境変数 デフォルト 説明
データベース接続 DATABASE_DSN ./data/gpt-load.db データベース接続文字列(DSN)またはファイルパス
Redis接続 REDIS_DSN - Redis接続文字列、空の場合はメモリストレージを使用

パフォーマンス&CORS設定:

設定 環境変数 デフォルト 説明
最大同時リクエスト数 MAX_CONCURRENT_REQUESTS 100 システムが許可する最大同時リクエスト数
CORS有効化 ENABLE_CORS false クロスオリジンリソース共有を有効にするか
許可されたオリジン ALLOWED_ORIGINS - 許可されたオリジン、カンマ区切り
許可されたメソッド ALLOWED_METHODS GET,POST,PUT,DELETE,OPTIONS 許可されたHTTPメソッド
許可されたヘッダー ALLOWED_HEADERS * 許可されたリクエストヘッダー、カンマ区切り
認証情報の許可 ALLOW_CREDENTIALS false 認証情報の送信を許可するか

ログ設定:

設定 環境変数 デフォルト 説明
ログレベル LOG_LEVEL info ログレベル:debug, info, warn, error
ログフォーマット LOG_FORMAT text ログフォーマット:text, json
ファイルログ有効化 LOG_ENABLE_FILE false ファイルログ出力を有効にするか
ログファイルパス LOG_FILE_PATH ./data/logs/app.log ログファイル保存パス

プロキシ設定:

GPT-Loadは、アップストリームAIプロバイダーへのリクエストを行うために環境変数からプロキシ設定を自動的に読み取ります。

設定 環境変数 デフォルト 説明
HTTPプロキシ HTTP_PROXY - HTTPリクエスト用のプロキシサーバーアドレス
HTTPSプロキシ HTTPS_PROXY - HTTPSリクエスト用のプロキシサーバーアドレス
プロキシなし NO_PROXY - プロキシをバイパスするホストまたはドメインのカンマ区切りリスト

サポートされているプロキシプロトコルフォーマット:

  • HTTP: http://user:pass@host:port
  • HTTPS: https://user:pass@host:port
  • SOCKS5: socks5://user:pass@host:port

動的設定(ホットリロード)

基本設定:

設定 フィールド名 デフォルト グループ上書き 説明
プロジェクトURL app_url http://localhost:3001 プロジェクトベースURL
グローバルプロキシキー proxy_keys AUTH_KEYの初期値 グローバルに有効なプロキシキー、カンマ区切り
ログ保持日数 request_log_retention_days 7 リクエストログ保持日数、0でクリーンアップなし
ログ書き込み間隔 request_log_write_interval_minutes 1 データベースへのログ書き込みサイクル(分)
リクエストボディログ有効化 enable_request_body_logging false リクエストログに完全なリクエストボディコンテンツを記録するか

リクエスト設定:

設定 フィールド名 デフォルト グループ上書き 説明
リクエストタイムアウト request_timeout 600 転送リクエストの完全なライフサイクルタイムアウト(秒)
接続タイムアウト connect_timeout 15 アップストリームサービスとの接続確立のタイムアウト(秒)
アイドル接続タイムアウト idle_conn_timeout 120 HTTPクライアントアイドル接続タイムアウト(秒)
レスポンスヘッダータイムアウト response_header_timeout 600 アップストリームレスポンスヘッダーの待機タイムアウト(秒)
最大アイドル接続数 max_idle_conns 100 接続プールの最大総アイドル接続数
ホストごとの最大アイドル接続数 max_idle_conns_per_host 50 アップストリームホストごとの最大アイドル接続数
プロキシURL proxy_url - 転送リクエスト用のHTTP/HTTPSプロキシ、空の場合は環境を使用

キー設定:

設定 フィールド名 デフォルト グループ上書き 説明
最大リトライ回数 max_retries 3 単一リクエストで異なるキーを使用する最大リトライ回数
ブラックリストしきい値 blacklist_threshold 3 キーが累計何回失敗したらブラックリストに入るか
キー検証間隔 key_validation_interval_minutes 60 バックグラウンドスケジュールキー検証サイクル(分)
キー検証並行数 key_validation_concurrency 10 無効なキーのバックグラウンド検証の並行数
キー検証タイムアウト key_validation_timeout_seconds 20 バックグラウンドでの個別キー検証のAPIリクエストタイムアウト(秒)

データ暗号化移行

GPT-LoadはAPIキーの暗号化保存をサポートしています。いつでも暗号化を有効化、無効化、または暗号化キーを変更できます。

データ暗号化移行の詳細を表示

移行シナリオ

  • 暗号化を有効化: プレーンテキストデータを暗号化して保存 - --to <新しいキー>を使用
  • 暗号化を無効化: 暗号化されたデータをプレーンテキストに復号化 - --from <現在のキー>を使用
  • 暗号化キーを変更: 暗号化キーを置き換える - --from <現在のキー> --to <新しいキー>を使用

操作手順

Docker Composeデプロイメント

```bash

1. イメージを更新(最新バージョンを使用していることを確認)

docker compose pull

2. サービスを停止

docker compose down

3. データベースをバックアップ(強く推奨)

移行前

Extension points exported contracts — how you extend this code

Decompressor (Interface)
Decompressor defines the interface for different decompression algorithms [4 implementers]
internal/utils/compression_utils.go
Subscription (Interface)
Subscription represents an active subscription to a pub/sub channel. [2 implementers]
internal/store/store.go
Service (Interface)
Service defines the encryption interface [2 implementers]
internal/encryption/encryption.go
ConfigManager (Interface)
ConfigManager defines the interface for configuration management [1 implementers]
internal/types/types.go
ChannelProxy (Interface)
ChannelProxy defines the interface for different API channel proxies.
internal/channel/channel.go
LoaderFunc (FuncType)
LoaderFunc defines a generic function signature for loading data from the source of truth (e.g., database).
internal/syncer/cache_syncer.go
ApiResponse (Interface)
(no doc)
web/src/types/models.ts
Store (Interface)
Store is a generic key-value store interface. [2 implementers]
internal/store/store.go

Core symbols most depended-on inside this repo

Error
called by 72
internal/response/response.go
Error
called by 71
internal/errors/errors.go
NewI18nError
called by 68
internal/services/group_service.go
Message
called by 36
internal/i18n/middleware.go
Get
called by 33
internal/store/store.go
ErrorI18nFromAPIError
called by 33
internal/response/response.go
Set
called by 30
internal/store/store.go
Error
called by 30
internal/services/group_service.go

Shape

Method 346
Function 211
Struct 143
Interface 43
Class 2
FuncType 2

Languages

Go87%
TypeScript13%

Modules by API surface

internal/services/group_service.go35 symbols
internal/store/redis.go30 symbols
internal/store/store.go29 symbols
web/src/api/keys.ts28 symbols
web/src/types/models.ts27 symbols
internal/handler/group_handler.go27 symbols
internal/store/memory.go25 symbols
internal/types/types.go21 symbols
internal/keypool/provider.go21 symbols
internal/handler/key_handler.go20 symbols
internal/services/key_service.go18 symbols
internal/config/manager.go16 symbols

Dependencies from manifests, versioned

filippo.io/edwards25519v1.2.0 · 1×
github.com/andybalholm/brotliv1.2.0 · 1×
github.com/cespare/xxhash/v2v2.3.0 · 1×
github.com/cloudwego/base64xv0.1.5 · 1×
github.com/dgryski/go-rendezvousv0.0.0-2020082301473 · 1×
github.com/gin-contrib/gzipv1.2.3 · 1×
github.com/gin-contrib/ssev1.0.0 · 1×
github.com/gin-contrib/staticv1.1.5 · 1×

Datastores touched

(mysql)Database · 1 repos

For agents

$ claude mcp add gpt-load \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact