summaryrefslogtreecommitdiffstats
path: root/src/client/model.rs
diff options
context:
space:
mode:
authorsigoden <sigoden@gmail.com>2023-11-27 14:04:50 +0800
committerGitHub <noreply@github.com>2023-11-27 14:04:50 +0800
commit35c75506e2fd94e2285d8a3cb66208d518d5f992 (patch)
tree97fb643bb5e231022442c1cc617f2daeaa152a66 /src/client/model.rs
parent5bfe95d31110e75e84626598f033805b0ae4326c (diff)
downloadaichat-35c75506e2fd94e2285d8a3cb66208d518d5f992.tar.gz
feat: support vision (#249)
* feat: support vision * clippy * implement vision * resolve data url to local file * add model openai:gpt-4-vision-preview * use newline to concate embeded text files * set max_tokens for gpt-4-vision-preview
Diffstat (limited to 'src/client/model.rs')
-rw-r--r--src/client/model.rs12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/client/model.rs b/src/client/model.rs
index 16fe087..130489d 100644
--- a/src/client/model.rs
+++ b/src/client/model.rs
@@ -1,4 +1,4 @@
-use super::message::Message;
+use super::message::{Message, MessageContent};
use crate::utils::count_tokens;
@@ -79,7 +79,15 @@ impl Model {
}
pub fn messages_tokens(&self, messages: &[Message]) -> usize {
- messages.iter().map(|v| count_tokens(&v.content)).sum()
+ messages
+ .iter()
+ .map(|v| {
+ match &v.content {
+ MessageContent::Text(text) => count_tokens(text),
+ MessageContent::Array(_) => 0, // TODO
+ }
+ })
+ .sum()
}
pub fn total_tokens(&self, messages: &[Message]) -> usize {