From 30dae5c12b81a6f92be138966d8930fa15612cb0 Mon Sep 17 00:00:00 2001 From: sigoden Date: Fri, 17 Jan 2025 20:06:28 +0800 Subject: feat: support macro (#1087) --- src/client/message.rs | 6 +++--- src/client/model.rs | 26 ++++++++++++++++++-------- 2 files changed, 21 insertions(+), 11 deletions(-) (limited to 'src/client') diff --git a/src/client/message.rs b/src/client/message.rs index f6b7f6d..2cfc183 100644 --- a/src/client/message.rs +++ b/src/client/message.rs @@ -1,4 +1,4 @@ -use crate::{function::ToolResult, utils::dimmed_text}; +use crate::{function::ToolResult, multiline_text, utils::dimmed_text}; use serde::{Deserialize, Serialize}; @@ -83,7 +83,7 @@ impl MessageContent { agent_info: &Option<(String, Vec)>, ) -> String { match self { - MessageContent::Text(text) => text.to_string(), + MessageContent::Text(text) => multiline_text(text), MessageContent::Array(list) => { let (mut concated_text, mut files) = (String::new(), vec![]); for item in list { @@ -97,7 +97,7 @@ impl MessageContent { } } if !concated_text.is_empty() { - concated_text = format!(" -- {concated_text}") + concated_text = format!(" -- {}", multiline_text(&concated_text)) } format!(".file {}{}", files.join(" "), concated_text) } diff --git a/src/client/model.rs b/src/client/model.rs index 47f6598..60320cb 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, format_option_value}; +use crate::utils::estimate_token_length; use anyhow::{bail, Result}; use serde::{Deserialize, Serialize}; @@ -133,10 +133,10 @@ impl Model { supports_function_calling, .. } = &self.data; - let max_input_tokens = format_option_value(max_input_tokens); - let max_output_tokens = format_option_value(max_output_tokens); - let input_price = format_option_value(input_price); - let output_price = format_option_value(output_price); + let max_input_tokens = stringify_option_value(max_input_tokens); + let max_output_tokens = stringify_option_value(max_output_tokens); + let input_price = stringify_option_value(input_price); + let output_price = stringify_option_value(output_price); let mut capabilities = vec![]; if *supports_vision { capabilities.push('👁'); @@ -161,9 +161,9 @@ impl Model { max_batch_size, .. } = &self.data; - let max_tokens = format_option_value(max_tokens_per_chunk); - let max_batch = format_option_value(max_batch_size); - let price = format_option_value(input_price); + let max_tokens = stringify_option_value(max_tokens_per_chunk); + let max_batch = stringify_option_value(max_batch_size); + let price = stringify_option_value(input_price); format!("max-tokens:{max_tokens};max-batch:{max_batch};price:{price}") } ModelType::Reranker => String::new(), @@ -366,3 +366,13 @@ impl ModelType { } } } + +fn stringify_option_value(value: &Option) -> String +where + T: std::fmt::Display, +{ + match value { + Some(value) => value.to_string(), + None => "-".to_string(), + } +} -- cgit v1.2.3