fix(github-copilot): auto-route GPT-5+ models to Responses API (#5877)
Co-authored-by: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -41,6 +41,18 @@ import { ProviderTransform } from "./transform"
|
|||||||
export namespace Provider {
|
export namespace Provider {
|
||||||
const log = Log.create({ service: "provider" })
|
const log = Log.create({ service: "provider" })
|
||||||
|
|
||||||
|
function isGpt5OrLater(modelID: string): boolean {
|
||||||
|
const match = /^gpt-(\d+)/.exec(modelID)
|
||||||
|
if (!match) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return Number(match[1]) >= 5
|
||||||
|
}
|
||||||
|
|
||||||
|
function shouldUseCopilotResponsesApi(modelID: string): boolean {
|
||||||
|
return isGpt5OrLater(modelID) && !modelID.startsWith("gpt-5-mini")
|
||||||
|
}
|
||||||
|
|
||||||
const BUNDLED_PROVIDERS: Record<string, (options: any) => SDK> = {
|
const BUNDLED_PROVIDERS: Record<string, (options: any) => SDK> = {
|
||||||
"@ai-sdk/amazon-bedrock": createAmazonBedrock,
|
"@ai-sdk/amazon-bedrock": createAmazonBedrock,
|
||||||
"@ai-sdk/anthropic": createAnthropic,
|
"@ai-sdk/anthropic": createAnthropic,
|
||||||
@@ -120,10 +132,7 @@ export namespace Provider {
|
|||||||
return {
|
return {
|
||||||
autoload: false,
|
autoload: false,
|
||||||
async getModel(sdk: any, modelID: string, _options?: Record<string, any>) {
|
async getModel(sdk: any, modelID: string, _options?: Record<string, any>) {
|
||||||
if (modelID.includes("codex")) {
|
return shouldUseCopilotResponsesApi(modelID) ? sdk.responses(modelID) : sdk.chat(modelID)
|
||||||
return sdk.responses(modelID)
|
|
||||||
}
|
|
||||||
return sdk.chat(modelID)
|
|
||||||
},
|
},
|
||||||
options: {},
|
options: {},
|
||||||
}
|
}
|
||||||
@@ -132,10 +141,7 @@ export namespace Provider {
|
|||||||
return {
|
return {
|
||||||
autoload: false,
|
autoload: false,
|
||||||
async getModel(sdk: any, modelID: string, _options?: Record<string, any>) {
|
async getModel(sdk: any, modelID: string, _options?: Record<string, any>) {
|
||||||
if (modelID.includes("codex")) {
|
return shouldUseCopilotResponsesApi(modelID) ? sdk.responses(modelID) : sdk.chat(modelID)
|
||||||
return sdk.responses(modelID)
|
|
||||||
}
|
|
||||||
return sdk.chat(modelID)
|
|
||||||
},
|
},
|
||||||
options: {},
|
options: {},
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -524,7 +524,11 @@ export namespace ProviderTransform {
|
|||||||
const result: Record<string, any> = {}
|
const result: Record<string, any> = {}
|
||||||
|
|
||||||
// openai and providers using openai package should set store to false by default.
|
// openai and providers using openai package should set store to false by default.
|
||||||
if (input.model.providerID === "openai" || input.model.api.npm === "@ai-sdk/openai") {
|
if (
|
||||||
|
input.model.providerID === "openai" ||
|
||||||
|
input.model.api.npm === "@ai-sdk/openai" ||
|
||||||
|
input.model.api.npm === "@ai-sdk/github-copilot"
|
||||||
|
) {
|
||||||
result["store"] = false
|
result["store"] = false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user