このプロジェクトについて
opencode2apiは、OpenCode ZenとZen Go向けのGoゲートウェイです。Chat Completions、Responses、Anthropic Messagesの各エンドポイントを公開し、それぞれのネイティブプロトコル間を変換しながら、上流のキーとプロキシを管理します。実行ファイルにはWebUIが含まれており、Node.jsランタイムやデータベースは不要です。
機能には、3つの推論プロトコルすべてにおけるJSONおよびSSEレスポンス、テキスト、画像、推論、関数ツール、ツール呼び出し、ツール結果のサポート、設定可能なティア優先度を備えたZenとGoの個別キープール、リトライ、セッションアフィニティ、オプションの匿名Zenアクセス、direct/HTTP/HTTPS/SOCKS5/SOCKS5Hプロキシのサポート、ディスクキャッシュを伴う動的モデル検出、設定編集が可能な別個の管理ポート、Playground、診断、トークン統計、ライブログ、さらに検証付きの設定ホットリロードが含まれます。
クイックスタート: GitHub Releasesからバイナリをダウンロードするか、Go 1.24+でビルドします。config.jsonを編集して、server_keys、Zen/Goキー(または匿名を有効化)、WebUIパスワードを設定します。`./opencode2api -config config.json`で実行します。Dockerイメージはghcr.io/jasonxu114514/opencode2apiで利用可能で、docker composeもサポートしています。
APIエンドポイントには、GET /v1/models、POST /v1/chat/completions、POST /v1/responses、POST /v1/messages、GET /healthzが含まれます。認証は、Bearerまたはx-api-keyヘッダーを介したローカルserver_keysを使用します。ストリーミングは`stream: true`でサポートされています。このゲートウェイは、embeddings、ファイルアップロード、画像生成、Responsesのretrieval/cancellationを実装しておらず、会話履歴も保存しません。
ルーティングは、上流の/v1/modelsおよびOpenCodeの機能カタログからのモデル検出を使用し、プロトコルオーバーライドも利用可能です。匿名アクセスは、IDに「free」を含むモデルまたはコストゼロの非推奨でないモデルで有効になります。ルーティング順序は、まず匿名プロキシを試し、次に優先順に認証済みティアを試行し、ティアごとにリトライします。セッションアフィニティは、明示的なセッションIDまたは最初のユーザーメッセージに基づく安定したハッシュを使用します。
設定は、キー、リスナー、ルーティング設定、推論エフォート(モデルごとのオーバーライド付き)、プロキシ(インラインリストとproxyfile)、タイムアウト、接続プール、ログ、WebUI設定を対象とします。WebUIは、Configuration Center、Playground、診断、モニタリング、ライブログを提供します。管理APIルートは、認証、設定の取得/更新、リロード、シークレットの表示、アカウント更新、モニタリング統計、モデル診断、推論テスト、ログを処理します。
モニタリングは、リクエスト結果、上流試行、トークン使用量、リソース統計を追跡します。データ永続化には、設定ファイル、バックアップ、モデルキャッシュが含まれ、セッションとメトリクスはメモリ内にあります。ヘルスチェックは、カタログの可用性とプロキシの健全性に基づいてレディネスを報告します。開発にはGo 1.24+が必要で、標準的なGoツールを使用します。
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.