Skip to content

Commit f05544b

Browse files
committed
feat: remove api flavor override from setting ui.
1 parent b0673a9 commit f05544b

File tree

3 files changed

+6
-45
lines changed

3 files changed

+6
-45
lines changed

packages/types/src/provider-settings.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,6 @@ const openAiSchema = baseProviderSettingsSchema.extend({
179179
openAiStreamingEnabled: z.boolean().optional(),
180180
openAiHostHeader: z.string().optional(), // Keep temporarily for backward compatibility during migration.
181181
openAiHeaders: z.record(z.string(), z.string()).optional(),
182-
openAiApiFlavor: z.union([z.literal("auto"), z.literal("responses"), z.literal("chat")]).optional(),
183182
})
184183

185184
const ollamaSchema = baseProviderSettingsSchema.extend({

src/api/providers/__tests__/openai.spec.ts

Lines changed: 0 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1151,39 +1151,6 @@ describe("OpenAI Compatible - Responses API", () => {
11511151
expect(chatArgs).not.toHaveProperty("input")
11521152
})
11531153

1154-
it("Manual override: force Responses or Chat regardless of URL", async () => {
1155-
// Force Responses
1156-
const forceResp = new OpenAiHandler({
1157-
openAiApiKey: "k",
1158-
openAiModelId: "gpt-5",
1159-
openAiBaseUrl: "https://api.openai.com/v1", // no responses segment
1160-
openAiStreamingEnabled: false,
1161-
openAiApiFlavor: "responses",
1162-
})
1163-
for await (const _ of forceResp.createMessage("sys", baseMessages)) {
1164-
}
1165-
expect(mockResponsesCreate).toHaveBeenCalled()
1166-
const rArgs = mockResponsesCreate.mock.calls.pop()?.[0]
1167-
expect(rArgs).toHaveProperty("input")
1168-
expect(rArgs).not.toHaveProperty("messages")
1169-
1170-
// Force Chat
1171-
mockResponsesCreate.mockClear()
1172-
mockCreate.mockClear()
1173-
const forceChat = new OpenAiHandler({
1174-
openAiApiKey: "k",
1175-
openAiModelId: "gpt-4o",
1176-
openAiBaseUrl: "https://api.openai.com/v1/responses", // would auto-detect as responses
1177-
openAiStreamingEnabled: false,
1178-
openAiApiFlavor: "chat",
1179-
})
1180-
for await (const _ of forceChat.createMessage("sys", baseMessages)) {
1181-
}
1182-
expect(mockCreate).toHaveBeenCalled()
1183-
const cArgs = mockCreate.mock.calls.pop()?.[0]
1184-
expect(cArgs).toHaveProperty("messages")
1185-
})
1186-
11871154
it("Reasoning effort mapping: Responses uses reasoning: { effort }, Chat uses reasoning_effort", async () => {
11881155
// Responses path
11891156
const responsesHandler = new OpenAiHandler({

src/api/providers/openai.ts

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,8 @@ export class OpenAiHandler extends BaseProvider implements SingleCompletionHandl
7070
// Azure API shape slightly differs from the core API shape:
7171
// https://github.com/openai/openai-node?tab=readme-ov-file#microsoft-azure-openai
7272

73-
// Determine if we're using the Responses API flavor for Azure
74-
const flavor = this._resolveApiFlavor(this.options.openAiApiFlavor, this.options.openAiBaseUrl ?? "")
73+
// Determine if we're using the Responses API flavor for Azure (auto-detect by URL only)
74+
const flavor = this._resolveApiFlavor(this.options.openAiBaseUrl ?? "")
7575
const isResponsesFlavor =
7676
flavor === "responses" ||
7777
this._isAzureOpenAiResponses(this.options.openAiBaseUrl) ||
@@ -127,8 +127,8 @@ export class OpenAiHandler extends BaseProvider implements SingleCompletionHandl
127127
const deepseekReasoner = modelId.includes("deepseek-reasoner") || enabledR1Format
128128
const ark = modelUrl.includes(".volces.com")
129129

130-
// Decide API flavor (manual override > auto-detect by URL)
131-
const flavor = this._resolveApiFlavor(this.options.openAiApiFlavor, modelUrl)
130+
// Decide API flavor (auto-detect by URL)
131+
const flavor = this._resolveApiFlavor(modelUrl)
132132

133133
// If Responses API is selected, use the Responses payload and endpoint
134134
if (flavor === "responses") {
@@ -373,7 +373,7 @@ export class OpenAiHandler extends BaseProvider implements SingleCompletionHandl
373373
async completePrompt(prompt: string): Promise<string> {
374374
try {
375375
const isAzureAiInference = this._isAzureAiInference(this.options.openAiBaseUrl)
376-
const flavor = this._resolveApiFlavor(this.options.openAiApiFlavor, this.options.openAiBaseUrl ?? "")
376+
const flavor = this._resolveApiFlavor(this.options.openAiBaseUrl ?? "")
377377
const model = this.getModel()
378378
const modelInfo = model.info
379379

@@ -644,12 +644,7 @@ export class OpenAiHandler extends BaseProvider implements SingleCompletionHandl
644644

645645
// --- Responses helpers ---
646646

647-
private _resolveApiFlavor(
648-
override: "auto" | "responses" | "chat" | undefined,
649-
baseUrl: string,
650-
): "responses" | "chat" {
651-
if (override === "responses") return "responses"
652-
if (override === "chat") return "chat"
647+
private _resolveApiFlavor(baseUrl: string): "responses" | "chat" {
653648
// Auto-detect by URL path
654649
const url = this._safeParseUrl(baseUrl)
655650
const path = url?.pathname || ""

0 commit comments

Comments
 (0)