aquafire / multimodal.rs

Last active 6 months ago

Like 0
multimodal.rs Raw
1use future_utils::StreamExt;
2use llm_connector::{
3 LlmClient,
4 types::{ChatRequest, Message, Role, MessageBlock},
5};
6
7use tokio::fs;
8use base64::engine::general_purpose::STANDARD;
9use base64::Engine;
10
11#[tokio::main]
12async fn main() -> Result<(), Box<dyn std::error::Error>> {
13 let client = LlmClient::openai_with_base_url("", "http://192.168.0.11:1234")?;
14
15 let models = client.models().await?;
16 for model in models {
17 println!("Available model: {}", model);
18 }
19
20 let data = fs::read("/home/aquafire/Downloads/14843746.jpg").await?;
21 let encoded = STANDARD.encode(&data);
22
23 println!("{}", encoded);
24
25
26 let request = ChatRequest {
27 model: "qwen/qwen3-vl-30b".to_string(),
28 messages: vec![
29 Message::new(
30 Role::User,
31 vec![
32 MessageBlock::text("Analyze this image"),
33 MessageBlock::image_base64("image/jpeg", encoded),
34 ],
35 ),
36 ],
37 ..Default::default()
38 };
39
40 let response = client.chat(&request).await?;
41 println!("Response: {}", response.content);
42
43 Ok(())
44}