Rate this post

Сьогодні ми зануримося у щось абсолютно нове та дуже захоплююче для всіх .NET-розробників — це Microsoft Agent Framework. Цей попередній реліз піднімає інтеграцію штучного інтелекту та .NET на абсолютно новий рівень.

У цьому посібнику ми створимо перекладач, який переводитиме англійський текст на французьку та іспанську, перевірятиме якість перекладів і формуватиме підсумковий звіт — все це за допомогою декількох ІІ-агентів, що працюють спільно.

Що таке агенти

Агент — це, по суті, ІІ-робітник, який може думати, приймати рішення та діяти, щоб досягти мети. Уявіть його як цифрового колегу — у нього є конкретне завдання, власна «особистість», і він може використовувати інструменти або API за потреби.

Згідно з Microsoft, агент — це не просто система запит–відповідь. Він може:

  • розмірковувати та планувати,

  • викликати API,

  • користуватися пам’яттю,

  • співпрацювати з іншими агентами.

Це означає, що агенти можуть координувати складні процеси та виконувати завдання, які зазвичай потребують багатьох окремих систем.

Розуміння робочих процесів

Робочий процес (workflow) визначає, як агенти взаємодіють один з одним та працюють спільно для виконання завдання. Його можна уявити як блок-схему — спочатку переклад, потім перевірка, а потім підсумок.

Робочі процеси можуть виконуватися послідовно або паралельно, залежно від сценарію. Вони забезпечують структуру та контроль, перетворюючи випадкові відповіді ІІ у надійні, відтворювані процеси.

Коротко:

  • Агенти приносять інтелект — вони розуміють контекст, розмірковують і генерують результат.

  • Робочі процеси приносять структуру — вони визначають порядок, залежності та розгалуження.

Коли ви об’єднуєте їх, отримуєте команду взаємодіючих ІІ-агентів, здатних досягати значно більшого, ніж окремі виклики моделі. Наприклад, один агент може перекладати текст, інший — перевіряти його, а третій — підводити підсумки. Все це координується визначеним вами робочим процесом.

Це схоже на те, як великі мовні моделі перетворюються на добре організовану програмну систему, а не просто на чат-бота.

Знайомство з Microsoft Agent Framework

Тепер поговоримо про зірку сьогоднішнього відео — Microsoft Agent Framework.

Це новий SDK з відкритим кодом від Microsoft, поки що в попередній версії, який об’єднує агентів, робочі процеси, інструменти та пам’ять в єдину платформу для розробників .NET та Python.

Він базується на ідеях Semantic Kernel та Autogen, але був перероблений, щоб зробити створення мультиагентних систем простим та масштабованим.

За допомогою цього фреймворку ви можете:

  • легко створювати агентів,

  • з’єднувати їх через типобезпечні робочі процеси,

  • інтегрувати Azure OpenAI або локальні моделі,

  • виконувати кроки паралельно або з участю людини (human checkpoints).

Підготовка проекту

Тепер ми створимо послідовний робочий процес перекладу за допомогою чотирьох агентів:

  1. French Translator Agent — переклад англійського на французьку;

  2. Spanish Translator Agent — переклад англійського на іспанську;

  3. Quality Reviewer Agent — перевірка обох перекладів на точність та тон;

  4. Summary Agent — об’єднує результати в підсумковий звіт.

Це простий приклад, але він чітко демонструє, як кілька агентів можуть співпрацювати.

Я вже створив консольний додаток .NET 9. Спочатку очищу файл Program.cs.

Встановлення необхідних пакетів

Далі встановимо пакети Microsoft Agent Framework.

Відкрийте NuGet Package Manager та знайдіть наступні бібліотеки:

  1. Microsoft.Agents.AI — встановіть цей пакет.

  2. Microsoft.Agents.AI.Workflows — допомагає будувати та зв’язувати агентів через робочі процеси.

  3. Microsoft.Extensions.AI.OpenAI — дозволяє інтегрувати моделі OpenAI або розміщені на GitHub.

Після встановлення всі вони з’являться у розділі Dependencies вашого проекту. Тепер ми готові реалізовувати агентів і робочий процес.

Додавання клієнта чату

Клієнт чату дозволяє агентам взаємодіяти з моделлю ІІ.

У нашому випадку використовується модель GitHub — GPT-4.0 Mini, легка, але потужна, ідеально підходить для демонстрацій. Щоб отримати доступ, потрібен GitHub API key.

У попередньому відео я показував, як створити такі ключі — обов’язково перегляньте, якщо ще не зробили цього.

Цей клієнт чату з’єднує наше додаток .NET з моделлю OpenAI на GitHub, щоб ми могли створювати агентів поверх неї.

Створення French Translator Agent

Наш перший агент — French Translator.

Він використовує клієнт чату, створений раніше, і виконує просте завдання — приймає англійський текст та перекладає його на французьку.

Створюємо екземпляр агента через клас ChatClientAgent і називаємо його French Agent.

У параметрах вказуємо:

  • Name = “French Agent”

  • Instructions = “Перекладай будь-який наданий текст французькою мовою, зберігаючи природність і точність.”

Готово — перший агент налаштований.

Створення Spanish Translator Agent

Щоб не писати все заново, скопіюйте код French Agent і внесіть кілька змін:

  • Перейменуйте змінну в SpanishAgent;

  • Встановіть ім’я “Spanish Agent”;

  • Змініть інструкції: “Ти — перекладач, який перекладає текст іспанською мовою.”

Тепер у нас є два агенти:

  • один для французької,

  • інший для іспанської.

Створення Quality Reviewer Agent

Далі копіюємо код Spanish Agent і адаптуємо його для Quality Reviewer Agent.

Перейменовуємо змінну в QualityReviewerAgent та встановлюємо ім’я “Quality Reviewer Agent”.

Щоб зробити код чистішим, створюємо окрему рядкову змінну з інструкціями:
string qualityReviewerAgentInstructions = "...";

Цей агент буде перевіряти переклади та надавати оцінку якості за простою рейтинговою системою.

Створення Summary Agent

Тепер створюємо Summary Agent аналогічно.

Копіюємо код Quality Reviewer Agent і вносимо зміни:

  • Перейменовуємо змінну в SummaryAgent;

  • Ім’я — “Summary Agent”.

Створюємо новий рядок summaryAgentInstructions та прописуємо призначення:

“Об’єднай усі рецензії перекладів в один підсумковий звіт.”

Ось і все — Summary Agent готовий.

Побудова робочого процесу

Тепер потрібно зв’язати всіх чотирьох агентів в один процес.

Створюємо новий AI-агент WorkflowAgent за допомогою класу AgentWorkflowBuilder і викликаємо метод BuildSequential.

Це означає, що агенти виконуватимуться по черзі:

  1. French Translator

  2. Spanish Translator

  3. Quality Reviewer

  4. Summary Agent

Наприкінці викликаємо .AsAgentAsync(), щоб об’єднати всю ланцюжок у одного агента, з яким можна взаємодіяти безпосередньо.

У фреймворку результат одного агента автоматично передається наступному — створюється єдиний конвеєр взаємодії.

Запуск робочого процесу

Тепер додамо введення тексту від користувача для тесту.

Просимо користувача ввести англійське речення і передаємо його агенту через workflowAgent.Run(userInput).

Текст пройде весь конвеєр:

  1. French Translator

  2. Spanish Translator

  3. Reviewer

  4. Summary Agent

Кожен етап обробляє результат і передає його далі.

Для наочного виводу:

  • ім’я агента виводимо жовтим,

  • результат роботи — зеленим.

Запускаємо додаток.

У консолі з’явиться запит на введення. Введіть, наприклад, “Hello world” та натисніть Enter.

Ви побачите:

  • French Agent переклав фразу французькою;

  • Spanish Agent — іспанською;

  • Quality Reviewer Agent перевірив обидва переклади на тон, граматику та точність;

  • Summary Agent створив підсумковий звіт про якість перекладу.

Імена агентів відображаються жовтим, а їх відповіді — зеленим, що допомагає наочно відстежити послідовність кроків.

Спробуйте ввести ще кілька речень — ви побачите, як кожен агент виконує свою роль крок за кроком, а весь процес працює автоматично.

Висновок

Ми щойно створили повноцінний багатомовний конвеєр перекладу з використанням Microsoft Agent Framework.

Ось що ми зробили:

  • Створили чотири агенти — French Translator, Spanish Translator, Quality Reviewer та Summary Agent;

  • Об’єднали їх у послідовний робочий процес;

  • Спостерігали, як вони спільно виконують завдання від перекладу до підсумкового звіту.

Кожен агент відповідав за свою частину роботи, а фреймворк координував всю роботу — від перекладу до перевірки та підсумку.

Цей приклад демонструє, як легко можна спроектувати структуровані, взаємодіючі ІІ-системи прямо в .NET.

Ви можете розширити цей робочий процес:

  • додати нові мови,

  • створити додаткові етапи перевірки,

  • інтегрувати зовнішні API для більш глибокого аналізу або покращеного перекладу.