使用 API 接入 Github Copilot 提供的模型

使用 API 接入 Github Copilot 提供的模型

1. 获取 GitHub access token(Device Flow)

1.1 申请 device code

export CLIENT_ID="Iv1.123456"
export SCOPE="read:user"

curl -sS -X POST "https://github.com/login/device/code" \
  -H "Accept: application/json" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  --data-urlencode "client_id=${CLIENT_ID}" \
  --data-urlencode "scope=${SCOPE}"
{"device_code":"9c2e1edec2cb88521acfeda02f1cb23sb4ceedfa","user_code":"E12E-8762","verification_uri":"https://github.com/login/device","expires_in":899,"interval":5}

你会得到 JSON:device_code, user_code, verification_uri, expires_in, interval。

1.2 打开浏览器授权

访问 verification_uri,输入 user_code,同意授权。

1.3 轮询换 GitHub access token

export DEVICE_CODE="9c2e1edec2cb88521acfeda02f1cb23sb4ceedfa"

curl -sS -X POST "https://github.com/login/oauth/access_token" \
  -H "Accept: application/json" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  --data-urlencode "client_id=${CLIENT_ID}" \
  --data-urlencode "device_code=${DEVICE_CODE}" \
  --data-urlencode "grant_type=urn:ietf:params:oauth:grant-type:device_code"
{"access_token":"ghu_af2cHWUGwwyJ3SOKh7crBAHUplj72900zMne","token_type":"bearer","scope":""}

成功返回 access_token 后:

export GH_OAUTH_TOKEN="ghu_af2cHWUGwwyJ3SOKh7crBAHUplj72900zMne"

2. 用 GitHub token 交换 Copilot token

curl -sS -X GET "https://api.github.com/copilot_internal/v2/token" \
  -H "Accept: application/json" \
  -H "Authorization: Bearer ${GH_OAUTH_TOKEN}"
{
  "agent_mode_auto_approval": true,
  "annotations_enabled": true,
  "azure_only": false,
  "blackbird_clientside_indexing": false,
  "chat_enabled": true,
  "chat_jetbrains_enabled": true,
  "code_quote_enabled": true,
  "code_review_enabled": true,
  "codesearch": true,
  "copilotignore_enabled": false,
  "endpoints": {
    "api": "https://api.individual.githubcopilot.com",
    "origin-tracker": "https://origin-tracker.individual.githubcopilot.com",
    "proxy": "https://proxy.individual.githubcopilot.com",
    "telemetry": "https://telemetry.individual.githubcopilot.com"
  },
  "expires_at": 1772778126,
  "individual": true,
  "limited_user_quotas": null,
  "limited_user_reset_date": null,
  "prompt_8k": true,
  "public_suggestions": "disabled",
  "refresh_in": 1500,
  "sku": "free_engaged_oss_quota",
  "snippy_load_test_enabled": false,
  "telemetry": "enabled",
  "token": "tid=ssadead212edf672efe596beb27864df;exp=1772778126;sku=free_engaged_oss_quota;proxy-ep=proxy.individual.githubcopilot.com;st=dotcom;chat=1;cit=1;malfil=1;editor_preview_features=1;agent_mode=1;agent_mode_auto_approval=1;mcp=1;ccr=1;rt=1;8kp=1;ip=144.17.10.158;asn=AS14618:72k39821h13236e651efeed9hjyuuyj8fa5927f4ac7f2cddfasdfasd882baec02",
  "tracking_id": "ssadead212edf672efe596beb27864df",
  "vsc_electron_fetcher_v2": false,
  "xcode": true,
  "xcode_chat": false
}

把返回 JSON 里的 token 保存:

export COPILOT_TOKEN="tid=ssadead212edf672efe596beb27864df;exp=1772778126;sku=free_engaged_oss_quota;proxy-ep=proxy.individual.githubcopilot.com;st=dotcom;chat=1;cit=1;malfil=1;editor_preview_features=1;agent_mode=1;agent_mode_auto_approval=1;mcp=1;ccr=1;rt=1;8kp=1;ip=144.17.10.158;asn=AS14618:72k39821h13236e651efeed9hjyuuyj8fa5927f4ac7f2cddfasdfasd882baec02"

同时你也可以验证 Copilot internal 用户信息(这一步用的是 GitHub token,不是 Copilot token):

curl -sS -X GET "https://api.github.com/copilot_internal/user" \
  -H "Authorization: token ${GH_OAUTH_TOKEN}" \
  -H "Editor-Version: vscode/1.96.2" \
  -H "User-Agent: GitHubCopilotChat/0.26.7" \
  -H "X-Github-Api-Version: 2025-04-01" \
  -H "Accept: application/json"
{"login":"your_account_name","access_type_sku":"free_engaged_oss_quota","analytics_tracking_id":"ssadead212edf672efe596beb27864df","assigned_date":"2026-03-15T10:27:26+08:00","can_signup_for_limited":false,"chat_enabled":true,"copilotignore_enabled":false,"copilot_plan":"individual","is_mcp_enabled":true,"organization_login_list":[],"organization_list":[],"restricted_telemetry":true,"endpoints":{"api":"https://api.individual.githubcopilot.com","origin-tracker":"https://origin-tracker.individual.githubcopilot.com","proxy":"https://proxy.individual.githubcopilot.com","telemetry":"https://telemetry.individual.githubcopilot.com"},"quota_reset_date":"2026-04-01","quota_snapshots":{"chat":{"entitlement":0,"overage_count":0,"overage_permitted":false,"percent_remaining":100.0,"quota_id":"chat","quota_remaining":0.0,"remaining":0,"unlimited":true,"timestamp_utc":"2026-03-06T05:53:53.296Z"},"completions":{"entitlement":0,"overage_count":0,"overage_permitted":false,"percent_remaining":100.0,"quota_id":"completions","quota_remaining":0.0,"remaining":0,"unlimited":true,"timestamp_utc":"2026-03-06T05:53:53.296Z"},"premium_interactions":{"entitlement":300,"overage_count":0,"overage_permitted":false,"percent_remaining":86.33333333333333,"quota_id":"premium_interactions","quota_remaining":259.0,"remaining":259,"unlimited":false,"timestamp_utc":"2026-03-06T05:53:53.296Z"}},"quota_reset_date_utc":"2026-04-01T00:00:00.000Z"}  

3. 用 Copilot token 调用模型(验证连通性)

3.1 测试 /models 模型列表接口

export COPILOT_BASE_URL=https://api.individual.githubcopilot.com

curl -i -sS -X GET "${COPILOT_BASE_URL}/models" \
  -H "Authorization: Bearer ${COPILOT_TOKEN}" \
  -H "Accept: application/json" \
  -H "Editor-Version: vscode/1.96.2" \
  -H "User-Agent: GitHubCopilotChat/0.26.7"
HTTP/2 200
cache-control: private, max-age=21600
content-security-policy: default-src 'none'; sandbox
content-type: application/json
strict-transport-security: max-age=31536000
date: Fri, 06 Mar 2026 05:58:21 GMT
x-github-backend: Kubernetes
x-github-request-id: C3D7:9A21BF:4E7C8D2:1F5A9BC:72D4E6A1

{"data":[{"capabilities":{"family":"claude-opus-4.6-fast","limits":{"max_context_window_tokens":200000,"max_non_streaming_output_tokens":16000,"max_output_tokens":64000,"max_prompt_tokens":128000,"vision":{"max_prompt_image_size":3145728,"max_prompt_images":1,"supported_media_types":["image/jpeg","image/png","image/webp"]}},"object":"model_capabilities","supports":{"adaptive_thinking":true,"max_thinking_budget":32000,"min_thinking_budget":1024,"parallel_tool_calls":true,"reasoning_effort":["low","medium","high"],"streaming":true,"structured_outputs":true,"tool_calls":true,"vision":true},"tokenizer":"o200k_base","type":"chat"},"id":"claude-opus-4.6-fast","model_picker_category":"powerful","model_picker_enabled":false,"name":"Claude Opus 4.6 (fast mode)","object":"model","policy":{"state":"disabled","terms":"Enable access to the latest Claude Opus 4.6 fast model from Anthropic. [Learn more about how GitHub Copilot serves Claude Opus 4.6 fast](https://gh.io/copilot-claude-opus)."},"preview":true,"supported_endpoints":["/v1/messages","/chat/completions"],"vendor":"Anthropic","version":"claude-opus-4.6-fast"},{"capabilities":{"family":"claude-opus-4.6","limits":{"max_context_window_tokens":200000,"max_non_streaming_output_tokens":16000,"max_output_tokens":64000,"max_prompt_tokens":128000,"vision":{"max_prompt_image_size":3145728,"max_prompt_images":1,"supported_media_types":["image/jpeg","image/png","image/webp"]}},"object":"model_capabilities","supports":{"adaptive_thinking":true,"max_thinking_budget":32000,"min_thinking_budget":1024,"parallel_tool_calls":true,"reasoning_effort":["low","medium","high"],"streaming":true,"structured_outputs":true,"tool_calls":true,"vision":true},"tokenizer":"o200k_base","type":"chat"},"id":"claude-opus-4.6","model_picker_category":"powerful","model_picker_enabled":true,"name":"Claude Opus 4.6","object":"model","policy":{"state":"enabled","terms":"Enable access to the latest Claude Opus 4.6 model from Anthropic. [Learn more about how GitHub Copilot serves Claude Opus 4.6](https://gh.io/copilot-claude-opus)."},"preview":false,"supported_endpoints":["/v1/messages","/chat/completions"],"vendor":"Anthropic","version":"claude-opus-4.6"},{"capabilities":{"family":"claude-sonnet-4.6","limits":{"max_context_window_tokens":200000,"max_non_streaming_output_tokens":16000,"max_output_tokens":32000,"max_prompt_tokens":128000,"vision":{"max_prompt_image_size":3145728,"max_prompt_images":5,"supported_media_types":["image/jpeg","image/png","image/webp"]}},"object":"model_capabilities","supports":{"adaptive_thinking":true,"max_thinking_budget":32000,"min_thinking_budget":1024,"parallel_tool_calls":true,"reasoning_effort":["low","medium","high"],"streaming":true,"structured_outputs":true,"tool_calls":true,"vision":true},"tokenizer":"o200k_base","type":"chat"},"id":"claude-sonnet-4.6","model_picker_category":"versatile","model_picker_enabled":true,"name":"Claude Sonnet 4.6","object":"model","policy":{"state":"enabled","terms":"Enable access to the latest Claude Sonnet 4.6 model from Anthropic. [Learn more about how GitHub Copilot serves Claude Sonnet 4.6](https://gh.io/copilot-claude-opus)."},"preview":false,"supported_endpoints":["/chat/completions","/v1/messages"],"vendor":"Anthropic","version":"claude-sonnet-4.6"},{"capabilities":{"family":"gemini-3.1-pro-preview","limits":{"max_context_window_tokens":128000,"max_output_tokens":64000,"max_prompt_tokens":128000,"vision":{"max_prompt_image_size":3145728,"max_prompt_images":10,"supported_media_types":["image/jpeg","image/png","image/webp"]}},"object":"model_capabilities","supports":{"max_thinking_budget":32000,"min_thinking_budget":256,"parallel_tool_calls":true,"reasoning_effort":["low","medium","high"],"streaming":true,"tool_calls":true,"vision":true},"tokenizer":"o200k_base","type":"chat"},"id":"gemini-3.1-pro-preview","model_picker_category":"powerful","model_picker_enabled":true,"name":"Gemini 3.1 Pro","object":"model","policy":{"state":"enabled","terms":"Enable access to the latest Gemini 3 Pro model from Google. [Learn more about how GitHub Copilot serves Gemini 3 Pro](https://docs.github.com/en/copilot/reference/ai-models/model-hosting#google-models)."},"preview":true,"supported_endpoints":["/chat/completions"],"vendor":"Google","version":"gemini-3.1-pro-preview"},{"capabilities":{"family":"gpt-5.2-codex","limits":{"max_context_window_tokens":400000,"max_output_tokens":128000,"max_prompt_tokens":272000,"vision":{"max_prompt_image_size":3145728,"max_prompt_images":1,"supported_media_types":["image/jpeg","image/png","image/webp","image/gif"]}},"object":"model_capabilities","supports":{"parallel_tool_calls":true,"reasoning_effort":["low","medium","high"],"streaming":true,"structured_outputs":true,"tool_calls":true,"vision":true},"tokenizer":"o200k_base","type":"chat"},"id":"gpt-5.2-codex","model_picker_category":"powerful","model_picker_enabled":true,"name":"GPT-5.2-Codex","object":"model","policy":{"state":"enabled","terms":"Enable access to the latest GPT-5.2-Codex model from OpenAI. [Learn more about how GitHub Copilot serves GPT-5.2-Codex](https://gh.io/copilot-openai)."},"preview":false,"supported_endpoints":["/responses"],"vendor":"OpenAI","version":"gpt-5.2-codex"},{"capabilities":{"family":"gpt-5.3-codex","limits":{"max_context_window_tokens":400000,"max_output_tokens":128000,"max_prompt_tokens":272000,"vision":{"max_prompt_image_size":3145728,"max_prompt_images":1,"supported_media_types":["image/jpeg","image/png","image/webp","image/gif"]}},"object":"model_capabilities","supports":{"parallel_tool_calls":true,"reasoning_effort":["low","medium","high"],"streaming":true,"structured_outputs":true,"tool_calls":true,"vision":true},"tokenizer":"o200k_base","type":"chat"},"id":"gpt-5.3-codex","model_picker_category":"powerful","model_picker_enabled":true,"name":"GPT-5.3-Codex","object":"model","policy":{"state":"enabled","terms":"Enable access to the latest GPT-5.3-Codex model from OpenAI. [Learn more about how GitHub Copilot serves GPT-5.3-Codex](https://gh.io/copilot-openai)."},"preview":false,"supported_endpoints":["/responses"],"vendor":"OpenAI","version":"gpt-5.3-codex"},{"capabilities":{"family":"gpt-5.4","limits":{"max_context_window_tokens":400000,"max_output_tokens":128000,"max_prompt_tokens":272000,"vision":{"max_prompt_image_size":3145728,"max_prompt_images":1,"supported_media_types":["image/jpeg","image/png","image/webp","image/gif"]}},"object":"model_capabilities","supports":{"parallel_tool_calls":true,"reasoning_effort":["low","medium","high"],"streaming":true,"structured_outputs":true,"tool_calls":true,"vision":true},"tokenizer":"o200k_base","type":"chat"},"id":"gpt-5.4","model_picker_category":"powerful","model_picker_enabled":true,"name":"GPT-5.4","object":"model","policy":{"state":"enabled","terms":"Enable access to the latest GPT-5.4 model from OpenAI. [Learn more about how GitHub Copilot serves GPT-5.4](https://gh.io/copilot-openai)."},"preview":false,"supported_endpoints":["/responses"],"vendor":"OpenAI","version":"gpt-5.4"},{"capabilities":{"family":"gpt-5-mini","limits":{"max_context_window_tokens":264000,"max_output_tokens":64000,"max_prompt_tokens":128000,"vision":{"max_prompt_image_size":3145728,"max_prompt_images":1,"supported_media_types":["image/jpeg","image/png","image/webp","image/gif"]}},"object":"model_capabilities","supports":{"parallel_tool_calls":true,"reasoning_effort":["low","medium","high"],"streaming":true,"structured_outputs":true,"tool_calls":true,"vision":true},"tokenizer":"o200k_base","type":"chat"},"id":"gpt-5-mini","model_picker_category":"lightweight","model_picker_enabled":true,"name":"GPT-5 mini","object":"model","policy":{"state":"enabled","terms":"Enable access to the latest GPT-5 mini model from OpenAI. [Learn more about how GitHub Copilot serves GPT-5 mini](https://gh.io/copilot-openai)."},"preview":false,"supported_endpoints":["/chat/completions","/responses"],"vendor":"Azure OpenAI","version":"gpt-5-mini"},{"capabilities":{"family":"gpt-4o-mini","limits":{"max_context_window_tokens":128000,"max_output_tokens":4096,"max_prompt_tokens":12288},"object":"model_capabilities","supports":{"parallel_tool_calls":true,"streaming":true,"tool_calls":true},"tokenizer":"o200k_base","type":"chat"},"id":"gpt-4o-mini-2024-07-18","model_picker_enabled":false,"name":"GPT-4o mini","object":"model","preview":false,"vendor":"Azure OpenAI","version":"gpt-4o-mini-2024-07-18"},{"capabilities":{"family":"gpt-4o","limits":{"max_context_window_tokens":128000,"max_output_tokens":16384,"max_prompt_tokens":64000,"vision":{"max_prompt_image_size":3145728,"max_prompt_images":1,"supported_media_types":["image/jpeg","image/png","image/webp","image/gif"]}},"object":"model_capabilities","supports":{"parallel_tool_calls":true,"streaming":true,"tool_calls":true,"vision":true},"tokenizer":"o200k_base","type":"chat"},"id":"gpt-4o-2024-11-20","model_picker_enabled":false,"name":"GPT-4o","object":"model","preview":false,"vendor":"Azure OpenAI","version":"gpt-4o-2024-11-20"},{"capabilities":{"family":"gpt-4o","limits":{"max_context_window_tokens":128000,"max_output_tokens":16384,"max_prompt_tokens":64000},"object":"model_capabilities","supports":{"parallel_tool_calls":true,"streaming":true,"tool_calls":true},"tokenizer":"o200k_base","type":"chat"},"id":"gpt-4o-2024-08-06","model_picker_enabled":false,"name":"GPT-4o","object":"model","preview":false,"vendor":"Azure OpenAI","version":"gpt-4o-2024-08-06"},{"capabilities":{"family":"grok-code","limits":{"max_context_window_tokens":128000,"max_output_tokens":64000,"max_prompt_tokens":128000},"object":"model_capabilities","supports":{"streaming":true,"structured_outputs":true,"tool_calls":true},"tokenizer":"o200k_base","type":"chat"},"id":"grok-code-fast-1","model_picker_category":"lightweight","model_picker_enabled":true,"name":"Grok Code Fast 1","object":"model","policy":{"state":"enabled","terms":"Enable access to the latest Grok Code Fast 1 model from xAI. If enabled, you instruct GitHub Copilot to send data to xAI Grok Code Fast 1. [Learn more about how GitHub Copilot serves Grok Code Fast 1](https://docs.github.com/en/copilot/reference/ai-models/model-hosting#xai-models)."},"preview":false,"vendor":"xAI","version":"grok-code-fast-1"},{"capabilities":{"family":"gpt-5.1","limits":{"max_context_window_tokens":264000,"max_output_tokens":64000,"max_prompt_tokens":128000,"vision":{"max_prompt_image_size":3145728,"max_prompt_images":1,"supported_media_types":["image/jpeg","image/png","image/webp","image/gif"]}},"object":"model_capabilities","supports":{"parallel_tool_calls":true,"reasoning_effort":["none","low","medium","high"],"streaming":true,"structured_outputs":true,"tool_calls":true,"vision":true},"tokenizer":"o200k_base","type":"chat"},"id":"gpt-5.1","model_picker_category":"versatile","model_picker_enabled":true,"name":"GPT-5.1","object":"model","policy":{"state":"enabled","terms":"Enable access to the latest GPT-5.1 model from OpenAI. [Learn more about how GitHub Copilot serves GPT-5.1](https://gh.io/copilot-openai)."},"preview":false,"supported_endpoints":["/chat/completions","/responses"],"vendor":"OpenAI","version":"gpt-5.1"},{"capabilities":{"family":"gpt-5.1-codex","limits":{"max_context_window_tokens":400000,"max_output_tokens":128000,"max_prompt_tokens":128000,"vision":{"max_prompt_image_size":3145728,"max_prompt_images":1,"supported_media_types":["image/jpeg","image/png","image/webp","image/gif"]}},"object":"model_capabilities","supports":{"parallel_tool_calls":true,"reasoning_effort":["low","medium","high"],"streaming":true,"structured_outputs":true,"tool_calls":true,"vision":true},"tokenizer":"o200k_base","type":"chat"},"id":"gpt-5.1-codex","model_picker_category":"powerful","model_picker_enabled":true,"name":"GPT-5.1-Codex","object":"model","policy":{"state":"enabled","terms":"Enable access to the latest GPT-5.1-Codex model from OpenAI. [Learn more about how GitHub Copilot serves GPT-5.1-Codex](https://gh.io/copilot-openai)."},"preview":false,"supported_endpoints":["/responses"],"vendor":"OpenAI","version":"gpt-5.1-codex"},{"capabilities":{"family":"gpt-5.1-codex-mini","limits":{"max_context_window_tokens":400000,"max_output_tokens":128000,"max_prompt_tokens":128000,"vision":{"max_prompt_image_size":3145728,"max_prompt_images":1,"supported_media_types":["image/jpeg","image/png","image/webp","image/gif"]}},"object":"model_capabilities","supports":{"parallel_tool_calls":true,"reasoning_effort":["low","medium","high"],"streaming":true,"structured_outputs":true,"tool_calls":true,"vision":true},"tokenizer":"o200k_base","type":"chat"},"id":"gpt-5.1-codex-mini","model_picker_category":"powerful","model_picker_enabled":true,"name":"GPT-5.1-Codex-Mini","object":"model","policy":{"state":"enabled","terms":"Enable access to the latest GPT-5.1-Codex-Mini model from OpenAI. [Learn more about how GitHub Copilot serves GPT-5.1-Codex-Mini](https://gh.io/copilot-openai)."},"preview":true,"supported_endpoints":["/responses"],"vendor":"OpenAI","version":"gpt-5.1-codex-mini"},{"capabilities":{"family":"gpt-5.1-codex-max","limits":{"max_context_window_tokens":400000,"max_output_tokens":128000,"max_prompt_tokens":128000,"vision":{"max_prompt_image_size":3145728,"max_prompt_images":1,"supported_media_types":["image/jpeg","image/png","image/webp","image/gif"]}},"object":"model_capabilities","supports":{"parallel_tool_calls":true,"reasoning_effort":["low","medium","high"],"streaming":true,"structured_outputs":true,"tool_calls":true,"vision":true},"tokenizer":"o200k_base","type":"chat"},"id":"gpt-5.1-codex-max","model_picker_category":"powerful","model_picker_enabled":true,"name":"GPT-5.1-Codex-Max","object":"model","policy":{"state":"enabled","terms":"Enable access to the latest GPT-5.1-Codex-Max model from OpenAI. [Learn more about how GitHub Copilot serves GPT-5.1-Codex-Max](https://gh.io/copilot-openai)."},"preview":false,"supported_endpoints":["/responses"],"vendor":"OpenAI","version":"gpt-5.1-codex-max"},{"capabilities":{"family":"text-embedding-3-small","limits":{"max_inputs":512},"object":"model_capabilities","supports":{"dimensions":true},"tokenizer":"cl100k_base","type":"embeddings"},"id":"text-embedding-3-small","model_picker_enabled":false,"name":"Embedding V3 small","object":"model","preview":false,"vendor":"Azure OpenAI","version":"text-embedding-3-small"},{"capabilities":{"family":"text-embedding-3-small","object":"model_capabilities","supports":{"dimensions":true},"tokenizer":"cl100k_base","type":"embeddings"},"id":"text-embedding-3-small-inference","model_picker_enabled":false,"name":"Embedding V3 small (Inference)","object":"model","preview":false,"vendor":"Azure OpenAI","version":"text-embedding-3-small"},{"capabilities":{"family":"claude-sonnet-4","limits":{"max_context_window_tokens":216000,"max_output_tokens":16000,"max_prompt_tokens":128000,"vision":{"max_prompt_image_size":3145728,"max_prompt_images":5,"supported_media_types":["image/jpeg","image/png","image/webp"]}},"object":"model_capabilities","supports":{"max_thinking_budget":32000,"min_thinking_budget":1024,"parallel_tool_calls":true,"streaming":true,"tool_calls":true,"vision":true},"tokenizer":"o200k_base","type":"chat"},"id":"claude-sonnet-4","model_picker_category":"versatile","model_picker_enabled":true,"name":"Claude Sonnet 4","object":"model","policy":{"state":"enabled","terms":"Enable access to the latest Claude Sonnet 4 model from Anthropic. [Learn more about how GitHub Copilot serves Claude Sonnet 4](https://docs.github.com/en/copilot/using-github-copilot/ai-models/using-claude-sonnet-in-github-copilot)."},"preview":false,"supported_endpoints":["/chat/completions","/v1/messages"],"vendor":"Anthropic","version":"claude-sonnet-4"},{"capabilities":{"family":"claude-sonnet-4.5","limits":{"max_context_window_tokens":200000,"max_non_streaming_output_tokens":16000,"max_output_tokens":32000,"max_prompt_tokens":128000,"vision":{"max_prompt_image_size":3145728,"max_prompt_images":5,"supported_media_types":["image/jpeg","image/png","image/webp"]}},"object":"model_capabilities","supports":{"max_thinking_budget":32000,"min_thinking_budget":1024,"parallel_tool_calls":true,"streaming":true,"tool_calls":true,"vision":true},"tokenizer":"o200k_base","type":"chat"},"id":"claude-sonnet-4.5","model_picker_category":"versatile","model_picker_enabled":true,"name":"Claude Sonnet 4.5","object":"model","policy":{"state":"enabled","terms":"Enable access to the latest Claude Sonnet 4.5 model from Anthropic. [Learn more about how GitHub Copilot serves Claude Sonnet 4.5](https://docs.github.com/en/copilot/using-github-copilot/ai-models/using-claude-sonnet-in-github-copilot)."},"preview":false,"supported_endpoints":["/chat/completions","/v1/messages"],"vendor":"Anthropic","version":"claude-sonnet-4.5"},{"capabilities":{"family":"claude-opus-4.5","limits":{"max_context_window_tokens":200000,"max_non_streaming_output_tokens":16000,"max_output_tokens":32000,"max_prompt_tokens":128000,"vision":{"max_prompt_image_size":3145728,"max_prompt_images":5,"supported_media_types":["image/jpeg","image/png","image/webp"]}},"object":"model_capabilities","supports":{"max_thinking_budget":32000,"min_thinking_budget":1024,"parallel_tool_calls":true,"streaming":true,"tool_calls":true,"vision":true},"tokenizer":"o200k_base","type":"chat"},"id":"claude-opus-4.5","model_picker_category":"powerful","model_picker_enabled":true,"name":"Claude Opus 4.5","object":"model","policy":{"state":"enabled","terms":"Enable access to the latest Claude Opus 4.5 model from Anthropic. [Learn more about how GitHub Copilot serves Claude Opus 4.5](https://gh.io/copilot-anthropic)."},"preview":false,"supported_endpoints":["/chat/completions","/v1/messages"],"vendor":"Anthropic","version":"claude-opus-4.5"},{"capabilities":{"family":"claude-haiku-4.5","limits":{"max_context_window_tokens":200000,"max_non_streaming_output_tokens":16000,"max_output_tokens":32000,"max_prompt_tokens":128000,"vision":{"max_prompt_image_size":3145728,"max_prompt_images":5,"supported_media_types":["image/jpeg","image/png","image/webp"]}},"object":"model_capabilities","supports":{"max_thinking_budget":32000,"min_thinking_budget":1024,"parallel_tool_calls":true,"streaming":true,"tool_calls":true,"vision":true},"tokenizer":"o200k_base","type":"chat"},"id":"claude-haiku-4.5","model_picker_category":"versatile","model_picker_enabled":true,"name":"Claude Haiku 4.5","object":"model","policy":{"state":"enabled","terms":"Enable access to the latest Claude Haiku 4.5 model from Anthropic. [Learn more about how GitHub Copilot serves Claude Haiku 4.5](https://gh.io/copilot-anthropic)."},"preview":false,"supported_endpoints":["/chat/completions","/v1/messages"],"vendor":"Anthropic","version":"claude-haiku-4.5"},{"capabilities":{"family":"gemini-3-pro","limits":{"max_context_window_tokens":128000,"max_output_tokens":64000,"max_prompt_tokens":128000,"vision":{"max_prompt_image_size":3145728,"max_prompt_images":10,"supported_media_types":["image/jpeg","image/png","image/webp","image/heic","image/heif"]}},"object":"model_capabilities","supports":{"max_thinking_budget":32000,"min_thinking_budget":256,"parallel_tool_calls":true,"reasoning_effort":["low","high"],"streaming":true,"tool_calls":true,"vision":true},"tokenizer":"o200k_base","type":"chat"},"id":"gemini-3-pro-preview","model_picker_category":"powerful","model_picker_enabled":true,"name":"Gemini 3 Pro (Preview)","object":"model","policy":{"state":"enabled","terms":"Enable access to the latest Gemini 3 Pro model from Google. [Learn more about how GitHub Copilot serves Gemini 3 Pro](https://docs.github.com/en/copilot/reference/ai-models/model-hosting#google-models)."},"preview":true,"vendor":"Google","version":"gemini-3-pro-preview"},{"capabilities":{"family":"gemini-3-flash","limits":{"max_context_window_tokens":128000,"max_output_tokens":64000,"max_prompt_tokens":128000,"vision":{"max_prompt_image_size":3145728,"max_prompt_images":10,"supported_media_types":["image/jpeg","image/png","image/webp","image/heic","image/heif"]}},"object":"model_capabilities","supports":{"max_thinking_budget":32000,"min_thinking_budget":256,"parallel_tool_calls":true,"reasoning_effort":["low","medium","high"],"streaming":true,"tool_calls":true,"vision":true},"tokenizer":"o200k_base","type":"chat"},"id":"gemini-3-flash-preview","model_picker_category":"lightweight","model_picker_enabled":true,"name":"Gemini 3 Flash (Preview)","object":"model","policy":{"state":"enabled","terms":"Enable access to the latest Gemini 3 Flash model from Google. [Learn more about how GitHub Copilot serves Gemini 3 Flash](https://docs.github.com/en/copilot/reference/ai-models/model-hosting#google-models)"},"preview":true,"vendor":"Google","version":"gemini-3-flash-preview"},{"capabilities":{"family":"gemini-2.5-pro","limits":{"max_context_window_tokens":128000,"max_output_tokens":64000,"max_prompt_tokens":128000,"vision":{"max_prompt_image_size":3145728,"max_prompt_images":10,"supported_media_types":["image/jpeg","image/png","image/webp","image/heic","image/heif"]}},"object":"model_capabilities","supports":{"max_thinking_budget":32768,"min_thinking_budget":128,"parallel_tool_calls":true,"streaming":true,"tool_calls":true,"vision":true},"tokenizer":"o200k_base","type":"chat"},"id":"gemini-2.5-pro","model_picker_category":"powerful","model_picker_enabled":true,"name":"Gemini 2.5 Pro","object":"model","policy":{"state":"enabled","terms":"Enable access to the latest Gemini 2.5 Pro model from Google. [Learn more about how GitHub Copilot serves Gemini 2.5 Pro](https://docs.github.com/en/copilot/using-github-copilot/ai-models/choosing-the-right-ai-model-for-your-task#gemini-25-pro)."},"preview":false,"vendor":"Google","version":"gemini-2.5-pro"},{"capabilities":{"family":"gpt-4.1","limits":{"max_context_window_tokens":128000,"max_output_tokens":16384,"max_prompt_tokens":128000,"vision":{"max_prompt_image_size":3145728,"max_prompt_images":1,"supported_media_types":["image/jpeg","image/png","image/webp","image/gif"]}},"object":"model_capabilities","supports":{"parallel_tool_calls":true,"streaming":true,"structured_outputs":true,"tool_calls":true,"vision":true},"tokenizer":"o200k_base","type":"chat"},"id":"gpt-4.1-2025-04-14","model_picker_enabled":false,"name":"GPT-4.1","object":"model","policy":{"state":"enabled","terms":"Enable access to the latest GPT-4.1 model from OpenAI. [Learn more about how GitHub Copilot serves GPT-4.1](https://docs.github.com/en/copilot/using-github-copilot/ai-models/choosing-the-right-ai-model-for-your-task#gpt-41)."},"preview":false,"vendor":"Azure OpenAI","version":"gpt-4.1-2025-04-14"},{"capabilities":{"family":"oswe-vscode","limits":{"max_context_window_tokens":264000,"max_output_tokens":64000,"max_prompt_tokens":200000,"vision":{"max_prompt_image_size":3145728,"max_prompt_images":1,"supported_media_types":["image/jpeg","image/png","image/webp","image/gif"]}},"object":"model_capabilities","supports":{"parallel_tool_calls":true,"streaming":true,"structured_outputs":true,"tool_calls":true,"vision":true},"tokenizer":"o200k_base","type":"chat"},"id":"oswe-vscode-prime","model_picker_category":"versatile","model_picker_enabled":true,"name":"Raptor mini (Preview)","object":"model","policy":{"state":"enabled","terms":"Enable access to the latest Raptor mini model from Microsoft. [Learn more about how GitHub Copilot serves Raptor mini](https://gh.io/copilot-openai-fine-tuned-by-microsoft)."},"preview":true,"supported_endpoints":["/chat/completions","/responses"],"vendor":"Azure OpenAI","version":"raptor-mini"},{"capabilities":{"family":"oswe-vscode","limits":{"max_context_window_tokens":264000,"max_output_tokens":64000,"max_prompt_tokens":200000,"vision":{"max_prompt_image_size":3145728,"max_prompt_images":1,"supported_media_types":["image/jpeg","image/png","image/webp","image/gif"]}},"object":"model_capabilities","supports":{"parallel_tool_calls":true,"streaming":true,"structured_outputs":true,"tool_calls":true,"vision":true},"tokenizer":"o200k_base","type":"chat"},"id":"oswe-vscode-secondary","model_picker_category":"versatile","model_picker_enabled":false,"name":"Raptor mini (Preview)","object":"model","policy":{"state":"enabled","terms":"Enable access to the latest Raptor mini model from Microsoft. [Learn more about how GitHub Copilot serves Raptor mini](https://gh.io/copilot-openai-fine-tuned-by-microsoft)."},"preview":true,"supported_endpoints":["/chat/completions","/responses"],"vendor":"Azure OpenAI","version":"raptor-mini"},{"capabilities":{"family":"gpt-5.2","limits":{"max_context_window_tokens":264000,"max_output_tokens":64000,"max_prompt_tokens":128000,"vision":{"max_prompt_image_size":3145728,"max_prompt_images":1,"supported_media_types":["image/jpeg","image/png","image/webp","image/gif"]}},"object":"model_capabilities","supports":{"parallel_tool_calls":true,"streaming":true,"structured_outputs":true,"tool_calls":true,"vision":true},"tokenizer":"o200k_base","type":"chat"},"id":"gpt-5.2","model_picker_category":"versatile","model_picker_enabled":true,"name":"GPT-5.2","object":"model","policy":{"state":"enabled","terms":"Enable access to the latest GPT-5.2 model from OpenAI. [Learn more about how GitHub Copilot serves GPT-5.2](https://gh.io/copilot-openai)."},"preview":false,"supported_endpoints":["/chat/completions","/responses"],"vendor":"OpenAI","version":"gpt-5.2"},{"capabilities":{"family":"gpt-3.5-turbo","limits":{"max_context_window_tokens":16384,"max_output_tokens":4096,"max_prompt_tokens":12288},"object":"model_capabilities","supports":{"streaming":true,"tool_calls":true},"tokenizer":"cl100k_base","type":"chat"},"id":"gpt-3.5-turbo-0613","model_picker_enabled":false,"name":"GPT 3.5 Turbo","object":"model","preview":false,"vendor":"Azure OpenAI","version":"gpt-3.5-turbo-0613"},{"capabilities":{"family":"gpt-4","limits":{"max_context_window_tokens":32768,"max_output_tokens":4096,"max_prompt_tokens":32768},"object":"model_capabilities","supports":{"streaming":true,"tool_calls":true},"tokenizer":"cl100k_base","type":"chat"},"id":"gpt-4","model_picker_enabled":false,"name":"GPT 4","object":"model","preview":false,"vendor":"Azure OpenAI","version":"gpt-4-0613"},{"capabilities":{"family":"gpt-4","limits":{"max_context_window_tokens":32768,"max_output_tokens":4096,"max_prompt_tokens":32768},"object":"model_capabilities","supports":{"streaming":true,"tool_calls":true},"tokenizer":"cl100k_base","type":"chat"},"id":"gpt-4-0613","model_picker_enabled":false,"name":"GPT 4","object":"model","preview":false,"vendor":"Azure OpenAI","version":"gpt-4-0613"},{"capabilities":{"family":"gpt-4-turbo","limits":{"max_context_window_tokens":128000,"max_output_tokens":4096,"max_prompt_tokens":64000},"object":"model_capabilities","supports":{"parallel_tool_calls":true,"streaming":true,"tool_calls":true},"tokenizer":"cl100k_base","type":"chat"},"id":"gpt-4-0125-preview","model_picker_enabled":false,"name":"GPT 4 Turbo","object":"model","preview":false,"vendor":"Azure OpenAI","version":"gpt-4-0125-preview"},{"capabilities":{"family":"gpt-4o","limits":{"max_context_window_tokens":128000,"max_output_tokens":4096,"max_prompt_tokens":64000,"vision":{"max_prompt_image_size":3145728,"max_prompt_images":1,"supported_media_types":["image/jpeg","image/png","image/webp","image/gif"]}},"object":"model_capabilities","supports":{"parallel_tool_calls":true,"streaming":true,"tool_calls":true,"vision":true},"tokenizer":"o200k_base","type":"chat"},"id":"gpt-4o-2024-05-13","model_picker_enabled":false,"name":"GPT-4o","object":"model","preview":false,"vendor":"Azure OpenAI","version":"gpt-4o-2024-05-13"},{"capabilities":{"family":"gpt-4o","limits":{"max_context_window_tokens":128000,"max_output_tokens":4096,"max_prompt_tokens":64000},"object":"model_capabilities","supports":{"parallel_tool_calls":true,"streaming":true,"tool_calls":true},"tokenizer":"o200k_base","type":"chat"},"id":"gpt-4-o-preview","model_picker_enabled":false,"name":"GPT-4o","object":"model","preview":false,"vendor":"Azure OpenAI","version":"gpt-4o-2024-05-13"},{"capabilities":{"family":"gpt-4.1","limits":{"max_context_window_tokens":128000,"max_output_tokens":16384,"max_prompt_tokens":128000,"vision":{"max_prompt_image_size":3145728,"max_prompt_images":1,"supported_media_types":["image/jpeg","image/png","image/webp","image/gif"]}},"object":"model_capabilities","supports":{"parallel_tool_calls":true,"streaming":true,"structured_outputs":true,"tool_calls":true,"vision":true},"tokenizer":"o200k_base","type":"chat"},"id":"gpt-4.1","model_picker_category":"versatile","model_picker_enabled":true,"name":"GPT-4.1","object":"model","policy":{"state":"enabled","terms":"Enable access to the latest GPT-4.1 model from OpenAI. [Learn more about how GitHub Copilot serves GPT-4.1](https://docs.github.com/en/copilot/using-github-copilot/ai-models/choosing-the-right-ai-model-for-your-task#gpt-41)."},"preview":false,"vendor":"Azure OpenAI","version":"gpt-4.1-2025-04-14"},{"capabilities":{"family":"gpt-3.5-turbo","limits":{"max_context_window_tokens":16384,"max_output_tokens":4096,"max_prompt_tokens":12288},"object":"model_capabilities","supports":{"streaming":true,"tool_calls":true},"tokenizer":"cl100k_base","type":"chat"},"id":"gpt-3.5-turbo","model_picker_enabled":false,"name":"GPT 3.5 Turbo","object":"model","preview":false,"vendor":"Azure OpenAI","version":"gpt-3.5-turbo-0613"},{"capabilities":{"family":"gpt-4o-mini","limits":{"max_context_window_tokens":128000,"max_output_tokens":4096,"max_prompt_tokens":12288},"object":"model_capabilities","supports":{"parallel_tool_calls":true,"streaming":true,"tool_calls":true},"tokenizer":"o200k_base","type":"chat"},"id":"gpt-4o-mini","model_picker_enabled":false,"name":"GPT-4o mini","object":"model","preview":false,"vendor":"Azure OpenAI","version":"gpt-4o-mini-2024-07-18"},{"capabilities":{"family":"gpt-4","limits":{"max_context_window_tokens":32768,"max_output_tokens":4096,"max_prompt_tokens":32768},"object":"model_capabilities","supports":{"streaming":true,"tool_calls":true},"tokenizer":"cl100k_base","type":"chat"},"id":"gpt-4","model_picker_enabled":false,"name":"GPT 4","object":"model","preview":false,"vendor":"Azure OpenAI","version":"gpt-4-0613"},{"capabilities":{"family":"gpt-4o","limits":{"max_context_window_tokens":128000,"max_output_tokens":4096,"max_prompt_tokens":64000,"vision":{"max_prompt_image_size":3145728,"max_prompt_images":1,"supported_media_types":["image/jpeg","image/png","image/webp","image/gif"]}},"object":"model_capabilities","supports":{"parallel_tool_calls":true,"streaming":true,"tool_calls":true,"vision":true},"tokenizer":"o200k_base","type":"chat"},"id":"gpt-4o","model_picker_category":"versatile","model_picker_enabled":true,"name":"GPT-4o","object":"model","preview":false,"vendor":"Azure OpenAI","version":"gpt-4o-2024-11-20"},{"capabilities":{"family":"gpt-4o","limits":{"max_context_window_tokens":128000,"max_output_tokens":4096,"max_prompt_tokens":64000},"object":"model_capabilities","supports":{"parallel_tool_calls":true,"streaming":true,"tool_calls":true},"tokenizer":"o200k_base","type":"chat"},"id":"gpt-4-o-preview","model_picker_enabled":false,"name":"GPT-4o","object":"model","preview":false,"vendor":"Azure OpenAI","version":"gpt-4o-2024-05-13"},{"capabilities":{"family":"text-embedding-ada-002","limits":{"max_inputs":512},"object":"model_capabilities","supports":{},"tokenizer":"cl100k_base","type":"embeddings"},"id":"text-embedding-ada-002","model_picker_enabled":false,"name":"Embedding V2 Ada","object":"model","preview":false,"vendor":"Azure OpenAI","version":"text-embedding-3-small"}],"object":"list"}

3.2 测试 /chat/completions 问答接口

export MODEL_ID="claude-sonnet-4.6"

curl -i -sS -X POST "${COPILOT_BASE_URL}/chat/completions" \
  -H "Authorization: Bearer ${COPILOT_TOKEN}" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -H "Editor-Version: vscode/1.96.2" \
  -H "User-Agent: GitHubCopilotChat/0.26.7" \
  -d "$(cat <<JSON
{
  "model": "${MODEL_ID}",
  "messages": [
    { "role": "system", "content": "You are a helpful assistant." },
    { "role": "user", "content": "Say 'ok' and tell me the model id you used." }
  ],
  "temperature": 0.2
}
JSON
)"
HTTP/2 200
content-security-policy: default-src 'none'; sandbox
content-type: application/json
strict-transport-security: max-age=31536000
x-request-id: 00000-7c91d4be-3f6a-4b28-9d41-5a8e72c1f6ab
date: Fri, 06 Mar 2026 06:00:48 GMT
content-length: 546
x-github-backend: Kubernetes
x-github-request-id: B61F:0D8A23:7CE49B1:3A5F6D0:94BC12E7

{"choices":[{"finish_reason":"stop","message":{"content":"ok\n\nI don't have access to information about the specific model ID I'm running on. I'm Claude, made by Anthropic, but the exact version or model ID isn't something I can confirm. You could check the platform or API response metadata for that information.","role":"assistant"}}],"created":1772776848,"id":"3e89c5c7-3273-452e-ae0e-0d8b857ce926","usage":{"completion_tokens":59,"prompt_tokens":28,"prompt_tokens_details":{"cached_tokens":0},"total_tokens":87},"model":"Claude Sonnet 4.6"}