pub struct LLMResponse {
pub content: String,
pub reasoning: Option<String>,
pub model: String,
pub usage: TokenUsage,
pub tool_calls: Vec<ToolCall>,
pub finish_reason: Option<String>,
pub id: Option<String>,
pub created: Option<u64>,
}Expand description
A chat completion response from an LLM provider.
Implements Default for forward-compatible struct-update syntax
(LLMResponse { ..LLMResponse::default() }).
Fields§
§content: StringGenerated text content.
reasoning: Option<String>Reasoning model’s chain-of-thought (GLM-4.5+/z.ai, OpenAI o1, DeepSeek-R1).
When the provider leaves content empty and returns the final answer in
reasoning_content, the client promotes the reasoning into content and
still preserves the original here. None for non-reasoning models and for
cache entries written before this field existed (serde default).
model: StringModel that produced this response.
usage: TokenUsageToken usage statistics.
tool_calls: Vec<ToolCall>Tool calls the model requested this turn.
Empty unless the request supplied LLMRequest::tools and the model
chose to call one. Each entry carries the provider-assigned call id,
tool name, and JSON-encoded arguments.
finish_reason: Option<String>Reason the generation stopped (e.g. "stop", "length", "tool_calls").
id: Option<String>Provider-assigned response ID (useful for logging and deduplication).
created: Option<u64>Unix timestamp (seconds) when the response was created.
Trait Implementations§
Source§impl Clone for LLMResponse
impl Clone for LLMResponse
Source§fn clone(&self) -> LLMResponse
fn clone(&self) -> LLMResponse
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for LLMResponse
impl Debug for LLMResponse
Source§impl Default for LLMResponse
impl Default for LLMResponse
Source§fn default() -> LLMResponse
fn default() -> LLMResponse
Source§impl<'de> Deserialize<'de> for LLMResponse
impl<'de> Deserialize<'de> for LLMResponse
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for LLMResponse
impl RefUnwindSafe for LLMResponse
impl Send for LLMResponse
impl Sync for LLMResponse
impl Unpin for LLMResponse
impl UnsafeUnpin for LLMResponse
impl UnwindSafe for LLMResponse
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
impl<T> ErasedDestructor for Twhere
T: 'static,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::RequestSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<R, P> ReadPrimitive<R> for P
impl<R, P> ReadPrimitive<R> for P
Source§fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
ReadEndian::read_from_little_endian().Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.