Cohere в .NET за 10 минут: Microsoft.Extensions.AI + NuGet-пакет Cohere.Extensions.AI

TL;DR: за 10 минут подключаем Cohere к .NET. Покажу два пути:
прямой вызов Chat API V1/V2
работа через унифицированный интерфейс
Microsoft.Extensions.AI(IChatClient) — без привязки к конкретному SDK.
Немного вводной
Я экспериментирую с Microsoft.Extensions.AI, хочу поделиться опытом: написал небольшой адаптер для Cohere и выложил в NuGet. Возможно, кому-то это будет полезно, а мне интересно услышать обратную связь.
С появлением Microsoft.Extensions.AI стало проще подключать LLM к .NET-проектам: теперь у нас есть единые абстракции (IChatClient), DI и минимум vendor lock-in. Но Cohere из коробки туда не встроен, поэтому я сделал лёгкий адаптер и опубликовал его в NuGet. В статье покажу, как за 10 минут запустить чат с Cohere в .NET.
Что такое Cohere и зачем это .NET-разработчику
Cohere — провайдер LLM с упором на Enterprise: приватность данных, развёртывания «под ключ», акцент на прикладные задачи компаний (QA по документам, суммаризация, многоязычные ответы и т.п.). У Cohere есть Chat API, эмбеддинги и Rerank для улучшения поиска и RAG-пайплайнов.
Cohere развивает семейство моделей Command R / Command R+, ориентированных на длинный контекст и задачи RAG (retrieval-augmented generation). Это делает их полезными для поиска по документам, чат-ботов и аналитических систем
Почему это важно: вы можете интегрировать Cohere в .NET и при необходимости быстро переключаться на другого провайдера, если строите поверх Microsoft.Extensions.AI — набора унифицированных абстракций (IChatClient и др.).
Почему стоит смотреть на Microsoft.Extensions.AI
Microsoft.Extensions.AI даёт общий интерфейс (IChatClient) для разных LLM. Плюсы:
единая модель сообщений и вызовов (включая потоковый режим),
работать удобно через DI/Options/ILogger,
минимальный vendor lock-in — можно заменить провайдера без переписывания бизнес-кода.
Установка
dotnet add package Cohere.Extensions.AI
Получаем API-ключ в панели пользователя Cohere.
API-ключ передадим через переменную окружения:
# Windows PowerShell
$env:COHERE_API_KEY="your_api_key"
# macOS/Linux (bash/zsh)
export COHERE_API_KEY="your_api_key"
Вариант 1. Прямой вызов Cohere Chat API V2
using Cohere.Client;
using Cohere.Client.Models.V2;
var client = new CohereClient(Environment.GetEnvironmentVariable("COHERE_API_KEY")!);
var resp = await client.ChatV2Async(new ChatRequestV2 {
Model = "command-r-08-2024",
Messages = [ new() { Role = "user", Content = "Hello" } ]
});
Console.WriteLine(resp.Text);
Примечание: Cohere Chat API поддерживает роли, tool-use и пр. — детали в оф. доках.
Вариант 2. Через Microsoft.Extensions.AI (унифицированный IChatClient)
Если хотите писать прикладной код поверх общих абстракций, берём адаптер из пакета (CohereChatClient)
using Cohere.Extensions.AI;
using Microsoft.Extensions.AI;
using Microsoft.Extensions.DependencyInjection;
var services = new ServiceCollection();
services.AddCohereChatClient(null, opts =>
{
opts.ModelId = "command-r-plus-08-2024";
});
await using var provider = services.BuildServiceProvider();
var chat = provider.GetRequiredService<IChatClient>();
var messages = new[]
{
new ChatMessage(ChatRole.User, "Ping")
};
var response = await chat.GetResponseAsync(messages);
Console.WriteLine(response.Text);
Здесь ваш рабочий слой уже работает с IChatClient, и переключиться на другой провайдер проще простого. (Сама идея ME.AI — ровно про это.)

Библиотека предоставляет поддержку потоковых ответов через
IAsyncEnumerable(SSE). Это важно для UX: вы показываете текст «по мере генерации», а не ждёте целиком.
Что дальше
В планах: расширенные параметры (temperature, max tokens) и интеграция с OpenTelemetry. Если хотите поучаствовать — добро пожаловать с PR.
Итог
Для меня этот проект — эксперимент: хотелось попробовать объединить .NET и Cohere через новые абстракции от Microsoft. Буду рад, если кто-то попробует пакет, поставит звезду на GitHub или напишет, чего не хватает.
Ссылки
README и примеры кода пакета (те же сниппеты, что выше). GitHub
Cohere Chat API / Chat V2 — роли, messages, tool-use. Cohere Documentation
Microsoft.Extensions.AI (
IChatClient) — что это и зачем. Microsoft Learn