pub struct ReasoningConfig {
pub enabled: Option<bool>,
pub effort: Option<ReasoningEffort>,
pub summary: Option<ReasoningSummary>,
}Expand description
Reasoning-model controls for a chat completion request.
Three independent knobs, each serialized only when set:
effortmaps to the official OpenAI Chat Completionsreasoning_effortparameter (accepted by OpenAI and most OpenAI-compatible gateways, including OpenRouter).enabledmaps to the OpenRouter extension objectreasoning: {"enabled": bool}.enabled: falsestops reasoning models from emitting chain-of-thought intocontent(which would otherwise also burnmax_tokenson reasoning). This key is only sent when you explicitly set it — pure-OpenAI endpoints never see it otherwise.summaryrides inside the samereasoningobject; the key and its values (auto/concise/detailed) follow the official OpenAI Responses-APIreasoning.summaryparameter, which OpenRouter’s chat completions endpoint also accepts.
Forwarded by OpenAIClient in both complete
and stream_complete. AnthropicClient
forwards effort as output_config.effort (how Claude 5.5-class models
set thinking depth; the legacy thinking.budget_tokens form is rejected
there) and ignores enabled/summary.
Fields§
§enabled: Option<bool>On/off toggle for providers with an explicit switch (OpenRouter
reasoning.enabled).
effort: Option<ReasoningEffort>How much the model reasons (OpenAI reasoning_effort).
summary: Option<ReasoningSummary>Reasoning summary style (OpenAI Responses reasoning.summary).
Implementations§
Source§impl ReasoningConfig
impl ReasoningConfig
Sourcepub fn disabled() -> Self
pub fn disabled() -> Self
Turn reasoning off where the provider supports an explicit switch
(serializes reasoning: {"enabled": false} — the OpenRouter form).
Sourcepub fn effort(effort: ReasoningEffort) -> Self
pub fn effort(effort: ReasoningEffort) -> Self
Request a specific reasoning effort (serializes reasoning_effort).
Trait Implementations§
Source§impl Clone for ReasoningConfig
impl Clone for ReasoningConfig
Source§impl Debug for ReasoningConfig
impl Debug for ReasoningConfig
Source§impl Default for ReasoningConfig
impl Default for ReasoningConfig
Source§impl<'de> Deserialize<'de> for ReasoningConfig
impl<'de> Deserialize<'de> for ReasoningConfig
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 ReasoningConfig
impl RefUnwindSafe for ReasoningConfig
impl Send for ReasoningConfig
impl Sync for ReasoningConfig
impl Unpin for ReasoningConfig
impl UnsafeUnpin for ReasoningConfig
impl UnwindSafe for ReasoningConfig
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.