summaryrefslogtreecommitdiffstats
path: root/src/client
diff options
context:
space:
mode:
authorsigoden <sigoden@gmail.com>2025-01-17 20:06:28 +0800
committerGitHub <noreply@github.com>2025-01-17 20:06:28 +0800
commit30dae5c12b81a6f92be138966d8930fa15612cb0 (patch)
treeecb641bedbe8798d6b477f1036d714b99f1a8081 /src/client
parent50c60e8097f5148c30295a296063d0fc8391a5f4 (diff)
downloadaichat-30dae5c12b81a6f92be138966d8930fa15612cb0.tar.gz
feat: support macro (#1087)
Diffstat (limited to 'src/client')
-rw-r--r--src/client/message.rs6
-rw-r--r--src/client/model.rs26
2 files changed, 21 insertions, 11 deletions
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>)>,
) -> 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<T>(value: &Option<T>) -> String
+where
+ T: std::fmt::Display,
+{
+ match value {
+ Some(value) => value.to_string(),
+ None => "-".to_string(),
+ }
+}