summaryrefslogtreecommitdiffstats
path: root/src/client/openai.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/openai.rs')
-rw-r--r--src/client/openai.rs9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/client/openai.rs b/src/client/openai.rs
index 6490236..928a600 100644
--- a/src/client/openai.rs
+++ b/src/client/openai.rs
@@ -1,5 +1,7 @@
use super::*;
+use crate::utils::strip_think_tag;
+
use anyhow::{bail, Context, Result};
use reqwest::RequestBuilder;
use serde::Deserialize;
@@ -219,9 +221,11 @@ pub fn openai_build_chat_completions_body(data: ChatCompletionsData, model: &Mod
stream,
} = data;
+ let messages_len = messages.len();
let messages: Vec<Value> = messages
.into_iter()
- .flat_map(|message| {
+ .enumerate()
+ .flat_map(|(i, message)| {
let Message { role, content } = message;
match content {
MessageContent::ToolCalls(MessageContentToolCalls {
@@ -281,6 +285,9 @@ pub fn openai_build_chat_completions_body(data: ChatCompletionsData, model: &Mod
}).collect()
}
},
+ MessageContent::Text(text) if role.is_assistant() && i != messages_len - 1 => vec![
+ json!({ "role": role, "content": strip_think_tag(&text) }
+ )],
_ => vec![json!({ "role": role, "content": content })]
}
})