diff --git a/crates/dbx-core/src/ai.rs b/crates/dbx-core/src/ai.rs index 80a0538419..a45f15df9b 100644 --- a/crates/dbx-core/src/ai.rs +++ b/crates/dbx-core/src/ai.rs @@ -443,7 +443,7 @@ pub fn supports_temperature(config: &AiConfig) -> bool { fn add_temperature_if_supported_for_config(body: &mut serde_json::Value, config: &AiConfig, temperature: Option) { if supports_temperature(config) { - body["temperature"] = json!(temperature.unwrap_or(0.2)); + body["temperature"] = temperature_value(temperature); } } @@ -451,6 +451,11 @@ pub fn add_temperature_if_supported(body: &mut serde_json::Value, request: &AiCo add_temperature_if_supported_for_config(body, &request.config, request.temperature); } +fn temperature_value(temperature: Option) -> serde_json::Value { + let value = ((temperature.unwrap_or(0.2) as f64) * 100.0).round() / 100.0; + json!(value) +} + fn responses_text(data: &serde_json::Value) -> String { if let Some(text) = data["output_text"].as_str().filter(|text| !text.is_empty()) { return text.to_string(); @@ -683,7 +688,7 @@ pub async fn call_claude(client: &reqwest::Client, request: AiCompletionRequest) let body = json!({ "model": request.config.model, "max_tokens": request.max_tokens.unwrap_or(2048), - "temperature": request.temperature.unwrap_or(0.2), + "temperature": temperature_value(request.temperature), "system": claude_system_prompt(&request.system_prompt), "messages": request.messages, }); @@ -788,7 +793,7 @@ pub async fn call_gemini(client: &reqwest::Client, request: AiCompletionRequest) "contents": contents, "generationConfig": { "maxOutputTokens": request.max_tokens.unwrap_or(2048), - "temperature": request.temperature.unwrap_or(0.2), + "temperature": temperature_value(request.temperature), }, }); @@ -908,7 +913,7 @@ pub async fn test_connection_core(config: &AiConfig) -> Result Result