use dim_rs::{prelude::*, vectorization::ModelParameters};
use image::DynamicImage;
use tokio;
use anyhow::{Error, Result};
use async_openai::{Client, config::OpenAIConfig};
#[tokio::main]
async fn main() -> Result<(), Error> {
let image_path: &str = "./examples/images/54e2c8ea-58ef-4871-ae3f-75eabd9a2c6c.jpg";
let test_image: DynamicImage = image::open(image_path).unwrap();
let mut vector: Vector<DynamicImage> = Vector::from_image(test_image);
let client: Client<OpenAIConfig> = Client::with_config(
OpenAIConfig::new()
.with_api_base("http://192.168.0.101:11434/v1") .with_api_key("your_api_key")
);
let prompts: Vec<String> = vec![
"output in json. Rate the image's offensiveness from 0.0 to 10.0. {'offensiveness': your score}".to_string(),
"output in json. Rate the image's friendliness from 0.0 to 10.0. {'friendliness': your score}".to_string(),
];
let model_parameters = ModelParameters::new(
"minicpm-v".to_string(),
Some(0.7),
None
);
vectorize_image_concurrently(
prompts,
&mut vector,
client,
model_parameters
).await?;
println!("Vector: {:?}", vector.get_vector());
println!("Vector Length: {:?}", vector.get_vector().len());
Ok(())
}