pub struct SharedClient { /* private fields */ }
Expand description
A thread-safe, cheaply clonable client for interacting with the Generative Language API.
This client wraps a standard Client
in an Arc
, making it easy to share
across threads without lifetime issues. Unlike the regular Client
, which
provides a borrowed reference (&'c self
), methods on SharedClient
return models with a static lifetime ('static
), allowing them to be
moved and stored independently of the client.
Use SharedClient
when you need to pass the client to different threads,
store it in a global state, or when the client is intended to live for the
duration of the application.
§Example
use google_ai_rs::{Client, SharedClient};
let client = Client::new("your-api-key").await?;
let shared_client: SharedClient = client.into_shared();
let model = shared_client.generative_model("models/gemini-pro");
// The model can now be used in a different thread or stored.
drop(shared_client);
// You can still use model
model.generate_content("Hello, AI").await?;
Implementations§
Sourcepub fn generative_model(&self, name: &str) -> GenerativeModel<'static>
pub fn generative_model(&self, name: &str) -> GenerativeModel<'static>
Creates a new generative model interface
Sourcepub fn typed_model<T: AsSchema>(&self, name: &str) -> TypedModel<'static, T>
pub fn typed_model<T: AsSchema>(&self, name: &str) -> TypedModel<'static, T>
Creates a new typed generative model interface
Methods from Deref<Target = Client>§
Sourcepub async fn update_auth(&self, new_auth: impl Into<Auth> + Send)
pub async fn update_auth(&self, new_auth: impl Into<Auth> + Send)
Updates authentication credentials atomically
Subsequent requests will use the new credentials immediately. This operation is thread-safe.
§Panics
May panic if auth cannot parsed
Sourcepub async fn update_auth_fallibly(
&self,
new_auth: impl Into<Auth> + Send,
) -> Result<(), Error>
pub async fn update_auth_fallibly( &self, new_auth: impl Into<Auth> + Send, ) -> Result<(), Error>
Fallible Self::update_auth
.
Sourcepub async fn create_cached_content(
&self,
content: CachedContent,
) -> Result<CachedContent, Error>
pub async fn create_cached_content( &self, content: CachedContent, ) -> Result<CachedContent, Error>
Creates a new cached content entry
§Arguments
content
- Content to cache without name (server-generated)
§Errors
Returns Error::InvalidArgument
if content contains a name
Sourcepub async fn get_cached_content(
&self,
name: &str,
) -> Result<CachedContent, Error>
pub async fn get_cached_content( &self, name: &str, ) -> Result<CachedContent, Error>
Retrieves the CachedContent
with the given name.
Sourcepub async fn delete_cached_content(&self, name: &str) -> Result<(), Error>
pub async fn delete_cached_content(&self, name: &str) -> Result<(), Error>
Deletes the CachedContent
with the given name.
Sourcepub async fn update_cached_content(
&self,
cc: &CachedContent,
) -> Result<CachedContent, Error>
pub async fn update_cached_content( &self, cc: &CachedContent, ) -> Result<CachedContent, Error>
Modifies the CachedContent
.
It returns the modified CachedContent.
The argument CachedContent must have its name field and fields to update populated.
Sourcepub fn list_cached_contents(&self) -> CachedContentIterator<'_>
pub fn list_cached_contents(&self) -> CachedContentIterator<'_>
Returns an async iterator over cached content entries
Automatically handles pagination through server-side results.
Sourcepub async fn get_model(&self, name: &str) -> Result<Model, Error>
pub async fn get_model(&self, name: &str) -> Result<Model, Error>
Gets information about a specific Model
such as its version number, token
limits, etc
Sourcepub async fn get_tuned_model(
&self,
resource_name: &str,
) -> Result<TunedModel, Error>
pub async fn get_tuned_model( &self, resource_name: &str, ) -> Result<TunedModel, Error>
Gets information about a specific TunedModel
.
Sourcepub async fn list_models(&self) -> ModelsListIterator<'_>
pub async fn list_models(&self) -> ModelsListIterator<'_>
Returns an async iterator over models list results
Automatically handles pagination through server-side results.
Sourcepub async fn list_tuned_models(&self) -> TunedModelsListIterator<'_>
pub async fn list_tuned_models(&self) -> TunedModelsListIterator<'_>
Returns an async iterator over tuned models list results
Automatically handles pagination through server-side results.
Sourcepub async fn update_tuned_model(
&self,
m: &TunedModel,
) -> Result<TunedModel, Error>
pub async fn update_tuned_model( &self, m: &TunedModel, ) -> Result<TunedModel, Error>
Updates a tuned model.
Sourcepub async fn delete_tuned_model(&self, name: &str) -> Result<(), Error>
pub async fn delete_tuned_model(&self, name: &str) -> Result<(), Error>
Deletes the TunedModel
with the given name.
Sourcepub fn embedding_model<'c>(&'c self, name: &str) -> Model<'c>
pub fn embedding_model<'c>(&'c self, name: &str) -> Model<'c>
Creates a new embedding model interface
Shorthand for EmbeddingModel::new()
Sourcepub fn generative_model<'c>(&'c self, name: &str) -> GenerativeModel<'c>
pub fn generative_model<'c>(&'c self, name: &str) -> GenerativeModel<'c>
Creates a new generative model interface
Shorthand for GenerativeModel::new()
Sourcepub fn typed_model<'c, T: AsSchema>(&'c self, name: &str) -> TypedModel<'c, T>
pub fn typed_model<'c, T: AsSchema>(&'c self, name: &str) -> TypedModel<'c, T>
Creates a new typed generative model interface
Shorthand for TypedModel::new()
Trait Implementations§
Source§fn clone(&self) -> SharedClient
fn clone(&self) -> SharedClient
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreAuto Trait Implementations§
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,
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> 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_veecore::Request