summaryrefslogtreecommitdiffstats
path: root/src/client
diff options
context:
space:
mode:
Diffstat (limited to 'src/client')
-rw-r--r--src/client/model.rs12
-rw-r--r--src/client/openai.rs6
2 files changed, 17 insertions, 1 deletions
diff --git a/src/client/model.rs b/src/client/model.rs
index 08ced10..f8a23ff 100644
--- a/src/client/model.rs
+++ b/src/client/model.rs
@@ -183,6 +183,14 @@ impl Model {
self.data.supports_vision
}
+ pub fn no_stream(&self) -> bool {
+ self.data.no_stream
+ }
+
+ pub fn no_system_message(&self) -> bool {
+ self.data.no_system_message
+ }
+
pub fn max_tokens_per_chunk(&self) -> Option<usize> {
self.data.max_tokens_per_chunk
}
@@ -268,6 +276,10 @@ pub struct ModelData {
pub supports_vision: bool,
#[serde(default)]
pub supports_function_calling: bool,
+ #[serde(default)]
+ no_stream: bool,
+ #[serde(default)]
+ no_system_message: bool,
// embedding-only properties
pub max_tokens_per_chunk: Option<usize>,
diff --git a/src/client/openai.rs b/src/client/openai.rs
index c4c2b0c..831b64f 100644
--- a/src/client/openai.rs
+++ b/src/client/openai.rs
@@ -193,13 +193,17 @@ struct EmbeddingsResBodyEmbedding {
pub fn openai_build_chat_completions_body(data: ChatCompletionsData, model: &Model) -> Value {
let ChatCompletionsData {
- messages,
+ mut messages,
temperature,
top_p,
functions,
stream,
} = data;
+ if model.no_system_message() {
+ patch_system_message(&mut messages);
+ }
+
let messages: Vec<Value> = messages
.into_iter()
.flat_map(|message| {