langsmith_rust/models/
messages.rs1use serde::{Deserialize, Serialize};
2use serde_json::Value;
3
4#[derive(Debug, Clone, Serialize, Deserialize)]
5pub struct ToolCall {
6 pub id: String,
7 pub name: String,
8 pub args: Value,
9}
10
11#[derive(Debug, Clone, Serialize, Deserialize)]
12pub struct AIMessage {
13 pub content: String,
14 #[serde(rename = "tool_calls", skip_serializing_if = "Vec::is_empty")]
15 pub tool_calls: Vec<ToolCall>,
16}
17
18#[derive(Debug, Clone, Serialize, Deserialize)]
19pub struct ToolMessage {
20 #[serde(rename = "tool_call_id")]
21 pub tool_call_id: String,
22 pub content: String,
23 pub name: String,
24}
25
26#[derive(Debug, Clone, Serialize, Deserialize)]
27pub struct HumanMessage {
28 pub content: String,
29}
30
31#[derive(Debug, Clone, Serialize, Deserialize)]
32pub struct SystemMessage {
33 pub content: String,
34}
35
36#[derive(Debug, Clone, Serialize, Deserialize)]
37#[serde(tag = "role", rename_all = "lowercase")]
38pub enum Message {
39 #[serde(rename = "ai")]
40 AI(AIMessage),
41 #[serde(rename = "tool")]
42 Tool(ToolMessage),
43 #[serde(rename = "human")]
44 Human(HumanMessage),
45 #[serde(rename = "system")]
46 System(SystemMessage),
47}
48