使用 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"}
