ChatCompletionResponseMessage

Struct ChatCompletionResponseMessage 

Source
pub struct ChatCompletionResponseMessage {
    pub role: String,
    pub content: Option<String>,
    pub tool_calls: Option<Vec<ChatCompletionMessageToolCall>>,
    pub function_call: Option<FunctionCall>,
    pub content_blocks: Option<Vec<ContentBlock>>,
}
Expand description

Chat completion response message

Fields§

§role: String

The role of the message author

§content: Option<String>

The contents of the message

§tool_calls: Option<Vec<ChatCompletionMessageToolCall>>

Tool calls made by the model

§function_call: Option<FunctionCall>

Deprecated: Function call (use tool_calls instead)

§content_blocks: Option<Vec<ContentBlock>>

Content blocks (for providers with strict_openai_compliance=false)

Implementations§

Source§

impl ChatCompletionResponseMessage

Source

pub fn deserialize_content<T>(&self) -> Result<Option<T>>

Deserializes the JSON content of the message into a custom type.

This is useful when using structured outputs with JSON schema, allowing you to deserialize the response into your custom type.

Returns Ok(None) if the message has no content, Ok(Some(T)) if deserialization succeeds, or Err if the content is not valid JSON for the target type.

§Example
use serde::{Deserialize, Serialize};

#[derive(Serialize, Deserialize)]
struct MyResponse {
    message: String,
    count: i32,
}

let response_message = /* ... get from API response ... */;
if let Some(parsed) = response_message.deserialize_content::<MyResponse>()? {
    println!("Message: {}, Count: {}", parsed.message, parsed.count);
}
Source

pub fn deserialize_markdown<T>(&self) -> Result<Option<T>>

Deserializes JSON from markdown code blocks within the message content.

This method searches for markdown code blocks ( ```json or ```) within the content and extracts the JSON from within them. It can handle content that has text before or after the code block. If no code block is found, it attempts to parse the entire content.

Returns Ok(None) if the message has no content, Ok(Some(T)) if deserialization succeeds, or Err if the content is not valid JSON for the target type.

§Example
use serde::{Deserialize, Serialize};

#[derive(Serialize, Deserialize)]
struct MyResponse {
    message: String,
    count: i32,
}

// Content might be: "Here's your data:\n```json\n{\"message\": \"Hello\", \"count\": 42}\n```\nEnjoy!"
let response_message = /* ... get from API response ... */;
if let Some(parsed) = response_message.deserialize_markdown::<MyResponse>()? {
    println!("Message: {}, Count: {}", parsed.message, parsed.count);
}

Trait Implementations§

Source§

impl Clone for ChatCompletionResponseMessage

Source§

fn clone(&self) -> ChatCompletionResponseMessage

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for ChatCompletionResponseMessage

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for ChatCompletionResponseMessage

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for ChatCompletionResponseMessage

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,