pub struct ZhipuClient(/* private fields */);Expand description
Zhipu AI (GLM) client
Implementations§
Source§impl ZhipuClient
impl ZhipuClient
pub fn new(api_key: String, model: String) -> Self
pub fn with_temperature(self, temperature: f32) -> Self
pub fn with_max_tokens(self, max_tokens: usize) -> Self
pub fn with_logprobs(self, enabled: bool) -> Self
pub fn with_top_logprobs(self, top_logprobs: usize) -> Self
pub fn with_base_url(self, base_url: String) -> Self
pub fn with_retry_config(self, retry_config: RetryConfig) -> Self
pub fn with_http_client(self, http: Arc<dyn HttpClient>) -> Self
Trait Implementations§
Source§impl LlmClient for ZhipuClient
impl LlmClient for ZhipuClient
Source§fn model_generation_pool(&self) -> Option<ModelGenerationPool>
fn model_generation_pool(&self) -> Option<ModelGenerationPool>
Describe the non-secret provider/model capacity pool shared by this
client. The default is
None for custom clients that do not expose a
stable routing identity; they retain the existing per-client gate.Source§fn complete<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
messages: &'life1 [Message],
system: Option<&'life2 str>,
tools: &'life3 [ToolDefinition],
) -> Pin<Box<dyn Future<Output = Result<LlmResponse>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
fn complete<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
messages: &'life1 [Message],
system: Option<&'life2 str>,
tools: &'life3 [ToolDefinition],
) -> Pin<Box<dyn Future<Output = Result<LlmResponse>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
Complete a conversation (non-streaming)
Source§fn complete_streaming<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
messages: &'life1 [Message],
system: Option<&'life2 str>,
tools: &'life3 [ToolDefinition],
cancel_token: CancellationToken,
) -> Pin<Box<dyn Future<Output = Result<Receiver<StreamEvent>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
fn complete_streaming<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
messages: &'life1 [Message],
system: Option<&'life2 str>,
tools: &'life3 [ToolDefinition],
cancel_token: CancellationToken,
) -> Pin<Box<dyn Future<Output = Result<Receiver<StreamEvent>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
Complete a conversation with streaming
Returns a receiver for streaming events.
The cancel_token is checked during the HTTP request; if cancelled, the request is aborted.
Source§fn native_structured_support(&self) -> NativeStructuredSupport
fn native_structured_support(&self) -> NativeStructuredSupport
Report the strongest provider-native structured-output enforcement this
client supports. Used by
structured to decide whether to force a
tool call, request a native response_format, or fall back to
prompt-and-parse. Defaults to no native support.Source§fn has_distinct_non_streaming_transport(&self) -> bool
fn has_distinct_non_streaming_transport(&self) -> bool
Report whether
LlmClient::complete_structured uses a transport that
is independent from the streaming implementation. Read moreSource§fn complete_structured<'life0, 'life1, 'life2, 'life3, 'life4, 'async_trait>(
&'life0 self,
messages: &'life1 [Message],
system: Option<&'life2 str>,
tools: &'life3 [ToolDefinition],
directive: &'life4 StructuredDirective,
) -> Pin<Box<dyn Future<Output = Result<LlmResponse>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
'life4: 'async_trait,
fn complete_structured<'life0, 'life1, 'life2, 'life3, 'life4, 'async_trait>(
&'life0 self,
messages: &'life1 [Message],
system: Option<&'life2 str>,
tools: &'life3 [ToolDefinition],
directive: &'life4 StructuredDirective,
) -> Pin<Box<dyn Future<Output = Result<LlmResponse>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
'life4: 'async_trait,
Complete a conversation while honoring a structured-output directive
(forced
tool_choice and/or native response_format). Read moreSource§fn complete_streaming_structured<'life0, 'life1, 'life2, 'life3, 'life4, 'async_trait>(
&'life0 self,
messages: &'life1 [Message],
system: Option<&'life2 str>,
tools: &'life3 [ToolDefinition],
directive: &'life4 StructuredDirective,
cancel_token: CancellationToken,
) -> Pin<Box<dyn Future<Output = Result<Receiver<StreamEvent>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
'life4: 'async_trait,
fn complete_streaming_structured<'life0, 'life1, 'life2, 'life3, 'life4, 'async_trait>(
&'life0 self,
messages: &'life1 [Message],
system: Option<&'life2 str>,
tools: &'life3 [ToolDefinition],
directive: &'life4 StructuredDirective,
cancel_token: CancellationToken,
) -> Pin<Box<dyn Future<Output = Result<Receiver<StreamEvent>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
'life4: 'async_trait,
Streaming counterpart of
LlmClient::complete_structured. Defaults to
LlmClient::complete_streaming, ignoring the directive.Source§fn model_generation_concurrency(&self) -> ModelGenerationConcurrency
fn model_generation_concurrency(&self) -> ModelGenerationConcurrency
Report the client’s explicitly supported active-generation capacity. Read more
Source§fn bind_model_generation_admission(
&self,
_admission: ModelGenerationAdmission,
_preadmitted: Option<Arc<ModelGenerationPermit>>,
) -> Option<Arc<dyn LlmClient>>
fn bind_model_generation_admission( &self, _admission: ModelGenerationAdmission, _preadmitted: Option<Arc<ModelGenerationPermit>>, ) -> Option<Arc<dyn LlmClient>>
Rebind a governed model facade to an invocation-owned generation gate. Read more
Source§fn model_generation_is_managed(&self) -> bool
fn model_generation_is_managed(&self) -> bool
Whether this client already applies the model-generation admission
contract around every provider call. Built-in run-bound clients use
this marker so structured tools do not acquire the same permit twice.
Source§fn take_model_generation_queue_wait(&self) -> Duration
fn take_model_generation_queue_wait(&self) -> Duration
Take queue wait accumulated by a managed client since the previous
observation. Unmanaged clients report zero.
Auto Trait Implementations§
impl !RefUnwindSafe for ZhipuClient
impl !UnwindSafe for ZhipuClient
impl Freeze for ZhipuClient
impl Send for ZhipuClient
impl Sync for ZhipuClient
impl Unpin for ZhipuClient
impl UnsafeUnpin for ZhipuClient
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
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
Source§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
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> ⓘ
Converts
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> ⓘ
Converts
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