summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/client/model.rs6
-rw-r--r--src/config/input.rs7
-rw-r--r--src/serve.rs11
3 files changed, 20 insertions, 4 deletions
diff --git a/src/client/model.rs b/src/client/model.rs
index 8fcc6db..6681856 100644
--- a/src/client/model.rs
+++ b/src/client/model.rs
@@ -198,6 +198,10 @@ impl Model {
self.data.no_system_message
}
+ pub fn no_temperature(&self) -> bool {
+ self.data.no_temperature
+ }
+
pub fn system_prompt_prefix(&self) -> Option<&str> {
self.data.system_prompt_prefix.as_deref()
}
@@ -325,6 +329,8 @@ pub struct ModelData {
no_stream: bool,
#[serde(default, skip_serializing_if = "std::ops::Not::not")]
no_system_message: bool,
+ #[serde(default, skip_serializing_if = "std::ops::Not::not")]
+ no_temperature: bool,
#[serde(skip_serializing_if = "Option::is_none")]
system_prompt_prefix: Option<String>,
diff --git a/src/config/input.rs b/src/config/input.rs
index 1067b2c..a63e9a6 100644
--- a/src/config/input.rs
+++ b/src/config/input.rs
@@ -240,8 +240,11 @@ impl Input {
let mut messages = self.build_messages()?;
patch_messages(&mut messages, model);
model.guard_max_input_tokens(&messages)?;
- let temperature = self.role().temperature();
- let top_p = self.role().top_p();
+ let (temperature, top_p) = if model.no_temperature() {
+ (None, None)
+ } else {
+ (self.role().temperature(), self.role().top_p())
+ };
let functions = self.config.read().select_functions(self.role());
Ok(ChatCompletionsData {
messages,
diff --git a/src/serve.rs b/src/serve.rs
index f51e56f..4c1a741 100644
--- a/src/serve.rs
+++ b/src/serve.rs
@@ -270,8 +270,8 @@ impl Server {
let ChatCompletionsReqBody {
model,
messages,
- temperature,
- top_p,
+ mut temperature,
+ mut top_p,
max_tokens,
stream,
tools,
@@ -309,7 +309,14 @@ impl Server {
let completion_id = generate_completion_id();
let created = Utc::now().timestamp();
+
patch_messages(&mut messages, client.model());
+
+ if client.model().no_temperature() {
+ temperature = None;
+ top_p = None;
+ }
+
let data: ChatCompletionsData = ChatCompletionsData {
messages,
temperature,