diff options
| author | sigoden <sigoden@gmail.com> | 2023-03-20 22:51:51 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-03-20 22:51:51 +0800 |
| commit | 19ce62ab769b74a8e417cd1213b7711a5ed55638 (patch) | |
| tree | a47d48798710855b3faca84e54d4e3ffb8776c2f /src/config/mod.rs | |
| parent | 28f019b72c1027207ec8dc82844401512712464d (diff) | |
| download | aichat-19ce62ab769b74a8e417cd1213b7711a5ed55638.tar.gz | |
feat: check token usage in dry_run mode (#82)
Diffstat (limited to 'src/config/mod.rs')
| -rw-r--r-- | src/config/mod.rs | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/src/config/mod.rs b/src/config/mod.rs index 147a817..e3d81cb 100644 --- a/src/config/mod.rs +++ b/src/config/mod.rs @@ -2,10 +2,11 @@ mod conversation; mod message; mod role; +use self::conversation::Conversation; use self::message::Message; use self::role::Role; -use self::{conversation::Conversation, message::within_max_tokens_limit}; +use crate::config::message::num_tokens_from_messages; use crate::utils::now; use anyhow::{anyhow, bail, Context, Result}; @@ -292,7 +293,10 @@ impl Config { let message = Message::new(content); vec![message] }; - within_max_tokens_limit(&messages, self.model.1)?; + let tokens = num_tokens_from_messages(&messages); + if tokens >= self.model.1 { + bail!("Exceed max tokens limit") + } Ok(messages) } @@ -434,6 +438,15 @@ impl Config { (self.highlight, self.light_theme) } + pub fn maybe_print_send_tokens(&self, input: &str) { + if self.dry_run { + if let Ok(messages) = self.build_messages(input) { + let tokens = num_tokens_from_messages(&messages); + println!(">>> The following message consumes {tokens} tokens.") + } + } + } + fn open_message_file(&self) -> Result<File> { let path = Config::messages_file()?; ensure_parent_exists(&path)?; |
