#[non_exhaustive]pub struct LiveModelProfile {
pub thinking: bool,
pub thinking_level_required: bool,
pub affective_dialog_flag: bool,
pub proactivity_flag: bool,
pub vertex_async_tools: bool,
}Expand description
What a Live model accepts in its setup message, as far as this crate knows.
The model catalog moves faster than releases, so this is keyed on the
model name and errs toward sending what the caller set: only models known
to reject or ignore a field have it removed. Anything unrecognised gets
LiveModelProfile::DEFAULT — every field passes through. Platform rules
that hold for every model (Google AI has no proactivity, for one) live
on SessionConfig, not here.
let p = LiveModelProfile::of(&ModelId::LIVE_3_8);
assert!(!p.thinking && !p.affective_dialog_flag && p.vertex_async_tools);
let x = LiveModelProfile::of(&ModelId::LIVE_3_8_EXTENDED_THINKING);
assert!(x.thinking && x.thinking_level_required);
assert_eq!(LiveModelProfile::of(&ModelId::LIVE_2_5_FLASH_NATIVE_AUDIO), LiveModelProfile::DEFAULT);Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.thinking: boolAccepts thinkingConfig. Vertex AI Live strips it for every model
except those that require a thinking level.
thinking_level_required: boolRequires thinkingConfig.thinkingLevel: the setup is refused without
it (“Thinking level must be specified for this model”).
affective_dialog_flag: boolAccepts the enableAffectiveDialog flag. Gemini 3.8 Live has
affective dialogue always on and closes the session (1007) when the
flag is sent.
proactivity_flag: boolAccepts the proactivity config. Always on in Gemini 3.8 Live, whose
docs say not to send it.
vertex_async_tools: boolAccepts behavior / scheduling on Vertex AI (Google AI always
does).
Implementations§
Source§impl LiveModelProfile
impl LiveModelProfile
Sourcepub const DEFAULT: LiveModelProfile
pub const DEFAULT: LiveModelProfile
The profile of a model this crate has no special knowledge of.
Sourcepub const GEMINI_3_8_LIVE: LiveModelProfile
pub const GEMINI_3_8_LIVE: LiveModelProfile
Gemini 3.8 Live. No thinking: thinkingLevel is refused and a
thinking budget has no effect.
Sourcepub const GEMINI_3_8_LIVE_EXTENDED_THINKING: LiveModelProfile
pub const GEMINI_3_8_LIVE_EXTENDED_THINKING: LiveModelProfile
Gemini 3.8 Live Extended Thinking: requires thinkingLevel, and
answers a question that needs thought in a later turn (a spoken
holding line first, interactionStatus: IN_PROGRESS).
Sourcepub fn of(model: &ModelId) -> LiveModelProfile
pub fn of(model: &ModelId) -> LiveModelProfile
The profile for model, matched on its name (with or without a
models/ or publisher path).
Trait Implementations§
Source§impl Clone for LiveModelProfile
impl Clone for LiveModelProfile
Source§fn clone(&self) -> LiveModelProfile
fn clone(&self) -> LiveModelProfile
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for LiveModelProfile
impl Debug for LiveModelProfile
Source§impl PartialEq for LiveModelProfile
impl PartialEq for LiveModelProfile
impl Copy for LiveModelProfile
impl Eq for LiveModelProfile
impl StructuralPartialEq for LiveModelProfile
Auto Trait Implementations§
impl Freeze for LiveModelProfile
impl RefUnwindSafe for LiveModelProfile
impl Send for LiveModelProfile
impl Sync for LiveModelProfile
impl Unpin for LiveModelProfile
impl UnwindSafe for LiveModelProfile
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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 more§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Layered].