Skip to content

Commit bc9773f

Browse files
author
Roo Code
committed
Configure per-configuration temperature
1 parent e29ce27 commit bc9773f

File tree

16 files changed

+124
-30
lines changed

16 files changed

+124
-30
lines changed

src/api/providers/anthropic.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ export class AnthropicHandler implements ApiHandler, SingleCompletionHandler {
4444
{
4545
model: modelId,
4646
max_tokens: this.getModel().info.maxTokens || 8192,
47-
temperature: 0,
47+
temperature: this.options.modelTemperature ?? 0,
4848
system: [{ text: systemPrompt, type: "text", cache_control: { type: "ephemeral" } }], // setting cache breakpoint for system prompt so new tasks can reuse it
4949
messages: messages.map((message, index) => {
5050
if (index === lastUserMsgIndex || index === secondLastMsgUserIndex) {
@@ -96,7 +96,7 @@ export class AnthropicHandler implements ApiHandler, SingleCompletionHandler {
9696
stream = (await this.client.messages.create({
9797
model: modelId,
9898
max_tokens: this.getModel().info.maxTokens || 8192,
99-
temperature: 0,
99+
temperature: this.options.modelTemperature ?? 0,
100100
system: [{ text: systemPrompt, type: "text" }],
101101
messages,
102102
// tools,
@@ -179,7 +179,7 @@ export class AnthropicHandler implements ApiHandler, SingleCompletionHandler {
179179
const response = await this.client.messages.create({
180180
model: this.getModel().id,
181181
max_tokens: this.getModel().info.maxTokens || 8192,
182-
temperature: 0,
182+
temperature: this.options.modelTemperature ?? 0,
183183
messages: [{ role: "user", content: prompt }],
184184
stream: false,
185185
})

src/api/providers/bedrock.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ export class AwsBedrockHandler implements ApiHandler, SingleCompletionHandler {
104104
system: [{ text: systemPrompt }],
105105
inferenceConfig: {
106106
maxTokens: modelConfig.info.maxTokens || 5000,
107-
temperature: 0.3,
107+
temperature: this.options.modelTemperature ?? 0.3,
108108
topP: 0.1,
109109
...(this.options.awsUsePromptCache
110110
? {
@@ -262,7 +262,7 @@ export class AwsBedrockHandler implements ApiHandler, SingleCompletionHandler {
262262
]),
263263
inferenceConfig: {
264264
maxTokens: modelConfig.info.maxTokens || 5000,
265-
temperature: 0.3,
265+
temperature: this.options.modelTemperature ?? 0.3,
266266
topP: 0.1,
267267
},
268268
}

src/api/providers/gemini.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ export class GeminiHandler implements ApiHandler, SingleCompletionHandler {
2323
contents: messages.map(convertAnthropicMessageToGemini),
2424
generationConfig: {
2525
// maxOutputTokens: this.getModel().info.maxTokens,
26-
temperature: 0,
26+
temperature: this.options.modelTemperature ?? 0,
2727
},
2828
})
2929

@@ -60,7 +60,7 @@ export class GeminiHandler implements ApiHandler, SingleCompletionHandler {
6060
const result = await model.generateContent({
6161
contents: [{ role: "user", parts: [{ text: prompt }] }],
6262
generationConfig: {
63-
temperature: 0,
63+
temperature: this.options.modelTemperature ?? 0,
6464
},
6565
})
6666

src/api/providers/glama.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ export class GlamaHandler implements ApiHandler, SingleCompletionHandler {
7979
}
8080

8181
if (this.supportsTemperature()) {
82-
requestOptions.temperature = 0
82+
requestOptions.temperature = this.options.modelTemperature ?? 0
8383
}
8484

8585
const { data: completion, response } = await this.client.chat.completions
@@ -172,7 +172,7 @@ export class GlamaHandler implements ApiHandler, SingleCompletionHandler {
172172
}
173173

174174
if (this.supportsTemperature()) {
175-
requestOptions.temperature = 0
175+
requestOptions.temperature = this.options.modelTemperature ?? 0
176176
}
177177

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

src/api/providers/lmstudio.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ export class LmStudioHandler implements ApiHandler, SingleCompletionHandler {
2727
const stream = await this.client.chat.completions.create({
2828
model: this.getModel().id,
2929
messages: openAiMessages,
30-
temperature: 0,
30+
temperature: this.options.modelTemperature ?? 0,
3131
stream: true,
3232
})
3333
for await (const chunk of stream) {
@@ -59,7 +59,7 @@ export class LmStudioHandler implements ApiHandler, SingleCompletionHandler {
5959
const response = await this.client.chat.completions.create({
6060
model: this.getModel().id,
6161
messages: [{ role: "user", content: prompt }],
62-
temperature: 0,
62+
temperature: this.options.modelTemperature ?? 0,
6363
stream: false,
6464
})
6565
return response.choices[0]?.message.content || ""

src/api/providers/mistral.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ export class MistralHandler implements ApiHandler {
3030
const stream = await this.client.chat.stream({
3131
model: this.getModel().id,
3232
// max_completion_tokens: this.getModel().info.maxTokens,
33-
temperature: 0,
33+
temperature: this.options.modelTemperature ?? 0,
3434
messages: [{ role: "system", content: systemPrompt }, ...convertToMistralMessages(messages)],
3535
stream: true,
3636
})

src/api/providers/ollama.ts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ export class OllamaHandler implements ApiHandler, SingleCompletionHandler {
2020

2121
async *createMessage(systemPrompt: string, messages: Anthropic.Messages.MessageParam[]): ApiStream {
2222
const modelId = this.getModel().id
23-
const useR1Format = modelId.toLowerCase().includes('deepseek-r1')
23+
const useR1Format = modelId.toLowerCase().includes("deepseek-r1")
2424
const openAiMessages: OpenAI.Chat.ChatCompletionMessageParam[] = [
2525
{ role: "system", content: systemPrompt },
2626
...(useR1Format ? convertToR1Format(messages) : convertToOpenAiMessages(messages)),
@@ -29,7 +29,7 @@ export class OllamaHandler implements ApiHandler, SingleCompletionHandler {
2929
const stream = await this.client.chat.completions.create({
3030
model: this.getModel().id,
3131
messages: openAiMessages,
32-
temperature: 0,
32+
temperature: this.options.modelTemperature ?? 0,
3333
stream: true,
3434
})
3535
for await (const chunk of stream) {
@@ -53,11 +53,13 @@ export class OllamaHandler implements ApiHandler, SingleCompletionHandler {
5353
async completePrompt(prompt: string): Promise<string> {
5454
try {
5555
const modelId = this.getModel().id
56-
const useR1Format = modelId.toLowerCase().includes('deepseek-r1')
56+
const useR1Format = modelId.toLowerCase().includes("deepseek-r1")
5757
const response = await this.client.chat.completions.create({
5858
model: this.getModel().id,
59-
messages: useR1Format ? convertToR1Format([{ role: "user", content: prompt }]) : [{ role: "user", content: prompt }],
60-
temperature: 0,
59+
messages: useR1Format
60+
? convertToR1Format([{ role: "user", content: prompt }])
61+
: [{ role: "user", content: prompt }],
62+
temperature: this.options.modelTemperature ?? 0,
6163
stream: false,
6264
})
6365
return response.choices[0]?.message.content || ""

src/api/providers/openai-native.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ export class OpenAiNativeHandler implements ApiHandler, SingleCompletionHandler
8888
): ApiStream {
8989
const stream = await this.client.chat.completions.create({
9090
model: modelId,
91-
temperature: 0,
91+
temperature: this.options.modelTemperature ?? 0,
9292
messages: [{ role: "system", content: systemPrompt }, ...convertToOpenAiMessages(messages)],
9393
stream: true,
9494
stream_options: { include_usage: true },
@@ -189,7 +189,7 @@ export class OpenAiNativeHandler implements ApiHandler, SingleCompletionHandler
189189
return {
190190
model: modelId,
191191
messages: [{ role: "user", content: prompt }],
192-
temperature: 0,
192+
temperature: this.options.modelTemperature ?? 0,
193193
}
194194
}
195195
}

src/api/providers/openai.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ export class OpenAiHandler implements ApiHandler, SingleCompletionHandler {
5757
}
5858
const requestOptions: OpenAI.Chat.Completions.ChatCompletionCreateParamsStreaming = {
5959
model: modelId,
60-
temperature: 0,
60+
temperature: this.options.modelTemperature ?? (deepseekReasoner ? 0.6 : 0),
6161
messages: deepseekReasoner
6262
? convertToR1Format([{ role: "user", content: systemPrompt }, ...messages])
6363
: [systemMessage, ...convertToOpenAiMessages(messages)],

src/api/providers/openrouter.ts

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ export class OpenRouterHandler implements ApiHandler, SingleCompletionHandler {
115115
break
116116
}
117117

118-
let temperature = 0
118+
let defaultTemperature = 0
119119
let topP: number | undefined = undefined
120120

121121
// Handle models based on deepseek-r1
@@ -124,9 +124,8 @@ export class OpenRouterHandler implements ApiHandler, SingleCompletionHandler {
124124
this.getModel().id === "perplexity/sonar-reasoning"
125125
) {
126126
// Recommended temperature for DeepSeek reasoning models
127-
temperature = 0.6
128-
// DeepSeek highly recommends using user instead of system
129-
// role
127+
defaultTemperature = 0.6
128+
// DeepSeek highly recommends using user instead of system role
130129
openAiMessages = convertToR1Format([{ role: "user", content: systemPrompt }, ...messages])
131130
// Some provider support topP and 0.95 is value that Deepseek used in their benchmarks
132131
topP = 0.95
@@ -137,7 +136,7 @@ export class OpenRouterHandler implements ApiHandler, SingleCompletionHandler {
137136
const stream = await this.client.chat.completions.create({
138137
model: this.getModel().id,
139138
max_tokens: maxTokens,
140-
temperature: temperature,
139+
temperature: this.options.modelTemperature ?? defaultTemperature,
141140
top_p: topP,
142141
messages: openAiMessages,
143142
stream: true,
@@ -224,7 +223,7 @@ export class OpenRouterHandler implements ApiHandler, SingleCompletionHandler {
224223
const response = await this.client.chat.completions.create({
225224
model: this.getModel().id,
226225
messages: [{ role: "user", content: prompt }],
227-
temperature: 0,
226+
temperature: this.options.modelTemperature ?? 0,
228227
stream: false,
229228
})
230229

0 commit comments

Comments
 (0)