Rust SDK для работы с GigaChat API от Сбера - доступ к русскоязычным LLM.
- Поддержка Sber API:
- Генерация текста.
- Синхронная.
- Потоковая.
- Генерация эмбеддингов.
- Детекция LLM-сгенерированного текста.
- Пакетная обработка.
- Обработка медиа.
- Поддержка функций.
- Генерация текста.
- Конфигурация клиента:
- Автоматическое использование сертификатов мин.цифры.
- Возможности для конфигурации корпоративного прокси-сервера.
- OAuth авторизация с автоматической ротацией токенов.
- Средства интроспекции:
- Поддержка сквозной трассировки при помощи
tracing. - Поддержка перехвата HTTP запросов.
- Поддержка сквозной трассировки при помощи
Добавьте в ваш Cargo.toml:
[dependencies]
gigachat-rust = "0.1.0"
tokio = { version = "1", features = ["full"] }Для использования GigaChat API вам необходимо получить токен аутентификации от Сбера. Установите его как переменную окружения:
export GIGACHAT_TOKEN="TOKEN"Вместо встраивания примеров кода в README, мы предоставляем подробные рабочие примеры в директории examples:
| Пример | Описание | Файл |
|---|---|---|
| Генерация текста | Демонстрирует генерацию текста с помощью GigaChat | generate.rs |
| Текстовые эмбеддинги | Пример создания векторных представлений текста | embeddings.rs |
| Проверка текста | Пример проверки текста на авторство (ИИ или человек) | check.rs |
| Работа с функциями | Демонстрирует использование функций в GigaChat | function.rs |
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;
use gigachat_rust::{client::GigaChatClientBuilder, generation::{Model, structures::Message}};
async fn example() -> Result<()> {
let token = std::env::var("GIGACHAT_TOKEN")?;
let client = GigaChatClientBuilder::new(token).build().await?;
let response = client
.generate()
.with_model(Model::GigaChat2Lite)
.with_messages(vec![Message::user("Расскажи про Бесконечный Тупик Галковского.")])
.execute()
.await?;
println!("Success: {response:?}");
Ok(())
}