[SMG][DS32][fix] support dsv32, add role developer (#14307)

This commit is contained in:
Jimmy
2025-12-11 08:09:09 -08:00
committed by GitHub
parent d0f756aec9
commit 2c4d376d23
3 changed files with 36 additions and 9 deletions
+12 -9
View File
@@ -56,6 +56,14 @@ pub enum ChatMessage {
},
#[serde(rename = "function")]
Function { content: String, name: String },
#[serde(rename = "developer")]
Developer {
content: MessageContent,
#[serde(skip_serializing_if = "Option::is_none")]
tools: Option<Vec<Tool>>,
#[serde(skip_serializing_if = "Option::is_none")]
name: Option<String>,
},
}
#[derive(Debug, Clone, Deserialize, Serialize, PartialEq)]
@@ -638,7 +646,10 @@ impl GenerationRequest for ChatCompletionRequest {
for msg in &self.messages {
match msg {
ChatMessage::System { content, .. } | ChatMessage::User { content, .. } => {
ChatMessage::System { content, .. }
| ChatMessage::User { content, .. }
| ChatMessage::Tool { content, .. }
| ChatMessage::Developer { content, .. } => {
if has_content && content.has_text() {
buffer.push(' ');
}
@@ -671,14 +682,6 @@ impl GenerationRequest for ChatCompletionRequest {
}
}
}
ChatMessage::Tool { content, .. } => {
if has_content && content.has_text() {
buffer.push(' ');
}
if content.append_text_to(&mut buffer) {
has_content = true;
}
}
ChatMessage::Function { content, .. } => {
if !content.is_empty() {
if has_content {
@@ -711,6 +711,26 @@ impl HarmonyBuilder {
};
harmony_messages.push(harmony_msg);
}
ChatMessage::Developer {
content,
name,
tools: _,
} => {
// Developer messages stay as-is
let harmony_msg = HarmonyMessage {
author: Author {
role: Role::Developer,
name: name.clone(),
},
recipient: None,
content: vec![Content::Text(TextContent {
text: content.to_simple_string(),
})],
channel: None,
content_type: None,
};
harmony_messages.push(harmony_msg);
}
ChatMessage::User { content, name } => {
// Extract text from user content
@@ -1132,6 +1132,10 @@ impl RouterTrait for PDRouter {
MessageContent::Text(text) => Some(text.clone()),
MessageContent::Parts(_) => None,
},
ChatMessage::Developer { content, .. } => match content {
MessageContent::Text(text) => Some(text.clone()),
MessageContent::Parts(_) => None,
},
ChatMessage::System { content, .. } => Some(content.to_simple_string()),
_ => None,
})