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 프록시 순환 기능으로, 업스트림 서비스에 프록시를 통해 액세스할 때 유용합니다.
웹 관리 콘솔 관리자 로그인, 계정 OAuth/PKCE 연결, API 키 생성, 프록시 관리, 사용 통계, 대화 탐색 및 설정을 위한 단일 페이지 UI입니다.

대상 사용자

  • 개발자: Microsoft 365 Copilot 구독을 보유하고 있으며, 기존 OpenAI 호환 클라이언트 라이브러리나 도구를 코드 재작성 없이 재사용하려는 분.
  • 연구원: Copilot의 LLM 기능을 실험 중이며 벤치마킹이나 다른 프레임워크와의 통합을 위해 표준 API 인터페이스가 필요한 분.
  • 개인 사용자: 세션 캐싱, 사용량 추적, UI를 갖춘 로컬 "API 릴레이"를 원하면서 Copilot 백엔드를 유지하려는 분.

빠른 시작 (README 요약)

  1. 다운로드: GitHub 릴리스 페이지에서 운영체제에 맞는 빌드된 바이너리를 다운로드합니다.
  2. 관리자 비밀번호 설정: 환경 변수 M365_ADMIN_PASSWORD를 설정합니다.
  3. 실행: 바이너리를 실행합니다. 기본적으로 127.0.0.1:4141에서 수신 대기합니다.
  4. 설정: 브라우저에서 해당 주소로 접속하여 관리자 비밀번호로 로그인한 후 UI를 통해 다음을 수행합니다:
    • PKCE OAuth 흐름을 통해 하나 이상의 Microsoft 365 계정을 인증합니다.
    • API 키를 생성합니다.
  5. 호출: 다른 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
  • 프로젝트