HEXUXIU/M365-Copilot2API
Microsoft 365 Copilot → OpenAI / Anthropic 兼容 API 网关。
概要
M365‑Copilot2API は、Goで記述されたセルフホスト型ゲートウェイです。Microsoft 365 Copilot(商用サブスクリプションの背後にあるChatHubサービス)を、標準的なOpenAIまたはAnthropic互換のAPIとして利用可能にします。Copilotが使用するプライベートWebSocketプロトコルを、馴染みのある /v1/chat/completions や /v1/messages などのエンドポイントに変換するため、OpenAIやClaudeスタイルのAPI(Claude Code、OpenCode、Cursor、Codexなど)と通信するあらゆるクライアントが、変更なしでCopilotを呼び出すことができます。
コアコンセプト
| コンセプト | 仕組み |
|---|---|
| プロトコルブリッジ | 内部の chathub モジュールがCopilotのWebSocketハンドシェイク、ハートビート、トークンストリーミング、ツール呼び出し、マルチモーダル(画像)アップロードを処理します。ブリッジは外部に対してクリーンなHTTP/JSON APIを提供します。 |
| OpenAI & Anthropic互換性 | /v1/chat/completions、/v1/responses (OpenAI)、/v1/messages (Anthropic)、/v1/images/generations を公開します。ストリーミング (stream:true)、関数呼び出し変換、OpenAIの image_url 形式による画像入力をサポートします。 |
| セッション再利用 | リクエストに X‑M365‑Session‑Id を含めて特定のクラウド側会話にバインドするか、ゲートウェイが コンテンツキー(完全一致または類似性ベースの一致)に基づいて自動的に会話を再利用します。一致が見つかった場合、新しいメッセージのみがアップストリームに送信されるため、トークンを節約できます。 |
| マルチアカウント & フェイルオーバー | 複数のMicrosoft 365アカウントを追加できます。ゲートウェイはトラフィックをローテーションし、健全性を監視し、アカウントが失敗した場合は自動的に別のアカウントに切り替えます。 |
| プロキシプール | ヘルスチェック付きのオプションのHTTP/HTTPS/SOCKS5プロキシローテーション。アップストリームサービスにプロキシ経由でアクセスする場合に便利です。 |
| Web管理コンソール | 管理者ログイン、アカウントのOAuth/PKCEリンク、APIキー作成、プロキシ管理、使用統計、会話ブラウジング、設定のためのシングルページUI。 |
対象ユーザー
- 開発者:Microsoft 365 Copilotサブスクリプションを所有しており、既存のOpenAI互換クライアントライブラリやツールをコードの書き換えなしで再利用したい方。
- 研究者:CopilotのLLM機能を実験しており、ベンチマークや他のフレームワークとの統合のために標準的なAPIインターフェースが必要な方。
- 個人セルフホストユーザー:セッションキャッシュ、使用状況追跡、UIを備えたローカルな「APIリレー」を構築しつつ、Copilotのバックエンドを維持したい方。
クイックスタート(READMEの要約)
- ダウンロード:GitHubのリリースページから、お使いのOS用のビルド済みバイナリをダウンロードします。
- 管理者パスワードの設定:環境変数
M365_ADMIN_PASSWORDを設定します。 - 実行:バイナリを実行します。デフォルトで
127.0.0.1:4141でリッスンします。 - 設定:ブラウザでそのアドレスを開き、管理者パスワードでログインし、UIを使用して以下を行います:
- PKCE OAuthフローを介して1つ以上のMicrosoft 365アカウントを認証します。
- APIキーを作成します。
- 呼び出し:他のOpenAIサービスと同様にゲートウェイを呼び出します。例:
curl http://127.0.0.1:4141/v1/chat/completions \ -H "Authorization: Bearer <YOUR_API_KEY>" \ -H "Content-Type: application/json" \ -d '{"model":"gpt-5.6-sol","messages":[{"role":"user","content":"你好"}]}'
主な機能
- ストリーミングSSE:トークンごとの出力が
stream:trueで動作します。 - ツール/関数呼び出し:OpenAIスタイルの
function呼び出しがCopilotのツールプロトコルにマッピングされます(ルーターモードはそのまま動作します)。 - マルチモーダル:base64データURLまたはHTTPS URL経由で画像を送信できます。ゲートウェイが画像をCopilotにアップロードし、ファイル参照を注入します。
- 画像生成:
/v1/images/generationsはCopilotの画像モデル (flux‑3/4) に転送されます。 - 使用ログ:キーごと、モデルごと、エンドポイントごとの統計が
usage.jsonlに書き込まれ、ダッシュボードに表示されます。 - 自動クリーンアップ:アイドル状態のクラウド会話は、設定可能なTTL(デフォルト2時間)経過後、または最大数を超えた場合に回収されます。
制限事項 / 警告(READMEの記載通り)
- これはMicrosoftの公式製品ではなく、Microsoft、OpenAI、Anthropicとは一切関係ありません。
- サードパーティのアカウントやプロキシトリックの使用は、サービスの利用規約に違反する可能性があります。ユーザーはすべてのリスクを負うものとします。
- 本プロジェクトは AGPL‑3.0(非商用リレー制限付き) でリリースされています。これを使用して構築されたホスト型APIサービスを販売することはできません。
- ゲートウェイはデフォルトでローカルネットワーク上でのみ実行されます。公開するには、独自のTLSリバースプロキシと適切なセキュリティ強化が必要です。
詳細情報
- 完全なAPIリファレンス (
/v1/models,/v1/chat/completions,/v1/messages,/v1/images/generations,/v1/sessions, 管理用/api/*)。 - ソースレイアウト (
cmd/server,internal/web,internal/chathub, 静的web/UI, ヘルパースクリプト)。 - 貢献ガイドとテストスイート (
go test ./...)。
上記の詳細はすべてリポジトリのREADMEから直接引用したものであり、追加の機能は推測されていません。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- Dispatch
- プロジェクト