GigaChat.Net.AspNetCore 1.1.0

dotnet add package GigaChat.Net.AspNetCore --version 1.1.0
                    
NuGet\Install-Package GigaChat.Net.AspNetCore -Version 1.1.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="GigaChat.Net.AspNetCore" Version="1.1.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="GigaChat.Net.AspNetCore" Version="1.1.0" />
                    
Directory.Packages.props
<PackageReference Include="GigaChat.Net.AspNetCore" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add GigaChat.Net.AspNetCore --version 1.1.0
                    
#r "nuget: GigaChat.Net.AspNetCore, 1.1.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package GigaChat.Net.AspNetCore@1.1.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=GigaChat.Net.AspNetCore&version=1.1.0
                    
Install as a Cake Addin
#tool nuget:?package=GigaChat.Net.AspNetCore&version=1.1.0
                    
Install as a Cake Tool

GigaChat.Net.AspNetCore

GigaChat.Net.AspNetCore - ASP.NET Core расширения для GigaChat.Net. Пакет добавляет DI-регистрацию, request context middleware и механизм передачи per-request/per-call metadata в исходящие вызовы GigaChat.

Статус проекта

Этот репозиторий ведется ИИ под контролем владельца проекта. Перенос SDK с Python библиотеки gigachat на .NET также был выполнен ИИ.

Если при использовании SDK или ASP.NET Core интеграции вы обнаружите баг, несовместимость или неточность документации, пожалуйста, создайте GitHub Issue:

https://github.com/h0tnanny/GigaChat-Net/issues

Такие обращения будут приняты в работу и использованы для улучшения SDK.

Установка

dotnet add package GigaChat.Net.AspNetCore

Пакет зависит от GigaChat.Net и поддерживает .NET 6.0, .NET 7.0, .NET 8.0, .NET 9.0 и .NET 10.0.

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

using GigaChat.Net;
using GigaChat.Net.AspNetCore;

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddGigaChat(builder.Configuration);

var app = builder.Build();

app.UseGigaChatContext();

app.MapPost("/chat", async (IGigaChatClient client, ChatRequest request, CancellationToken cancellationToken) =>
{
    var response = await client.ChatAsync(request.Message, cancellationToken);
    return Results.Ok(response.Choices[0].Message.Content);
});

app.Run();

public sealed record ChatRequest(string Message);

appsettings.json:

{
  "GigaChat": {
    "Credentials": "<your_authorization_key>",
    "Scope": "GIGACHAT_API_PERS",
    "Model": "GigaChat",
    "AllowModelOverrideFromHeader": true
  }
}

Request context

UseGigaChatContext() читает trusted headers и сохраняет значения в текущем GigaChatContext. Если данные приходят не из headers, заполните контекст самостоятельно:

builder.Services.Configure<GigaChatRequestContextOptions>(options =>
{
    options.ConfigureContext = (httpContext, context) =>
    {
        context.SessionId = httpContext.Request.Query["sessionId"].ToString();
        context.ClientId = httpContext.User.FindFirst("client_id")?.Value;
    };
});

Для конкретного вызова можно передать GigaChatRequestHeaders. Явно переданные значения имеют приоритет, отсутствующие значения берутся из middleware context:

await client.ChatAsync(
    "Привет!",
    new GigaChatRequestHeaders
    {
        RequestId = "request-for-this-call",
        Model = "GigaChat-Pro"
    },
    cancellationToken);

Модель можно менять через входящий header X-GigaChat-Model, если в настройках включено AllowModelOverrideFromHeader.

Собственный HttpClient

По умолчанию пользователю не нужно вручную настраивать HttpClient. Если нужен корпоративный handler, retry policy, proxy или observability pipeline, передайте factory:

builder.Services.AddHttpClient("GigaChat", client =>
{
    client.Timeout = TimeSpan.FromSeconds(60);
});

builder.Services.AddGigaChat(
    builder.Configuration,
    provider => provider.GetRequiredService<IHttpClientFactory>().CreateClient("GigaChat"));

Semantic Kernel в ASP.NET Core

Если ASP.NET Core приложение использует Semantic Kernel, зарегистрируйте Kernel поверх уже настроенного IGigaChatClient. Для этого добавьте пакет GigaChat.Net.SemanticKernel. Если приложение напрямую использует типы Kernel, IChatCompletionService или ChatHistory, добавьте явную ссылку на Microsoft.SemanticKernel, чтобы IDE и build tooling видели эти типы без опоры на транзитивные зависимости.

dotnet add package GigaChat.Net.SemanticKernel
dotnet add package Microsoft.SemanticKernel
using GigaChat.Net;
using GigaChat.Net.AspNetCore;
using GigaChat.Net.SemanticKernel;
using Microsoft.Extensions.Options;
using Microsoft.SemanticKernel.ChatCompletion;

builder.Services.AddGigaChat(builder.Configuration);
builder.Services.AddGigaChatSemanticKernel(options =>
{
    options.ModelIdFactory = provider => provider.GetRequiredService<IOptions<GigaChatOptions>>().Value.Model;
    options.EndpointFactory = provider => provider.GetRequiredService<IOptions<GigaChatOptions>>().Value.BaseUrl;
});

app.MapPost("/semantic-kernel/chat", async (
    ChatRequest request,
    IChatCompletionService chat,
    CancellationToken cancellationToken) =>
{
    ChatHistory history =
    [
        new ChatMessageContent(AuthorRole.System, "Ты ASP.NET Core ассистент."),
        new ChatMessageContent(AuthorRole.User, request.Message)
    ];

    var response = await chat.GetChatMessageContentsAsync(
        history,
        new GigaChatPromptExecutionSettings
        {
            Temperature = 0.2,
            MaxTokens = 700
        },
        cancellationToken: cancellationToken);

    return Results.Ok(response[0].Content);
});

Расширенный пример с endpoints для chat, streaming, structured output, Semantic Kernel plugins/tools и ChatCompletionAgent находится в examples/GigaChat.AspNetCore.Example.

Документация

Полная документация и пример приложения находятся в репозитории:

https://github.com/h0tnanny/GigaChat-Net

Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 is compatible.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.1.0 168 6/18/2026
1.0.2 122 6/2/2026
1.0.2-preview.33.1 59 9/19/2026
1.0.2-preview.32.1 58 9/19/2026
1.0.2-preview.31.1 79 6/19/2026
1.0.2-preview.30.1 74 6/19/2026
1.0.2-preview.29.1 70 6/19/2026
1.0.2-preview.28.1 75 6/19/2026
1.0.2-preview.27.1 74 6/19/2026
1.0.2-preview.26.1 77 6/19/2026
1.0.2-preview.25.1 81 6/19/2026
1.0.2-preview.24.1 82 6/19/2026
1.0.2-preview.23.1 73 6/18/2026
1.0.2-preview.21.1 66 6/2/2026
1.0.1 116 6/2/2026
1.0.1-preview.20.1 69 6/2/2026
1.0.1-preview.19.1 71 6/2/2026
0.1.0-preview.semantic-kern... 70 6/2/2026
0.1.0-preview.semantic-kern... 69 5/31/2026
0.1.0-preview.semantic-kern... 70 5/31/2026
Loading failed

Add explicit package targets for every .NET version from .NET 6 through .NET 10.