From e14617d88dfc09db401569a39903ebc51d17966b Mon Sep 17 00:00:00 2001 From: sailesh duddupudi Date: Thu, 13 Feb 2025 19:33:38 +0000 Subject: [PATCH] make content field optional in chat request --- router/src/infer/chat_template.rs | 4 +++- router/src/lib.rs | 24 ++++++++++++++---------- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/router/src/infer/chat_template.rs b/router/src/infer/chat_template.rs index 2fef2dcb..b5bd8c1e 100644 --- a/router/src/infer/chat_template.rs +++ b/router/src/infer/chat_template.rs @@ -74,7 +74,9 @@ impl ChatTemplate { format!("\n---\n{}", tool_prompt) }; if let Some(last_message) = messages.last_mut() { - last_message.content.push(MessageChunk::Text { text }); + if let Some(content) = last_message.content.as_mut() { + content.push(MessageChunk::Text { text }); + } } Some(tools) } diff --git a/router/src/lib.rs b/router/src/lib.rs index 414d38ed..1ef7f506 100644 --- a/router/src/lib.rs +++ b/router/src/lib.rs @@ -1181,7 +1181,7 @@ pub struct Message { #[schema(example = "user")] role: String, #[schema(example = "My name is David and I")] - pub content: MessageContent, + pub content: Option, #[serde(default, skip_serializing_if = "Option::is_none")] #[schema(example = "\"David\"")] name: Option, @@ -1224,15 +1224,19 @@ impl From for TextMessage { TextMessage { role: value.role, content: match value.content { - MessageContent::SingleText(text) => text, - MessageContent::MultipleChunks(chunks) => chunks - .into_iter() - .map(|chunk| match chunk { - MessageChunk::Text { text } => text, - MessageChunk::ImageUrl { image_url } => format!("![]({})", image_url.url), - }) - .collect::>() - .join(""), + // If content is Some(MessageContent), handle it accordingly + Some(MessageContent::SingleText(text)) => text, + Some(MessageContent::MultipleChunks(chunks)) => { + chunks.into_iter() + .map(|chunk| match chunk { + MessageChunk::Text { text } => text, + MessageChunk::ImageUrl { image_url } => format!("![]({})", image_url.url), + }) + .collect::>() + .join("") + } + // If content is None, use an empty string or a default message + None => String::new(), // or you could use "No content" or another placeholder }, } }