Сьогодні ми детально розглянемо .NET AI Template від Microsoft, який був випущений у березні. Цей шаблон містить два типи проєктів — AI Chat Web App та Local MCP Server Console App.
У цьому матеріалі ми зосередимося на AI Chat Web App: встановимо шаблон, подивимось, що він містить, створимо проєкт у Visual Studio та запустимо його, щоб побачити, як усе працює.
Встановлення .NET AI Template
Почнемо з установки шаблону AI.
Відкрийте термінал і виконайте команду:
dotnet new install Microsoft.Extensions.AI.Templates
Ця команда встановлює шаблони локально. Після завершення встановлення ви побачите два нові шаблони:
-
AI Chat Web App
-
Local MCP Server Console App
Використовувати їх можна у Visual Studio, Visual Studio Code (з установленим C# Dev Kit) або напряму через командний рядок, виконавши:
dotnet new aichatweb
або
dotnet new mcpserver
щоб створити проєкт безпосередньо у вашій робочій директорії.
Для сьогоднішньої демонстрації ми скористаємося AI Chat Web App у Visual Studio.
Створення проєкту у Visual Studio
Перейдімо до Visual Studio.
На екрані Create a new project (створення нового проєкту) відкрийте випадаюче меню All project types. Тепер ви побачите нову категорію — AI.
Виберіть її, і ви знайдете два шаблони:
-
AI Chat Web App
-
Local MCP Server Console App
Оберіть AI Chat Web App і натисніть Next.
Задайте ім’я проєкту, наприклад ChatApp1
. Вкажіть розташування та натисніть Create.
Після цього з’явиться можливість обрати постачальника AI-моделі та векторне сховище.
Доступні постачальники AI-сервісів:
-
Azure OpenAI
-
GitHub Models
-
Alma
-
OpenAI Platform
У цьому прикладі ми використаємо GitHub Models із локальним векторним сховищем, адже це найпростіший спосіб швидко почати.
Натисніть Create, і Visual Studio автоматично згенерує проєкт, включаючи інтерфейс на Blazor, папку Data та налаштування сервісів.
Налаштування GitHub токена
Далі потрібно додати GitHub токен.
У файлі README
вашого проєкту вказана інструкція:
"GitHubModelsToken": "your-token"
Цей токен потрібно вставити у файл secrets.json
вашого проєкту.
Відкрийте secrets.json
і додайте свій токен, дотримуючись того ж формату JSON, що наведено у прикладі.
Огляд структури проєкту
Тепер, коли токен додано, подивімося, що саме згенерувалося.
-
Папка Pages містить сторінки Blazor, наприклад
Chat.razor
— головний інтерфейс чату. -
У папці Services зберігається логіка, що керує процесом спілкування.
-
У папці
wwwroot/data
є приклади PDF-файлів, які використовуються для завантаження даних і семантичного пошуку.
Під час запуску застосунок читає ці PDF-файли, створює ембеддинги (векторні представлення) і дозволяє чату відповідати на запитання на основі їхнього змісту.
Файл Program.cs
Відкрийте файл Program.cs
. У ньому автоматично налаштовані AI-сервіси та векторне сховище.
-
Модель LLM: GPT-4.0 Mini
-
Для ембеддингів використовується Text-embedding-3-small
-
Для зберігання — SQLite
Усе це генерується автоматично — нічого не потрібно налаштовувати вручну.
Як працює завантаження даних
У проєкті є кілька основних класів, що відповідають за обробку даних.
Клас DataIngestor
Цей клас читає та обробляє PDF-файли з папки wwwroot/data
.
Він витягує текст, створює ембеддинги за допомогою вибраної моделі та зберігає їх у векторній базі даних SQLite.
Таким чином ваші документи перетворюються на пошукові векторні дані, які штучний інтелект може розуміти та використовувати пізніше.
Клас SemanticSearch
Під час роботи чату цей клас перетворює запит користувача на ембеддинг, порівнює його з векторами документів і отримує найрелевантніші фрагменти інформації.
Потім результати передаються мовній моделі, яка формує відповідь природною мовою, часто з посиланнями на джерело.
Разом ці класи дають змогу застосунку відповідати, спираючись на зміст документів, а не генерувати випадкові відповіді.
Запуск застосунку
Запустімо застосунок і подивімося, як він працює.
Після запуску програма автоматично обробить приклади PDF-файлів у wwwroot/data
та створить ембеддинги.
У браузері відкриється чистий інтерфейс чату на Blazor.
Тепер можна ставити запитання, наприклад:
«Що входить до набору для виживання?»
Застосунок:
-
Обробить запит,
-
Виконає семантичний пошук у базі векторів,
-
Згенерує відповідь із зазначенням джерела (файл і сторінка).
Усе це відбувається автоматично — без додаткових налаштувань.
Використання власних даних
Тепер розглянемо, як змусити чат працювати з вашими документами.
Відкрийте папку wwwroot/data
— там є два PDF-файли за замовчуванням.
Щоб використати власний контент, просто скопіюйте свій PDF у цю папку.
Наприклад, можна взяти власну статтю про пагінацію в EF Core, зберегти її як PDF і додати до цієї папки.
Після цього перезапустіть застосунок.
Клас DataIngestor
автоматично знайде новий файл, зчитає його текст, створить ембеддинги та збереже їх у базі даних.
Тепер, якщо запитати:
«Який метод пагінації підходить для великих наборів даних?»
Чат відповість, використовуючи зміст вашої статті, пояснивши, що Keyset Pagination ефективніший за Offset Pagination для великих таблиць, оскільки не пропускає рядки і працює швидше.
Під відповіддю також буде посилання на файл і сторінку, звідки взято інформацію.
Розширення можливостей чат-бота
Тепер, коли застосунок працює, розглянемо, як можна додати нові функції.
Проєкт побудований на Microsoft.Extensions.AI, що дозволяє легко підключати власні C# функції, які чат-бот може викликати.
Це означає, що ви можете дати своєму чат-боту додаткові можливості — отримувати дані з API, виконувати дії або обробляти спеціальні запити.
Приклад: функція GetWeather
У файлі Chat.razor
можна створити нову C# функцію, наприклад:
string GetWeather(string city) { // Повертає приклад прогнозу погоди return city switch { "London" => "Drizzle", "Paris" => "Sunny", _ => "Cloudy" }; }
Потім зареєструйте її в методі OnInitialized
, оновивши список інструментів у chat options
.
Тепер чат-бот зможе викликати цю функцію при відповідному запиті.
Якщо запитати:
«Яка погода в Лондоні?»
Чат-бот викличе GetWeather
і відповість:
«Погода в Лондоні — мряка.»
Таким чином, чат-бот може напряму викликати ваш код на C#.
Далі ви можете підключати реальні API, бази даних або навіть IoT-пристрої.
Висновок
Отже, це був повний огляд .NET AI Template у дії.
Цей шаблон — потужна відправна точка, якщо ви плануєте створити:
-
AI-асистента
-
Бота для документації
-
Або будь-який AI-застосунок на .NET