Skip to content

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
OpenAIopenai
Azure OpenAI / AI Foundryazure-openai
Anthropicanthropic
Ollamaollama
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 不会自动下载模型。