diff options
| author | sigoden <sigoden@gmail.com> | 2024-01-13 19:52:07 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-01-13 19:52:07 +0800 |
| commit | fe35cfd9419302f01baf9672493c0b0a4b41d889 (patch) | |
| tree | 94e763745fb7989c97af39cc1dfb44250440a5eb /src/config | |
| parent | 4e99df4c1bd4028a77251bdb00ff23c664372b5f (diff) | |
| download | aichat-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')
| -rw-r--r-- | src/config/input.rs | 10 |
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 { |
