From 700d8a3245f1133c37e035039e511a1e5dce1a5d Mon Sep 17 00:00:00 2001 From: sigoden Date: Mon, 3 Feb 2025 22:35:01 +0800 Subject: feat: strip reasoning contents (#1141) --- src/client/model.rs | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'src/client/model.rs') diff --git a/src/client/model.rs b/src/client/model.rs index b562705..bcd474f 100644 --- a/src/client/model.rs +++ b/src/client/model.rs @@ -5,7 +5,7 @@ use super::{ }; use crate::config::Config; -use crate::utils::estimate_token_length; +use crate::utils::{estimate_token_length, strip_think_tag}; use anyhow::{bail, Result}; use serde::{Deserialize, Serialize}; @@ -220,10 +220,18 @@ impl Model { } pub fn messages_tokens(&self, messages: &[Message]) -> usize { + let messages_len = messages.len(); messages .iter() - .map(|v| match &v.content { - MessageContent::Text(text) => estimate_token_length(text), + .enumerate() + .map(|(i, v)| match &v.content { + MessageContent::Text(text) => { + if v.role.is_assistant() && i != messages_len - 1 { + estimate_token_length(&strip_think_tag(text)) + } else { + estimate_token_length(text) + } + } MessageContent::Array(list) => list .iter() .map(|v| match v { -- cgit v1.2.3