1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
use serde_json::Value; use crate::llm::LlmRequest; use crate::types::MessageRole; pub(in crate::llm::vv_llm_client) fn request_metadata_for_prompt_cache( request: &LlmRequest, ) -> Value { let mut metadata = request .metadata .as_object() .cloned() .unwrap_or_else(serde_json::Map::new); if let Some(system_metadata) = request .messages .iter() .find(|message| message.role == MessageRole::System) .map(|message| &message.metadata) .filter(|metadata| !metadata.is_empty()) { metadata.extend(system_metadata.clone()); } Value::Object(metadata) }