gigachat-rust

Crates.iogigachat-rust
lib.rsgigachat-rust
version0.1.0-alpha.0
created_at2025-09-14 14:36:38.646654+00
updated_at2025-09-14 14:36:38.646654+00
descriptionUnofficial Rust SDK for Gigachat API
homepage
repository
max_upload_size
id1838850
size82,498
Patsakula Nikita (npatsakula)

documentation

README

GigaChat Rust SDK

Crates.io Documentation License

Rust SDK для работы с GigaChat API от Сбера - доступ к русскоязычным LLM.

Возможности

  • Поддержка Sber API:
    • Генерация текста.
      • Синхронная.
      • Потоковая.
    • Генерация эмбеддингов.
    • Детекция LLM-сгенерированного текста.
    • Пакетная обработка.
    • Обработка медиа.
    • Поддержка функций.
  • Конфигурация клиента:
    • Автоматическое использование сертификатов мин.цифры.
    • Возможности для конфигурации корпоративного прокси-сервера.
    • OAuth авторизация с автоматической ротацией токенов.
  • Средства интроспекции:
    • Поддержка сквозной трассировки при помощи tracing.
    • Поддержка перехвата HTTP запросов.

Getting started

Добавьте в ваш Cargo.toml:

[dependencies]
gigachat-rust = "0.1.0"
tokio = { version = "1", features = ["full"] }

Быстрый старт

Аутентификация

Для использования GigaChat API вам необходимо получить токен аутентификации от Сбера. Установите его как переменную окружения:

export GIGACHAT_TOKEN="ваш-токен"

Примеры использования

Вместо встраивания примеров кода в README, мы предоставляем подробные рабочие примеры в директории examples:

Пример Описание Файл
Генерация текста Демонстрирует генерацию текста с помощью GigaChat generate.rs
Текстовые эмбеддинги Пример создания векторных представлений текста embeddings.rs

Конфигурация

Опции Client Builder

GigaChatClientBuilder позволяет настраивать клиент:

use gigachat_rust::client::GigaChatClientBuilder;
use reqwest::Proxy;

let client = GigaChatClientBuilder::new(token)
    // Настройка URL аутентификации при необходимости
    // .auth_url("https://ваш-auth-url.com")
    // Настройка базового URL при необходимости
    // .base_url("https://ваш-base-url.com")
    // Настройка прокси при необходимости
    // .proxy(Proxy::http("http://proxy:8080").unwrap())
    // Добавление заголовков по умолчанию
    // .default_header("X-Custom-Header", "custom-value")
    .build()
    .await?;

Обработка ошибок

Все вызовы API возвращают тип Result, что делает обработку ошибок прямолинейной:

use anyhow::Result;

async fn example() -> Result<()> {
    let token = std::env::var("GIGACHAT_TOKEN")?;
    let client = GigaChatClientBuilder::new(token).build().await?;

    let response = match client
        .generate()
        .messages(vec![Message::user("Привет, мир!")])
        .execute()
        .await
        .context("Failed to generate response")?;

    println!("Успех: {response:?}");

    Ok(())
}

Типичные ошибки:

  • Сетевые ошибки (проблемы с подключением, таймауты)
  • Ошибки аутентификации (недействительные токены)
  • Ошибки API (ограничение скорости, недостаточно прав)
  • Ошибки парсинга (неожиданные форматы ответов)

Лицензия

Этот проект лицензирован по лицензии MIT - смотрите файл LICENSE для подробностей.

Commit count: 0

cargo fmt