Enum aleph_alpha_client::Modality
source · pub enum Modality<'a> {
Text {
data: Cow<'a, str>,
},
Image {
data: Cow<'a, str>,
},
}
Expand description
The prompt for models can be a combination of different modalities (Text and Image). The type of modalities which are supported depend on the Model in question.
Variants§
Text
The only type of prompt which can be used with pure language models
Image
An image input into the model. See Modality::from_image_path
.
Implementations§
source§impl<'a> Modality<'a>
impl<'a> Modality<'a>
sourcepub fn from_image_path(path: impl AsRef<Path>) -> Result<Self, LoadImageError>
pub fn from_image_path(path: impl AsRef<Path>) -> Result<Self, LoadImageError>
Image input for model, from file path.
The model can only see squared pictures. Images are centercropped.
use aleph_alpha_client::{Client, How, Modality, Prompt, Sampling, Stopping, TaskCompletion};
use dotenv::dotenv;
use std::path::PathBuf;
#[tokio::main(flavor = "current_thread")]
async fn main() {
// Create client
let _ = dotenv();
let aa_api_token = std::env::var("AA_API_TOKEN")
.expect("AA_API_TOKEN environment variable must be specified to run demo.");
let client = Client::new(&aa_api_token).unwrap();
// Define task
let task = TaskCompletion {
prompt: Prompt::from_vec(vec![
Modality::from_image_path("cat.png").unwrap(),
Modality::from_text("A picture of "),
]),
stopping: Stopping::from_maximum_tokens(10),
sampling: Sampling::MOST_LIKELY,
};
// Execute
let model = "luminous-base";
let client = Client::new(&aa_api_token).unwrap();
let response = client.execute(model, &task, &How::default()).await.unwrap();
// Show result
println!("{}", response.completion);
}
sourcepub fn from_image(image: &DynamicImage) -> Result<Self, LoadImageError>
pub fn from_image(image: &DynamicImage) -> Result<Self, LoadImageError>
Image input for model
The model can only see squared pictures. Images are centercropped. You may want to use this
method instead of Self::from_image_path
in case you have the image in memory already
and do not want to load it from a file again.
sourcepub fn borrow(&self) -> Modality<'_>
pub fn borrow(&self) -> Modality<'_>
Create a semantically idetical entry of modality which borrows the contents of this one.
It is very practical to allow Modality of e.g. Text to take both ownership of the string it contains as well as borrow a slice. However then we are creating a body from the user input we want to avoid copying everything and needing to allocate for that modality again. This is there this borrow function really shines.
Trait Implementations§
source§impl<'a> PartialEq<Modality<'a>> for Modality<'a>
impl<'a> PartialEq<Modality<'a>> for Modality<'a>
impl<'a> Eq for Modality<'a>
impl<'a> StructuralEq for Modality<'a>
impl<'a> StructuralPartialEq for Modality<'a>
Auto Trait Implementations§
impl<'a> RefUnwindSafe for Modality<'a>
impl<'a> Send for Modality<'a>
impl<'a> Sync for Modality<'a>
impl<'a> Unpin for Modality<'a>
impl<'a> UnwindSafe for Modality<'a>
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.