summaryrefslogtreecommitdiffstats
path: root/src/client/claude.rs
diff options
context:
space:
mode:
authorsigoden <sigoden@gmail.com>2025-02-26 21:06:11 +0800
committerGitHub <noreply@github.com>2025-02-26 21:06:11 +0800
commitcb54f8643a965fbc35b1f07eb3ea026692eb8091 (patch)
tree719617569d379e4c34badbff95a77d0771df7213 /src/client/claude.rs
parent6b28b1c4fcf57edc4375703bca34eeafa597c905 (diff)
downloadaichat-cb54f8643a965fbc35b1f07eb3ea026692eb8091.tar.gz
refactor: several improvements (#1203)
Diffstat (limited to 'src/client/claude.rs')
-rw-r--r--src/client/claude.rs9
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![json!({
"role": role,
"content": text,