fix: default OpenAI Compatible provider to XML protocol for better third-party proxy compatibility

This commit is contained in:
Roo Code 2025-12-22 03:35:07 +00:00
parent 2bb375534c
commit df411c0bd2
3 changed files with 13 additions and 6 deletions

View file

@ -551,7 +551,10 @@ export const openAiModelInfoSaneDefaults: ModelInfo = {
inputPrice: 0,
outputPrice: 0,
supportsNativeTools: true,
defaultToolProtocol: "native",
// Default to XML for OpenAI Compatible providers since third-party proxies
// have varying levels of support for native tool calling. Users who want
// native tool calling can explicitly enable it in Advanced Settings.
defaultToolProtocol: "xml",
}
// https://learn.microsoft.com/en-us/azure/ai-services/openai/api-version-deprecation

View file

@ -376,13 +376,15 @@ describe("resolveToolProtocol", () => {
expect(result).toBe(TOOL_PROTOCOL.XML) // Model default wins
})
it("should use native tools for OpenAI compatible provider with default model info", () => {
it("should use XML for OpenAI compatible provider with default model info", () => {
const settings: ProviderSettings = {
apiProvider: "openai",
}
// Using the actual openAiModelInfoSaneDefaults to verify the fix
// OpenAI Compatible defaults to XML protocol since third-party proxies
// have varying levels of support for native tool calling.
// Users who want native can explicitly enable it in Advanced Settings.
const result = resolveToolProtocol(settings, openAiModelInfoSaneDefaults)
expect(result).toBe(TOOL_PROTOCOL.NATIVE) // Should use native tools by default
expect(result).toBe(TOOL_PROTOCOL.XML) // Should use XML by default for better compatibility
})
})
})

View file

@ -702,7 +702,8 @@ describe("useSelectedModel", () => {
expect(result.current.id).toBe("gpt-4o")
expect(result.current.info).toEqual(openAiModelInfoSaneDefaults)
expect(result.current.info?.supportsNativeTools).toBe(true)
expect(result.current.info?.defaultToolProtocol).toBe("native")
// OpenAI Compatible defaults to XML for better third-party proxy compatibility
expect(result.current.info?.defaultToolProtocol).toBe("xml")
})
it("should merge native tool defaults with custom model info", () => {
@ -734,7 +735,8 @@ describe("useSelectedModel", () => {
}
expect(result.current.info).toEqual({ ...nativeToolDefaults, ...customModelInfo })
expect(result.current.info?.supportsNativeTools).toBe(true)
expect(result.current.info?.defaultToolProtocol).toBe("native")
// OpenAI Compatible defaults to XML for better third-party proxy compatibility
expect(result.current.info?.defaultToolProtocol).toBe("xml")
})
it("should allow custom model info to override native tool defaults", () => {