async-gigachat

Crates.ioasync-gigachat
lib.rsasync-gigachat
version0.2.0
sourcesrc
created_at2023-11-06 10:09:55.752293
updated_at2024-01-05 13:02:49.592814
descriptionAsync bindings for Gigachat API
homepagehttps://github.com/xsayler/async-gigachat
repositoryhttps://github.com/xsayler/async-gigachat
max_upload_size
id1026719
size73,828
Aleksandr Rassamagin (xsayler)

documentation

README

async-gigachat

Async Rust library for GigaChat

Overview

async-gigachat is an unofficial Rust library for GigaChat REST API.

Usage

The library reads Authorization token from the environment variable GIGACHAT_AUTH_TOKEN.

# On macOS/Linux
export GIGACHAT_AUTH_TOKEN='YTAxNj...'
# On Windows Powershell
$Env:GIGACHAT_AUTH_TOKEN='YTAxNj...'

Chat completion Example

use anyhow::Ok;
use async_gigachat::{
    chat::{ChatCompletionRequestBuilder, ChatMessageBuilder, Role, Chat},
    client::Client,
    config::GigaChatConfig,
};

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    let config = GigaChatConfig::default();

    let client: Client = Client::with_config(config);

    let question = ChatMessageBuilder::default()
    .role(Role::User)
    .content("Hey, how's it going?")
    .build()?;

    let request = ChatCompletionRequestBuilder::default()
        .messages(vec![question.clone()])
        .model("GigaChat:latest")
        .build()?;

    let response = Chat::new(client).completion(request).await?;

    println!("{}: {}", question.role, question.content);
    println!("{}: {}", response.choices.get(0).unwrap().message.role, response.choices.get(0).unwrap().message.content);

    Ok(())
}

License

This project is licensed under MIT license.

Commit count: 17

cargo fmt