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