diff options
| author | sigoden <sigoden@gmail.com> | 2023-11-27 14:04:50 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-11-27 14:04:50 +0800 |
| commit | 35c75506e2fd94e2285d8a3cb66208d518d5f992 (patch) | |
| tree | 97fb643bb5e231022442c1cc617f2daeaa152a66 /src/client/model.rs | |
| parent | 5bfe95d31110e75e84626598f033805b0ae4326c (diff) | |
| download | aichat-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.rs | 12 |
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 { |
