Appearance
BYOK 让你不依赖 GitHub Copilot 订阅,直接用自己的 OpenAI、Anthropic、Azure OpenAI 或 Ollama 等 API Key 驱动 Copilot SDK。所有提供商配置都在 Session 创建时传入,不支持托管身份,model 参数必填。
GitHub Copilot SDK BYOK:用自己的 AI 提供商 API Key 替代 Copilot 订阅
BYOK 适合的场景
- ISV 和 SaaS 产品:不想让用户必须有 Copilot 订阅
- 成本控制:直接掌控 AI 调用费用,不经过 Copilot 计费
- 私有部署:使用 Azure OpenAI 等本地/私有部署的模型
- 本地运行:使用 Ollama 等本地模型,完全离线
支持的提供商
| 提供商 | type 值 | 需要 API Key |
|---|---|---|
| OpenAI | openai | 是 |
| Azure OpenAI / AI Foundry | azure-openai | 是 |
| Anthropic | anthropic | 是 |
| Ollama | ollama | 否 |
| OpenAI 兼容端点 | openai + 自定义 baseUrl | 视情况 |
配置示例
OpenAI
typescript
import { createSession } from '@github/copilot-sdk'
const session = await createSession({
auth: {
type: 'openai',
baseUrl: 'https://api.openai.com/v1',
apiKey: process.env.OPENAI_API_KEY,
model: 'gpt-4o' // model 必填
}
})Azure OpenAI
typescript
const session = await createSession({
auth: {
type: 'azure-openai',
baseUrl: 'https://your-resource.openai.azure.com/',
apiKey: process.env.AZURE_OPENAI_KEY,
model: 'gpt-4o', // 部署名称
apiVersion: '2024-02-01' // 可选,指定 API 版本
}
})Anthropic Claude
typescript
const session = await createSession({
auth: {
type: 'anthropic',
apiKey: process.env.ANTHROPIC_API_KEY,
model: 'claude-sonnet-4-6' // 必填,指定 Claude 模型
}
})Ollama(本地,无需 API Key)
typescript
const session = await createSession({
auth: {
type: 'ollama',
baseUrl: 'http://localhost:11434',
model: 'llama3.1' // 已通过 `ollama pull` 下载的模型
}
})任意 OpenAI 兼容端点
typescript
const session = await createSession({
auth: {
type: 'openai',
baseUrl: 'https://your-custom-endpoint.com/v1',
apiKey: process.env.CUSTOM_API_KEY,
model: 'your-model-name',
// 部分提供商需要 wireApi 设置
wireApi: 'openai'
}
})重要限制
- 仅支持静态凭证:API Key 需要明确传入,不支持托管身份(Azure Managed Identity)或联邦身份(OIDC)
- model 参数必填:无论哪种提供商,都必须指定 model
- 不支持 GitHub 上下文功能:BYOK 绕过 Copilot,无法使用 GitHub 仓库语义索引等依赖 Copilot 订阅的功能
安全最佳实践
永远不要把 API Key 写在代码中:
typescript
// 错误:硬编码 API Key
const session = await createSession({
auth: { type: 'openai', apiKey: 'sk-xxxxx', model: 'gpt-4o' }
})
// 正确:从环境变量读取
const apiKey = process.env.OPENAI_API_KEY
if (!apiKey) throw new Error('OPENAI_API_KEY 未配置')
const session = await createSession({
auth: { type: 'openai', apiKey, model: 'gpt-4o' }
})常见问题
Q: BYOK 模式下能用 Copilot 的 MCP 工具集成吗?
A: 部分可以。MCP 工具集成是 SDK 层面的功能,不依赖 Copilot 订阅,所以 BYOK 模式下仍然可以连接 MCP 服务器。但 GitHub 仓库索引等 Copilot 原生功能不可用。
Q: Azure Managed Identity 什么时候会支持?
A: 官方目前无计划,需要关注 SDK 更新日志。当前 BYOK 是静态凭证模式,企业环境中建议在应用启动时通过 Managed Identity 获取 token,再以静态 token 方式传入 SDK。
Q: 使用 Ollama 时模型必须在本地吗?
A: 是的。baseUrl 指向 Ollama 服务地址,模型必须通过 ollama pull <model> 预先下载到本地或服务器,SDK 不会自动下载模型。