Skip to main content

agent_context/
role.rs

1use serde::{Deserialize, Serialize};
2
3/// LLM 对话消息角色,对应 OpenAI/DeepSeek/智谱等 API 的标准消息角色。
4#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, derive_more::Display)]
5pub enum Role {
6    /// 系统提示词
7    #[display("system")]
8    System,
9    /// 用户消息
10    #[display("user")]
11    User,
12    /// 模型回复
13    #[display("assistant")]
14    Assistant,
15    /// 工具调用结果
16    #[display("tool")]
17    Tool,
18}
19
20#[cfg(test)]
21mod tests {
22    use super::*;
23
24    #[test]
25    fn display() {
26        assert_eq!(Role::System.to_string(), "system");
27        assert_eq!(Role::User.to_string(), "user");
28        assert_eq!(Role::Assistant.to_string(), "assistant");
29        assert_eq!(Role::Tool.to_string(), "tool");
30    }
31
32    #[test]
33    fn serde_roundtrip() {
34        let json = serde_json::to_string(&Role::Assistant).unwrap();
35        assert_eq!(json, "\"Assistant\"");
36        let role: Role = serde_json::from_str(&json).unwrap();
37        assert_eq!(role, Role::Assistant);
38    }
39}