Skip to content

Commit 57a4a5b

Browse files
committed
refactor: update infer initialization in image MIME type detection
1 parent 03f8bfc commit 57a4a5b

File tree

4 files changed

+9
-9
lines changed

4 files changed

+9
-9
lines changed

src/llm/anthropic.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use crate::llm::{
22
LlmGenerateRequest, LlmGenerateResponse, LlmGenerationClient, OutputFormat,
3-
ToJsonSchemaOptions, detect_mime_type,
3+
ToJsonSchemaOptions, detect_image_mime_type,
44
};
55
use anyhow::{Context, Result, bail};
66
use async_trait::async_trait;
@@ -44,7 +44,7 @@ impl LlmGenerationClient for Client {
4444
if let Some(image_bytes) = &request.image {
4545
let base64_image =
4646
base64::engine::general_purpose::STANDARD.encode(image_bytes.as_ref());
47-
let mime_type = detect_mime_type(image_bytes.as_ref())?;
47+
let mime_type = detect_image_mime_type(image_bytes.as_ref())?;
4848
user_content_parts.push(serde_json::json!({
4949
"type": "image",
5050
"source": {

src/llm/gemini.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use crate::prelude::*;
22

33
use crate::llm::{
44
LlmEmbeddingClient, LlmGenerateRequest, LlmGenerateResponse, LlmGenerationClient, OutputFormat,
5-
ToJsonSchemaOptions, detect_mime_type,
5+
ToJsonSchemaOptions, detect_image_mime_type,
66
};
77
use base64::Engine;
88
use phf::phf_map;
@@ -80,7 +80,7 @@ impl LlmGenerationClient for Client {
8080
if let Some(image_bytes) = &request.image {
8181
let base64_image =
8282
base64::engine::general_purpose::STANDARD.encode(image_bytes.as_ref());
83-
let mime_type = detect_mime_type(image_bytes.as_ref())?;
83+
let mime_type = detect_image_mime_type(image_bytes.as_ref())?;
8484
user_parts.push(serde_json::json!({
8585
"inlineData": {
8686
"mimeType": mime_type,

src/llm/mod.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use infer::Infer;
55
use schemars::schema::SchemaObject;
66
use std::borrow::Cow;
77

8-
static INFER: OnceLock<Infer> = OnceLock::new();
8+
static INFER: LazyLock<Infer> = LazyLock::new(Infer::new);
99

1010
#[derive(Debug, Clone, Copy, Serialize, Deserialize)]
1111
pub enum LlmApiType {
@@ -146,8 +146,8 @@ pub fn new_llm_embedding_client(
146146
Ok(client)
147147
}
148148

149-
pub fn detect_mime_type(bytes: &[u8]) -> Result<&'static str> {
150-
let infer = INFER.get_or_init(Infer::new);
149+
pub fn detect_image_mime_type(bytes: &[u8]) -> Result<&'static str> {
150+
let infer = &*INFER;
151151
match infer.get(bytes) {
152152
Some(info) if info.mime_type().starts_with("image/") => Ok(info.mime_type()),
153153
_ => bail!("Unknown or unsupported image format"),

src/llm/openai.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use crate::api_bail;
22

3-
use super::{LlmEmbeddingClient, LlmGenerationClient, detect_mime_type};
3+
use super::{LlmEmbeddingClient, LlmGenerationClient, detect_image_mime_type};
44
use anyhow::Result;
55
use async_openai::{
66
Client as OpenAIClient,
@@ -70,7 +70,7 @@ impl LlmGenerationClient for Client {
7070
Some(img_bytes) => {
7171
use base64::{Engine as _, engine::general_purpose::STANDARD};
7272
let base64_image = STANDARD.encode(img_bytes.as_ref());
73-
let mime_type = detect_mime_type(img_bytes.as_ref())?;
73+
let mime_type = detect_image_mime_type(img_bytes.as_ref())?;
7474
let image_url = format!("data:{};base64,{}", mime_type, base64_image);
7575
ChatCompletionRequestUserMessageContent::Array(vec![
7676
ChatCompletionRequestUserMessageContentPart::Text(

0 commit comments

Comments
 (0)