Skip to content

Commit 2449c49

Browse files
committed
Merge remote-tracking branch 'origin/main' into feat/roo-code-requesty-provider
2 parents d6e55af + 059de0f commit 2449c49

File tree

23 files changed

+320
-88
lines changed

23 files changed

+320
-88
lines changed

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

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
import { OpenAiHandler } from "../openai"
22
import { ApiHandlerOptions } from "../../../shared/api"
3-
import { ApiStream } from "../../transform/stream"
4-
import OpenAI from "openai"
53
import { Anthropic } from "@anthropic-ai/sdk"
64

75
// Mock OpenAI client

src/api/providers/anthropic.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ import {
1010
import { ApiHandler, SingleCompletionHandler } from "../index"
1111
import { ApiStream } from "../transform/stream"
1212

13+
const ANTHROPIC_DEFAULT_TEMPERATURE = 0
14+
1315
export class AnthropicHandler implements ApiHandler, SingleCompletionHandler {
1416
private options: ApiHandlerOptions
1517
private client: Anthropic
@@ -44,7 +46,7 @@ export class AnthropicHandler implements ApiHandler, SingleCompletionHandler {
4446
{
4547
model: modelId,
4648
max_tokens: this.getModel().info.maxTokens || 8192,
47-
temperature: 0,
49+
temperature: this.options.modelTemperature ?? ANTHROPIC_DEFAULT_TEMPERATURE,
4850
system: [{ text: systemPrompt, type: "text", cache_control: { type: "ephemeral" } }], // setting cache breakpoint for system prompt so new tasks can reuse it
4951
messages: messages.map((message, index) => {
5052
if (index === lastUserMsgIndex || index === secondLastMsgUserIndex) {
@@ -96,7 +98,7 @@ export class AnthropicHandler implements ApiHandler, SingleCompletionHandler {
9698
stream = (await this.client.messages.create({
9799
model: modelId,
98100
max_tokens: this.getModel().info.maxTokens || 8192,
99-
temperature: 0,
101+
temperature: this.options.modelTemperature ?? ANTHROPIC_DEFAULT_TEMPERATURE,
100102
system: [{ text: systemPrompt, type: "text" }],
101103
messages,
102104
// tools,
@@ -179,7 +181,7 @@ export class AnthropicHandler implements ApiHandler, SingleCompletionHandler {
179181
const response = await this.client.messages.create({
180182
model: this.getModel().id,
181183
max_tokens: this.getModel().info.maxTokens || 8192,
182-
temperature: 0,
184+
temperature: this.options.modelTemperature ?? ANTHROPIC_DEFAULT_TEMPERATURE,
183185
messages: [{ role: "user", content: prompt }],
184186
stream: false,
185187
})

src/api/providers/bedrock.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ import { ApiHandlerOptions, BedrockModelId, ModelInfo, bedrockDefaultModelId, be
1111
import { ApiStream } from "../transform/stream"
1212
import { convertToBedrockConverseMessages, convertToAnthropicMessage } from "../transform/bedrock-converse-format"
1313

14+
const BEDROCK_DEFAULT_TEMPERATURE = 0.3
15+
1416
// Define types for stream events based on AWS SDK
1517
export interface StreamEvent {
1618
messageStart?: {
@@ -104,7 +106,7 @@ export class AwsBedrockHandler implements ApiHandler, SingleCompletionHandler {
104106
system: [{ text: systemPrompt }],
105107
inferenceConfig: {
106108
maxTokens: modelConfig.info.maxTokens || 5000,
107-
temperature: 0.3,
109+
temperature: this.options.modelTemperature ?? BEDROCK_DEFAULT_TEMPERATURE,
108110
topP: 0.1,
109111
...(this.options.awsUsePromptCache
110112
? {
@@ -262,7 +264,7 @@ export class AwsBedrockHandler implements ApiHandler, SingleCompletionHandler {
262264
]),
263265
inferenceConfig: {
264266
maxTokens: modelConfig.info.maxTokens || 5000,
265-
temperature: 0.3,
267+
temperature: this.options.modelTemperature ?? BEDROCK_DEFAULT_TEMPERATURE,
266268
topP: 0.1,
267269
},
268270
}

src/api/providers/gemini.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import { ApiHandlerOptions, geminiDefaultModelId, GeminiModelId, geminiModels, M
55
import { convertAnthropicMessageToGemini } from "../transform/gemini-format"
66
import { ApiStream } from "../transform/stream"
77

8+
const GEMINI_DEFAULT_TEMPERATURE = 0
9+
810
export class GeminiHandler implements ApiHandler, SingleCompletionHandler {
911
private options: ApiHandlerOptions
1012
private client: GoogleGenerativeAI
@@ -23,7 +25,7 @@ export class GeminiHandler implements ApiHandler, SingleCompletionHandler {
2325
contents: messages.map(convertAnthropicMessageToGemini),
2426
generationConfig: {
2527
// maxOutputTokens: this.getModel().info.maxTokens,
26-
temperature: 0,
28+
temperature: this.options.modelTemperature ?? GEMINI_DEFAULT_TEMPERATURE,
2729
},
2830
})
2931

@@ -60,7 +62,7 @@ export class GeminiHandler implements ApiHandler, SingleCompletionHandler {
6062
const result = await model.generateContent({
6163
contents: [{ role: "user", parts: [{ text: prompt }] }],
6264
generationConfig: {
63-
temperature: 0,
65+
temperature: this.options.modelTemperature ?? GEMINI_DEFAULT_TEMPERATURE,
6466
},
6567
})
6668

src/api/providers/glama.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ import { ApiHandler, SingleCompletionHandler } from "../"
55
import { ApiHandlerOptions, ModelInfo, glamaDefaultModelId, glamaDefaultModelInfo } from "../../shared/api"
66
import { convertToOpenAiMessages } from "../transform/openai-format"
77
import { ApiStream } from "../transform/stream"
8-
import delay from "delay"
8+
9+
const GLAMA_DEFAULT_TEMPERATURE = 0
910

1011
export class GlamaHandler implements ApiHandler, SingleCompletionHandler {
1112
private options: ApiHandlerOptions
@@ -79,7 +80,7 @@ export class GlamaHandler implements ApiHandler, SingleCompletionHandler {
7980
}
8081

8182
if (this.supportsTemperature()) {
82-
requestOptions.temperature = 0
83+
requestOptions.temperature = this.options.modelTemperature ?? GLAMA_DEFAULT_TEMPERATURE
8384
}
8485

8586
const { data: completion, response } = await this.client.chat.completions
@@ -172,7 +173,7 @@ export class GlamaHandler implements ApiHandler, SingleCompletionHandler {
172173
}
173174

174175
if (this.supportsTemperature()) {
175-
requestOptions.temperature = 0
176+
requestOptions.temperature = this.options.modelTemperature ?? GLAMA_DEFAULT_TEMPERATURE
176177
}
177178

178179
if (this.getModel().id.startsWith("anthropic/")) {

src/api/providers/lmstudio.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import { ApiHandlerOptions, ModelInfo, openAiModelInfoSaneDefaults } from "../..
55
import { convertToOpenAiMessages } from "../transform/openai-format"
66
import { ApiStream } from "../transform/stream"
77

8+
const LMSTUDIO_DEFAULT_TEMPERATURE = 0
9+
810
export class LmStudioHandler implements ApiHandler, SingleCompletionHandler {
911
private options: ApiHandlerOptions
1012
private client: OpenAI
@@ -27,7 +29,7 @@ export class LmStudioHandler implements ApiHandler, SingleCompletionHandler {
2729
const stream = await this.client.chat.completions.create({
2830
model: this.getModel().id,
2931
messages: openAiMessages,
30-
temperature: 0,
32+
temperature: this.options.modelTemperature ?? LMSTUDIO_DEFAULT_TEMPERATURE,
3133
stream: true,
3234
})
3335
for await (const chunk of stream) {
@@ -59,7 +61,7 @@ export class LmStudioHandler implements ApiHandler, SingleCompletionHandler {
5961
const response = await this.client.chat.completions.create({
6062
model: this.getModel().id,
6163
messages: [{ role: "user", content: prompt }],
62-
temperature: 0,
64+
temperature: this.options.modelTemperature ?? LMSTUDIO_DEFAULT_TEMPERATURE,
6365
stream: false,
6466
})
6567
return response.choices[0]?.message.content || ""

src/api/providers/mistral.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ import {
1414
import { convertToMistralMessages } from "../transform/mistral-format"
1515
import { ApiStream } from "../transform/stream"
1616

17+
const MISTRAL_DEFAULT_TEMPERATURE = 0
18+
1719
export class MistralHandler implements ApiHandler {
1820
private options: ApiHandlerOptions
1921
private client: Mistral
@@ -30,7 +32,7 @@ export class MistralHandler implements ApiHandler {
3032
const stream = await this.client.chat.stream({
3133
model: this.getModel().id,
3234
// max_completion_tokens: this.getModel().info.maxTokens,
33-
temperature: 0,
35+
temperature: this.options.modelTemperature ?? MISTRAL_DEFAULT_TEMPERATURE,
3436
messages: [{ role: "system", content: systemPrompt }, ...convertToMistralMessages(messages)],
3537
stream: true,
3638
})

src/api/providers/ollama.ts

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ import { ApiHandlerOptions, ModelInfo, openAiModelInfoSaneDefaults } from "../..
55
import { convertToOpenAiMessages } from "../transform/openai-format"
66
import { convertToR1Format } from "../transform/r1-format"
77
import { ApiStream } from "../transform/stream"
8+
import { DEEP_SEEK_DEFAULT_TEMPERATURE } from "./openai"
9+
10+
const OLLAMA_DEFAULT_TEMPERATURE = 0
811

912
export class OllamaHandler implements ApiHandler, SingleCompletionHandler {
1013
private options: ApiHandlerOptions
@@ -20,7 +23,7 @@ export class OllamaHandler implements ApiHandler, SingleCompletionHandler {
2023

2124
async *createMessage(systemPrompt: string, messages: Anthropic.Messages.MessageParam[]): ApiStream {
2225
const modelId = this.getModel().id
23-
const useR1Format = modelId.toLowerCase().includes('deepseek-r1')
26+
const useR1Format = modelId.toLowerCase().includes("deepseek-r1")
2427
const openAiMessages: OpenAI.Chat.ChatCompletionMessageParam[] = [
2528
{ role: "system", content: systemPrompt },
2629
...(useR1Format ? convertToR1Format(messages) : convertToOpenAiMessages(messages)),
@@ -29,7 +32,7 @@ export class OllamaHandler implements ApiHandler, SingleCompletionHandler {
2932
const stream = await this.client.chat.completions.create({
3033
model: this.getModel().id,
3134
messages: openAiMessages,
32-
temperature: 0,
35+
temperature: this.options.modelTemperature ?? OLLAMA_DEFAULT_TEMPERATURE,
3336
stream: true,
3437
})
3538
for await (const chunk of stream) {
@@ -53,11 +56,15 @@ export class OllamaHandler implements ApiHandler, SingleCompletionHandler {
5356
async completePrompt(prompt: string): Promise<string> {
5457
try {
5558
const modelId = this.getModel().id
56-
const useR1Format = modelId.toLowerCase().includes('deepseek-r1')
59+
const useR1Format = modelId.toLowerCase().includes("deepseek-r1")
5760
const response = await this.client.chat.completions.create({
5861
model: this.getModel().id,
59-
messages: useR1Format ? convertToR1Format([{ role: "user", content: prompt }]) : [{ role: "user", content: prompt }],
60-
temperature: 0,
62+
messages: useR1Format
63+
? convertToR1Format([{ role: "user", content: prompt }])
64+
: [{ role: "user", content: prompt }],
65+
temperature:
66+
this.options.modelTemperature ??
67+
(useR1Format ? DEEP_SEEK_DEFAULT_TEMPERATURE : OLLAMA_DEFAULT_TEMPERATURE),
6168
stream: false,
6269
})
6370
return response.choices[0]?.message.content || ""

src/api/providers/openai-native.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ import {
1111
import { convertToOpenAiMessages } from "../transform/openai-format"
1212
import { ApiStream } from "../transform/stream"
1313

14+
const OPENAI_NATIVE_DEFAULT_TEMPERATURE = 0
15+
1416
export class OpenAiNativeHandler implements ApiHandler, SingleCompletionHandler {
1517
private options: ApiHandlerOptions
1618
private client: OpenAI
@@ -88,7 +90,7 @@ export class OpenAiNativeHandler implements ApiHandler, SingleCompletionHandler
8890
): ApiStream {
8991
const stream = await this.client.chat.completions.create({
9092
model: modelId,
91-
temperature: 0,
93+
temperature: this.options.modelTemperature ?? OPENAI_NATIVE_DEFAULT_TEMPERATURE,
9294
messages: [{ role: "system", content: systemPrompt }, ...convertToOpenAiMessages(messages)],
9395
stream: true,
9496
stream_options: { include_usage: true },
@@ -189,7 +191,7 @@ export class OpenAiNativeHandler implements ApiHandler, SingleCompletionHandler
189191
return {
190192
model: modelId,
191193
messages: [{ role: "user", content: prompt }],
192-
temperature: 0,
194+
temperature: this.options.modelTemperature ?? OPENAI_NATIVE_DEFAULT_TEMPERATURE,
193195
}
194196
}
195197
}

src/api/providers/openai.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@ export interface OpenAiHandlerOptions extends ApiHandlerOptions {
1717
defaultHeaders?: Record<string, string>
1818
}
1919

20+
export const DEEP_SEEK_DEFAULT_TEMPERATURE = 0.6
21+
const OPENAI_DEFAULT_TEMPERATURE = 0
22+
2023
export class OpenAiHandler implements ApiHandler, SingleCompletionHandler {
2124
protected options: OpenAiHandlerOptions
2225
private client: OpenAI
@@ -74,7 +77,9 @@ export class OpenAiHandler implements ApiHandler, SingleCompletionHandler {
7477

7578
const requestOptions: OpenAI.Chat.Completions.ChatCompletionCreateParamsStreaming = {
7679
model: modelId,
77-
temperature: 0,
80+
temperature:
81+
this.options.modelTemperature ??
82+
(deepseekReasoner ? DEEP_SEEK_DEFAULT_TEMPERATURE : OPENAI_DEFAULT_TEMPERATURE),
7883
messages: convertedMessages,
7984
stream: true as const,
8085
stream_options: { include_usage: true },

0 commit comments

Comments
 (0)