diff options
| author | sigoden <sigoden@gmail.com> | 2025-02-26 21:06:11 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-02-26 21:06:11 +0800 |
| commit | cb54f8643a965fbc35b1f07eb3ea026692eb8091 (patch) | |
| tree | 719617569d379e4c34badbff95a77d0771df7213 /src/client/claude.rs | |
| parent | 6b28b1c4fcf57edc4375703bca34eeafa597c905 (diff) | |
| download | aichat-cb54f8643a965fbc35b1f07eb3ea026692eb8091.tar.gz | |
refactor: several improvements (#1203)
Diffstat (limited to 'src/client/claude.rs')
| -rw-r--r-- | src/client/claude.rs | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/client/claude.rs b/src/client/claude.rs index 202d2f7..4b77870 100644 --- a/src/client/claude.rs +++ b/src/client/claude.rs @@ -1,5 +1,7 @@ use super::*; +use crate::utils::strip_think_tag; + use anyhow::{bail, Context, Result}; use reqwest::RequestBuilder; use serde::Deserialize; @@ -169,11 +171,16 @@ pub fn claude_build_chat_completions_body( let mut network_image_urls = vec![]; + 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::Text(text) if role.is_assistant() && i != messages_len - 1 => { + vec![json!({ "role": role, "content": strip_think_tag(&text) })] + } MessageContent::Text(text) => vec