diff options
| author | sigoden <sigoden@gmail.com> | 2025-02-03 22:35:01 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-02-03 22:35:01 +0800 |
| commit | 700d8a3245f1133c37e035039e511a1e5dce1a5d (patch) | |
| tree | 7b1b2cf2e816adb0af399c9ca34051d3fcbef47f /src/client/openai.rs | |
| parent | 07e58aaacd8c7f486a0d2a7c8d35a195f27d487e (diff) | |
| download | aichat-700d8a3245f1133c37e035039e511a1e5dce1a5d.tar.gz | |
feat: strip reasoning contents (#1141)
Diffstat (limited to 'src/client/openai.rs')
| -rw-r--r-- | src/client/openai.rs | 9 |
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 })] } }) |
