☰
零改造迁移:现有OpenAI SDK代码如何无缝接入Windows-Copilot-API
2026/10/14 14:57:43 网站建设 项目流程

【免费下载链接】Windows-Copilot-API

Reverse engineered Windows Copilot into an OpenAI-compatible API. Access GPT-4 and GPT-5 models through a simple REST interface without API keys or billing.

项目地址:https://gitcode.com/gh_mirrors/wi/Windows-Copilot-API
点击查看免费下载

如果你已经在用 OpenAI SDK,却想省掉 API Key 和账单,Windows-Copilot-API就是答案:它把免费的 Microsoft Copilot 反向工程成一个OpenAI 兼容 API,本地起一个服务后,你现有的chat.completions代码几乎不用动,只要把请求地址指向localhost即可调用。本文将带你完成一次真正的"零改造"迁移。

为什么值得迁移?3 个核心理由

在动手之前,先搞清楚它能给你带来什么:

  • 💸完全免费:使用你自己的 Copilot 账号(普通的微软/谷歌账号即可),不需要 API Key,不走任何计费通道。
  • 🔌Drop-in 替换:服务端说的就是 OpenAI 协议,任何 OpenAI 兼容客户端把它指向localhost就能直接工作。
  • 🌊流式 + 多轮对话:支持 token 级流式输出,也能通过conversation_id延续同一段对话线程。

⚠️ 这是一个非官方项目,与微软无隶属关系,仅用于个人使用,请遵守微软服务条款、理性使用。

接入前准备:2 分钟搭建本地 OpenAI 服务

迁移的第一步是把本地服务跑起来。整个过程只需要一条登录命令,会话会自动保存和刷新。

1️⃣ 获取项目并安装依赖(需 Python 3.9+):

git clone https://gitcode.com/gh_mirrors/wi/Windows-Copilot-API cd Windows-Copilot-API pip install -r requirements.txt

2️⃣ 安装 Playwright 所需的浏览器,并登录一次(会自动打开浏览器,登录微软/谷歌账号后浏览器自动关闭):

playwright install chromium python -m copilot login

3️⃣ 启动 OpenAI 兼容服务:

python app.py # -> Copilot OpenAI-compatible API on http://127.0.0.1:8000

启动成功后,你的"新 OpenAI"地址就是http://localhost:8000/v1。服务由 app.py 启动,核心逻辑在 server/api.py,OpenAI 报文格式由 server/openai_format.py 构造。

核心迁移:只改两行代码

这是整篇文章最关键的部分。对比你原来的 OpenAI 写法,只需要修改base_url,并给api_key填任意占位值(SDK 强制要求,但服务端会忽略它):

from openai import OpenAI client = OpenAI(base_url="http://localhost:8000/v1", api_key="unused") resp = client.chat.completions.create( model="copilot", messages=[{"role": "user", "content": "你好!"}], ) print(resp.choices[0].message.content)

就这么简单。官方示例可参考 examples/06_server_openai_sdk.py。

一个必改项:模型名

Copilot 没有模型选择器,所以服务只对外暴露一个模型,名字叫copilot。因此把代码里的gpt-4/gpt-4o统一替换成copilot即可(性能大约处于 GPT-4 级别)。

三种请求方式:单轮、流式与多轮对话

1. 标准单轮请求

如上文的chat.completions.create,一次一问,返回完整文本。

2. 流式输出(逐 token 打印)

在请求体里加"stream": true,SDK 会自动以流式返回,体验上和 OpenAI 完全一致:

for chunk in client.chat.completions.create( model="copilot", messages=[{"role": "user", "content": "讲个短笑话"}], stream=True, ): print(chunk.choices[0].delta.content or "", end="", flush=True)

3. 多轮对话(延续上下文)

Copilot 有自己的会话标识conversation_id,它不在 OpenAI 标准 schema 内,所以 SDK 会把它放进model_extra。想要延续上一轮,就把上次的 id 通过extra_body传回去:

# 从响应里取出会话 id(不在标准字段中) extra = getattr(resp, "model_extra", None) or {} cid = extra.get("conversation_id") # 下一轮携带该 id,即可继续同一线程 client.chat.completions.create( model="copilot", messages=[{"role": "user", "content": "现在用法语再说一遍?"}], extra_body={"conversation_id": cid}, )

请求/响应结构定义见 server/schemas.py,完整示例清单见 examples/README.md。

注意事项:限流、单模型与返回差异

迁移时这几点和官方 OpenAI 略有不同,提前了解可避免踩坑:

项目说明
限流服务默认限制 12 次/分钟,超限返回标准429+Retry-After头,openai SDK 会自动指数退避重试。可用环境变量RATE_LIMIT_RPM/RATE_LIMIT_BURST调整。
单模型只有一个copilot模型,没有gpt-4o-mini之类的可选列表。
参数被忽略temperature、max_tokens等字段会被接收但忽略(消费版协议不暴露这些开关)。
usage 为 0因为不走计费,usage里的 token 数恒为 0。
鉴权失效Cloudflare 凭证约 30 分钟过期,服务端过期时返回503,在宿主机重跑python -m copilot login即可恢复。

限流实现见 server/ratelimit.py,默认阈值在 server/config.py。

常见问题排查

  • 503(clearance_required):Cloudflare 凭证过期,重跑python -m copilot login重新登录即可。
  • 502(upstream_error):上游 Copilot 在高并发下的偶发抖动,属于临时错误,稍后重试即可。
  • 429(rate_limit_exceeded):请求过快,稍等Retry-After秒数后重试;建议保持并发在 1–4 之间。
  • 登录 / 网络异常:运行内置诊断工具会自动刷新会话并生成可分享的报告(敏感信息已脱敏):
python tests/diagnostic.py

迁移清单(TL;DR)

  1. 本地起服务:python app.py,得到http://localhost:8000/v1。
  2. SDK 中base_url指向该地址,api_key填"unused"。
  3. 模型名统一改成copilot。
  4. 需要多轮时,用extra_body={"conversation_id": cid}回传会话 id。
  5. 其余messages、stream等用法与原 OpenAI 代码保持一致。

照上面 5 步走,你的存量 OpenAI 代码基本无需重写就能"搬到"本地免费通道——这正是Windows-Copilot-API作为 OpenAI 兼容中间层的价值所在。

【免费下载链接】Windows-Copilot-API

Reverse engineered Windows Copilot into an OpenAI-compatible API. Access GPT-4 and GPT-5 models through a simple REST interface without API keys or billing.

项目地址:https://gitcode.com/gh_mirrors/wi/Windows-Copilot-API
点击查看免费下载

相关推荐

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询