Cohere + .NET лого
Cohere + .NET лого

TL;DR: за 10 минут подключаем Cohere к .NET. Покажу два пути:

  1. прямой вызов Chat API V1/V2

  2. работа через унифицированный интерфейс 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