mirror of
https://github.com/BerriAI/litellm.git
synced 2026-10-07 02:59:05 +00:00
fix(ocr): normalize DeepSeek document content
This commit is contained in:
parent
c7f0c46029
commit
5cd67f38d6
3 changed files with 28 additions and 2 deletions
|
|
@ -14,11 +14,15 @@ pub(crate) fn transform_ocr_request(
|
||||||
if document.source().is_empty() {
|
if document.source().is_empty() {
|
||||||
return Err(OcrRequestError::MissingField("document URL"));
|
return Err(OcrRequestError::MissingField("document URL"));
|
||||||
}
|
}
|
||||||
|
let content = OcrDocument::ImageUrl {
|
||||||
|
image_url: document.source().to_string(),
|
||||||
|
extra_fields: serde_json::Map::new(),
|
||||||
|
};
|
||||||
Ok(DeepSeekOcrRequest {
|
Ok(DeepSeekOcrRequest {
|
||||||
model: provider_model.to_string(),
|
model: provider_model.to_string(),
|
||||||
messages: vec![DeepSeekOcrMessage {
|
messages: vec![DeepSeekOcrMessage {
|
||||||
role: UserRole::User,
|
role: UserRole::User,
|
||||||
content: vec![document],
|
content: vec![content],
|
||||||
}],
|
}],
|
||||||
params: params.clone(),
|
params: params.clone(),
|
||||||
})
|
})
|
||||||
|
|
|
||||||
|
|
@ -34,6 +34,28 @@ fn request_mapping_matches_python(#[case] name: &str, #[case] value: Value) {
|
||||||
assert!(result.get("ignored").is_none());
|
assert!(result.get("ignored").is_none());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[rstest]
|
||||||
|
#[case(json!({"type":"image_url","image_url":"data:image/png;base64,AA=="}))]
|
||||||
|
#[case(json!({"type":"document_url","document_url":"data:application/pdf;base64,AA=="}))]
|
||||||
|
fn request_maps_both_document_types_to_image_content(#[case] document: Value) {
|
||||||
|
let source = document
|
||||||
|
.get("image_url")
|
||||||
|
.or_else(|| document.get("document_url"))
|
||||||
|
.unwrap()
|
||||||
|
.clone();
|
||||||
|
let request = transform_ocr_request(
|
||||||
|
"deepseek-ai/deepseek-ocr-maas",
|
||||||
|
serde_json::from_value(document).unwrap(),
|
||||||
|
&DeepSeekOcrParams::default(),
|
||||||
|
)
|
||||||
|
.unwrap();
|
||||||
|
let result = serde_json::to_value(request).unwrap();
|
||||||
|
assert_eq!(
|
||||||
|
result["messages"][0]["content"][0],
|
||||||
|
json!({"type":"image_url","image_url":source})
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
#[rstest]
|
#[rstest]
|
||||||
#[case(json!("# hello"), "# hello")]
|
#[case(json!("# hello"), "# hello")]
|
||||||
#[case(json!("{broken"), "{broken")]
|
#[case(json!("{broken"), "{broken")]
|
||||||
|
|
|
||||||
|
|
@ -49,7 +49,7 @@ async fn facade_executes_vertex_deepseek_at_the_openai_endpoint() {
|
||||||
assert!(body.get("extra_body").is_none());
|
assert!(body.get("extra_body").is_none());
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
body["messages"][0]["content"][0],
|
body["messages"][0]["content"][0],
|
||||||
json!({"type":"document_url","document_url":"gs://bucket/document.pdf"})
|
json!({"type":"image_url","image_url":"gs://bucket/document.pdf"})
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue