diff --git a/src/llm/glm.rs b/src/llm/glm.rs index c1530093..b60d6873 100644 --- a/src/llm/glm.rs +++ b/src/llm/glm.rs @@ -207,8 +207,13 @@ impl LLMProvider for GLMClient { let role = m.get("role")?.as_str()?; let content = m.get("content")?.as_str()?; let sanitized = Self::sanitize_utf8(content); + let normalized_role = match role { + "user" | "assistant" | "system" | "tool" => role, + "episodic" | "compact" => "system", + _ => "user", + }; Some(GLMMessage { - role: role.to_string(), + role: normalized_role.to_string(), content: Some(sanitized), tool_calls: None, }) diff --git a/src/llm/kimi.rs b/src/llm/kimi.rs index df2f1f0f..0eef4564 100644 --- a/src/llm/kimi.rs +++ b/src/llm/kimi.rs @@ -211,8 +211,13 @@ impl LLMProvider for KimiClient { let role = m.get("role")?.as_str()?; let content = m.get("content")?.as_str()?; let sanitized = Self::sanitize_utf8(content); + let normalized_role = match role { + "user" | "assistant" | "system" | "tool" => role, + "episodic" | "compact" => "system", + _ => "user", + }; Some(KimiMessage { - role: role.to_string(), + role: normalized_role.to_string(), content: Some(sanitized), tool_calls: None, })