pub struct ChatMessage {
pub role: ChatRole,
pub content: String,
pub tool_calls: Vec<ToolCall>,
pub tool_call_id: Option<String>,
pub tool_name: Option<String>,
pub attachments: Vec<ChatAttachment>,
pub attachment_refs: Vec<String>,
}Expand description
A chat turn: role and content plus optional tool calls, tool-result routing, and attachments.
Fields§
§role: ChatRoleThe author.
content: StringThe visible text content.
tool_calls: Vec<ToolCall>Tool calls this (assistant) turn emitted.
tool_call_id: Option<String>The id of the tool call this (tool) turn answers.
tool_name: Option<String>The name of the tool this (tool) turn answers.
attachments: Vec<ChatAttachment>Attachments (images forwarded, documents inlined).
attachment_refs: Vec<String>Content-addressed references to attachments held elsewhere.
Implementations§
Source§impl ChatMessage
impl ChatMessage
Sourcepub fn new(role: ChatRole, content: impl Into<String>) -> Self
pub fn new(role: ChatRole, content: impl Into<String>) -> Self
A plain message with just a role and content.
Sourcepub fn payload_value(&self) -> JsonValue
pub fn payload_value(&self) -> JsonValue
The outbound wire object: document blocks prepended to the content, tool
calls / tool routing carried through, and images base64-encoded into an
images array.
Sourcepub fn from_payload(value: &JsonValue) -> Option<Self>
pub fn from_payload(value: &JsonValue) -> Option<Self>
Leniently parse one message object, returning None if it lacks a valid
role. Unknown fields and malformed tool calls are dropped, not rejected.
Sourcepub fn parse_strict(
value: &JsonValue,
index: usize,
) -> Result<Self, ChatWireError>
pub fn parse_strict( value: &JsonValue, index: usize, ) -> Result<Self, ChatWireError>
Strictly parse the message at index, rejecting a non-object, a missing
or unknown role, or non-string content.
Sourcepub fn parse_all(payload: &JsonValue) -> Result<Vec<Self>, ChatWireError>
pub fn parse_all(payload: &JsonValue) -> Result<Vec<Self>, ChatWireError>
Parse the whole chat request: a messages array (strictly, index by
index) or, failing that, a single prompt string as one user turn.
Sourcepub fn inlined_tool_transcript(&self) -> ChatMessage
pub fn inlined_tool_transcript(&self) -> ChatMessage
This message with any assistant tool calls folded into the visible text as
<tool_call>{…}</tool_call> blocks — the transcript form for a model that
takes tool history as plain text. A non-assistant or call-less message is
returned unchanged.
Trait Implementations§
Source§impl Clone for ChatMessage
impl Clone for ChatMessage
Source§fn clone(&self) -> ChatMessage
fn clone(&self) -> ChatMessage
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more