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