diff options
Diffstat (limited to 'src/client')
| -rw-r--r-- | src/client/model.rs | 12 | ||||
| -rw-r--r-- | src/client/openai.rs | 6 |
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| { |
