use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct AssistantMessage {
#[serde(rename = "role")]
pub role: RoleTrue,
#[serde(rename = "content", skip_serializing_if = "Option::is_none")]
pub content: Option<String>,
#[serde(rename = "refusal", skip_serializing_if = "Option::is_none")]
pub refusal: Option<String>,
#[serde(rename = "tool_calls", skip_serializing_if = "Option::is_none")]
pub tool_calls: Option<Vec<models::ToolCall>>,
#[serde(rename = "name", skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
}
impl AssistantMessage {
pub fn new(role: RoleTrue) -> AssistantMessage {
AssistantMessage {
role,
content: None,
refusal: None,
tool_calls: None,
name: None,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum RoleTrue {
#[serde(rename = "assistant")]
Assistant,
}
impl Default for RoleTrue {
fn default() -> RoleTrue {
Self::Assistant
}
}