summaryrefslogtreecommitdiffstats
path: root/src/config/input.rs
diff options
context:
space:
mode:
authorsigoden <sigoden@gmail.com>2024-01-13 19:52:07 +0800
committerGitHub <noreply@github.com>2024-01-13 19:52:07 +0800
commitfe35cfd9419302f01baf9672493c0b0a4b41d889 (patch)
tree94e763745fb7989c97af39cc1dfb44250440a5eb /src/config/input.rs
parent4e99df4c1bd4028a77251bdb00ff23c664372b5f (diff)
downloadaichat-fe35cfd9419302f01baf9672493c0b0a4b41d889.tar.gz
feat: supports model capabilities (#297)
1. automatically switch to the model that has the necessary capabilities. 2. throw an error if the client does not have a model with the necessary capabilities
Diffstat (limited to 'src/config/input.rs')
-rw-r--r--src/config/input.rs10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/config/input.rs b/src/config/input.rs
index fc29c49..c3e0de3 100644
--- a/src/config/input.rs
+++ b/src/config/input.rs
@@ -1,4 +1,4 @@
-use crate::client::{ImageUrl, MessageContent, MessageContentPart};
+use crate::client::{ImageUrl, MessageContent, MessageContentPart, ModelCapabilities};
use crate::utils::sha256sum;
use anyhow::{bail, Context, Result};
@@ -119,6 +119,14 @@ impl Input {
MessageContent::Array(list)
}
}
+
+ pub fn required_capabilities(&self) -> ModelCapabilities {
+ if !self.medias.is_empty() {
+ ModelCapabilities::Vision
+ } else {
+ ModelCapabilities::Text
+ }
+ }
}
pub fn resolve_data_url(data_urls: &HashMap<String, String>, data_url: String) -> String {