2 stable releases

Uses new Rust 2024

new 1.1.0 Mar 29, 2025
1.0.0 Mar 27, 2025

#10 in #grpc-api

43 downloads per month

MIT license

23KB
128 lines

GigaChat API gRPC bindings

Usage

use gigachat::giga::{chat_service_client::ChatServiceClient, *};
use gigachat::auth::{Scope, TokenInterceptor};
use tonic::transport::{Channel, ClientTlsConfig};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let tls = ClientTlsConfig::new().with_native_roots();
    let channel = Channel::from_static("https://gigachat.devices.sberbank.ru").tls_config(tls)?.connect_lazy();
    let token = std::env::var("TOKEN")?;
    let mut client = ChatServiceClient::with_interceptor(channel, TokenInterceptor::new(token, Scope::Pers).await?);
    let messages = vec![Message{ role: "user".into(), content: "Привет! Расскажи анекдот.".into(), ..Default::default() }];
    let ChatResponse { alternatives, .. } = client.chat(ChatRequest{ 
        model: "GigaChat".into(),
        messages, 
        ..Default::default() 
    }).await?.into_inner();
    for a in alternatives {
        if let Some(m) = a.message {
            println!("{}", m.content);
        }
    }
    Ok(())
}

Dependencies

~17–29MB
~515K SLoC