Авторизация с кэшированием токена, чат с потоковой генерацией и вызовом функций,
эмбеддинги, подсчёт токенов — с готовой регистрацией через AddGigaChat().
dotnet add package GigaChatLib
Библиотека закрывает полный жизненный цикл работы с API — от авторизации до потоковой генерации ответа.
Access-токен кэшируется и потокобезопасно обновляется в фоне (single-flight), с автоматическим повтором при 401.
StreamCompletionAsync возвращает IAsyncEnumerable<ChatCompletionChunk> — ответ приходит по мере генерации.
Полная поддержка function calling: описание функций, режимы вызова, разбор function_call в ответе.
Векторные представления текста и точный подсчёт токенов перед отправкой запроса — для контроля стоимости.
Один вызов AddGigaChat() — и все клиенты, обработчики токена и HTTP-стек настроены правильно.
Любой не-2xx ответ — это GigaChatApiException с StatusCode и ErrorCode, без голых HttpRequestException.
Ключ авторизации (Authorization Key, Base64) выдаётся в личном кабинете GigaChat API.
using GigaChatLib.Clients;
using GigaChatLib.Dtos.Chat;
using GigaChatLib.Dtos.Chat.Messages;
using GigaChatLib.Enums;
using GigaChatLib.Extensions;
using Microsoft.Extensions.DependencyInjection;
var services = new ServiceCollection();
services.AddGigaChat(options =>
{
options.AuthorizationKey = "<ваш Authorization Key>";
options.Scope = ApiScope.GIGACHAT_API_PERS;
});
await using var provider = services.BuildServiceProvider();
var giga = provider.GetRequiredService<IGigaChatClient>();
var response = await giga.Chat.CreateCompletionAsync(new ChatCompletionRequest
{
Model = "GigaChat",
Messages = { new UserMessage { Content = "Привет! Расскажи о себе в двух словах." } }
});
Console.WriteLine(response.Choices[0].Message.Content);
Каждый клиент доступен как свойство на IGigaChatClient.
| Клиент | Метод | Эндпоинт |
|---|---|---|
| giga.Chat | CreateCompletionAsync, StreamCompletionAsync | POST /chat/completions |
| giga.Models | GetModelsAsync | GET /models |
| giga.Files | GetFilesAsync, UploadFileAsync, DeleteFileAsync | /files |
| giga.Monitoring | GetBalanceAsync | GET /balance |
| giga.Embeddings | CreateEmbeddingsAsync | POST /embeddings |
| giga.Tokens | CountAsync | POST /tokens/count |