Browse Source

fix: use system role for OpenAI Compatible provider when streaming is disabled (#8216)

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: daniel-lxs <[email protected]>
roomote[bot] 1 month ago
parent
commit
1ba0150f7a
2 changed files with 6 additions and 12 deletions
  1. 1 1
      src/api/providers/__tests__/openai.spec.ts
  2. 5 11
      src/api/providers/openai.ts

+ 1 - 1
src/api/providers/__tests__/openai.spec.ts

@@ -494,7 +494,7 @@ describe("OpenAiHandler", () => {
 				{
 					model: azureOptions.openAiModelId,
 					messages: [
-						{ role: "user", content: systemPrompt },
+						{ role: "system", content: systemPrompt },
 						{ role: "user", content: "Hello!" },
 					],
 				},

+ 5 - 11
src/api/providers/openai.ts

@@ -99,12 +99,12 @@ export class OpenAiHandler extends BaseProvider implements SingleCompletionHandl
 			return
 		}
 
-		if (this.options.openAiStreamingEnabled ?? true) {
-			let systemMessage: OpenAI.Chat.ChatCompletionSystemMessageParam = {
-				role: "system",
-				content: systemPrompt,
-			}
+		let systemMessage: OpenAI.Chat.ChatCompletionSystemMessageParam = {
+			role: "system",
+			content: systemPrompt,
+		}
 
+		if (this.options.openAiStreamingEnabled ?? true) {
 			let convertedMessages
 
 			if (deepseekReasoner) {
@@ -218,12 +218,6 @@ export class OpenAiHandler extends BaseProvider implements SingleCompletionHandl
 				yield this.processUsageMetrics(lastUsage, modelInfo)
 			}
 		} else {
-			// o1 for instance doesnt support streaming, non-1 temp, or system prompt
-			const systemMessage: OpenAI.Chat.ChatCompletionUserMessageParam = {
-				role: "user",
-				content: systemPrompt,
-			}
-
 			const requestOptions: OpenAI.Chat.Completions.ChatCompletionCreateParamsNonStreaming = {
 				model: modelId,
 				messages: deepseekReasoner