- AI агентите в C# комбинират LLM разсъждения с инструменти, контекст и памет, за да постигнат цели, вместо просто да отговарят на подкани.
- API-тата на OpenAI и Azure OpenAI Assistants предоставят асистенти, нишки, изпълнения, инструменти и търсене на файлове като основни примитиви за .NET агенти.
- Агентите, готови за корпоративна среда, изискват силно управление на състоянието, инструменти като C# функции, наблюдаемост, контрол на сигурността и дизайн, съобразен с разходите.
- Инструментите Microsoft.Extensions.AI, VectorData, Azure AI Foundry и VS Code рационализират разработването, внедряването и мащабирането на C# AI агенти.
Създаването на AI агенти с инструменти в C# вече не е футуристична мечта; това е много практичен начин за автоматизиране на работни процеси, анализ на данни и свързване на вашите .NET приложения с големи езикови модели (LLM).С правилната архитектура можете да преминете от обикновен чат клиент към агенти от производствен клас, които разсъждават, извикват API, оркестрират работни процеси и спазват корпоративни ограничения като сигурност, наблюдаемост и контрол на разходите.
Това ръководство ще ви преведе през това как съвременните концепции за AI агенти се съпоставят със C# стек, как се вписват Azure OpenAI и OpenAI Assistants API и как да включите всичко в надеждни .NET практики за софтуерно инженерство.Ще свържем тези идеи и с нововъзникващите рамки за агенти на Microsoft и инструментите за изкуствен интелект в Visual Studio Code, за да получите пълна представа за всичко - от локален прототип до мащабируемо внедряване в облак.
От чатботове до пълноценни AI агенти в C#
На високо ниво, AI агентът е система, която преследва цели, а не просто отговаря на единични подкани.Това означава, че агентът се нуждае от някаква комбинация от разсъждения, инструменти, осъзнаване на контекста и памет, за да може да реши какво да прави по-нататък, а не само какво да отговори в текущия ход.
На практика, на C#, можете да мислите за агент като за координационен слой върху LLM клиент плюс набор от инструменти, достъпни като .NET методи, API или външни услуги.Моделът допринася за разсъжденията и разбирането на езика, докато вашият C# код допринася за бизнес логиката, достъпа до данни, сигурността и интеграциите със съществуващите ви системи.
Съвременните агенти често разчитат на големи езикови модели за вземане на решения, алгоритми за търсене или логика на планиране, но те стават наистина полезни само когато са свързани с инструменти.Инструментите могат да включват заявки към база данни, HTTP API, вътрешни микросървиси, търсене на файлове или интерпретатор на код в пясъчник, където агентът може безопасно да изпълнява код за анализ на данни.
Осъзнаването на контекста е последният критичен елемент, който позволява на агента да използва история на чата, векторни хранилища, корпоративни данни или графи на знания като част от своите разсъждения.Този контекст може да бъде толкова прост, колкото кратък дневник на разговори, съхраняван в паметта, или толкова сложен, колкото състояние на разпределен работен процес, обхващащ множество агенти и хранилища на данни.
Основни градивни елементи на асистенти и агенти с изкуствен интелект
API-тата на OpenAI и Azure OpenAI Assistants ви предоставят много конкретен набор от примитиви за изграждане на агенти в C#.Вместо ръчно да променяте състоянията на машините, работите с добре дефинирани обекти, които съответстват на начина, по който мислят и работят агентите, базирани на LLM.
Асистентът представлява конфигурираната AI персона: кой модел използва, какви инструкции следва и какви инструменти може да извиква.В C# това се съпоставя с обект, който създавате с опции като име, системни инструкции и списък с дефиниции на инструменти, които описват какво може да извика моделът.
Нишката е разговорна сесия, която свързва потребител с асистент с течение на времето.Нишката съхранява подредения списък със съобщения, автоматично обработва отрязването на контекста, за да остане в рамките на ограниченията на токените, и действа като гръбнак на паметта на агента за това взаимодействие.
Съобщенията са конкретните части от съдържание, които се обменят между потребителя и асистента.В Assistants API съобщението може да съдържа обикновен текст, изображения или други файлове. В C# те се консумират като обекти в колекция, като се проверява текст, анотации или свързани идентификатори на файлове в зависимост от съдържанието.
Изпълнението е операцията, която стартира разсъжденията на асистента върху съдържанието на нишката.След като стартирате изпълнение, асистентът прилага конфигурацията му, прочита съобщенията, извиква инструменти, ако е необходимо, и след това добавя нови съобщения с резултатите си обратно към същата нишка.
Стъпките на изпълнение улавят подробната последователност от действия, които асистентът извършва по време на изпълнениеЧрез проверката им можете да видите кои инструменти са били извикани, какви аргументи са били предадени, кои съобщения са били генерирани и как агентът е достигнал до крайния си отговор. Това е изключително ценно за дебъгване, наблюдаемост и одит в корпоративни среди.
В допълнение към тези примитиви, асистентите могат да използват множество инструменти едновременно, за да изпълняват задачи.Типичните вградени инструменти включват интерпретатор на код, който може да изпълнява фрагменти в пясъчна среда, извикване на персонализирани функции (ваши собствени .NET функции, изложени като инструменти) и възможности за търсене на файлове, които разширяват модела с външни знания.
Използване на инструменти: изпълнение на код, извикване на функции и търсене на файлове
Инструментите са това, което трансформира пасивен езиков модел в способен агент, който действително може да върши задачи във вашето .NET приложение.Вместо да връща само текст, моделът може да реши да извика функция, да изпълни код или да претърси файлово хранилище, когато това е най-добрият начин да отговори на заявката на потребителя.
Инструментът за интерпретиране на код позволява на агента да пише и изпълнява код в изолирана среда за задачи като анализ на данни, визуализация или основни симулации.От C# не изпълнявате този код директно; конфигурирате асистента с възможността за интерпретатор на код и след това четете обратно резултатите, които той произвежда, като например генерирани изображения или структурирани резултати.
Извикването на функции разкрива вашата собствена логика на домейна като инструменти, които моделът може да избира и извикваВие описвате всяка функция с метаданни: име, предназначение и схема на параметрите. След това асистентът избира кога да задейства тези функции въз основа на потребителски вход и междинни разсъждения, докато вашата C# имплементация обработва валидирането, грешките и времето за изчакване.
Инструментите за търсене на файлове позволяват на агента да базира отговорите си на външни данни, като например документация, отчети или бази знания.Качвате файлове, създавате векторни хранилища или индекси и предоставяте на асистента достъп до тях. Оттам моделът може да извлича подходящи части от съдържанието и да ги включва в своите отговори, подобрявайки фактическата точност и проследимостта.
Ключов принцип на проектиране е инструментите да бъдат безопасни и устойчиви, със силна валидация на входните данни, обработка на грешки и ясни ограничения на ресурсите.Въпреки че LLM избира кога да ги извика, вашият C# код остава изцяло отговорен за прилагането на бизнес правилата, ограниченията на скоростта и политиките за достъп до данни.
Създаване на минимален .NET агент за конзолно приложение с Azure OpenAI
За да направите всичко това конкретно, можете да започнете с просто .NET конзолно приложение, което комуникира с OpenAI или Azure OpenAI Assistants API.Този вид минималистичен проект е идеален за агенти за проверка на концепцията, които живеят изцяло в код, но вече използват инструменти, файлове и дискусионни нишки.
Първата стъпка е да създадете .NET конзолния проект и да добавите необходимите SDK пакети, които ви дават достъп до клиентите на OpenAI и Azure OpenAI.След като тези данни са налице, вие създавате инстанция на генеричен OpenAI клиент, използвайки вашия API ключ, или специфичен за Azure клиент, сочещ към вашата крайна точка на Azure OpenAI и използващ идентификационни данни, като например DefaultAzureCredential.
От общия клиент извличате специализирани клиенти: асистент клиент за управление на асистенти, нишки и изпълнения и файлов клиент за качване и изтегляне на файлове.Това разделение ясно показва кои операции са свързани с конфигуриране и оркестрация, а кои - с обработка на сурови файлове.
След това можете да създадете поток от документи в паметта директно във вашия C# код, за да симулирате реални бизнес данни.Например, можете да дефинирате малък JSON документ, съдържащ месечни показатели за продажби за различни продуктови идентификатори, и да го конвертирате в поток, който клиентът на файла може да качи.
След като файлът бъде качен за използване от асистента, платформата връща идентификатор на файл, който можете да свържете с ново хранилище за векторни изображения и да го прикачите към асистента като ресурс за търсене на файлове.В същата конфигурация на асистента, вие също така активирате интерпретатора на код, така че агентът да може не само да търси стойности, но и да генерира графики или по-разширени анализи.
След като подготвите опциите на асистента с име, инструкции и дефиниции на инструменти, създавате асистента, подкрепен от модел като gpt-4o.Също така конфигурирате нишка с първоначално потребителско съобщение, може би нещо като запитване за производителността на конкретен продукт във времето и заявка за визуализация.
Клиентът-асистент ви позволява да създадете нишката и незабавно да стартирате изпълнение с едно повикване, след което да проверите състоянието на изпълнение, докато достигне терминално състояние.Този цикъл на запитване е прост, но ефективен за инструменти от командния ред; в уеб или фонова среда на услуги можете да преминете към модели, управлявани от събития, или асинхронни модели.
След като изпълнението приключи, вие предавате обратно съобщенията от нишката във възходящ ред и отпечатвате отговорите на асистента в конзолата.За всяко съдържание можете да проверявате текст, анотации, препращащи към входни или изходни файлове, и всички изображения, генерирани от интерпретатора на код, които след това запазвате на диск и регистрирате с обикновен етикет-заместител в изхода на конзолата.
Управление на състоянието, памет и дизайн на разговори
Веднага щом преминете отвъд примерите за играчки, състоянието и паметта стават централни проблеми при проектирането на вашия C# агент.Предизвикателството е, че историята на разговорите расте неограничено, докато моделите имат строги ограничения за токени и освен това е необходимо да се запазват данни за съответствие, анализи или отстраняване на грешки.
Една често срещана стратегия е да се поддържат отделни теми или сесии за всеки потребител или случай на употреба и периодично да се обобщава разговорът, за да се запази само най-подходящият контекст.Резюметата могат да бъдат генерирани от самия модел и след това да се съхраняват заедно със структурирани метаданни в база данни или хранилище за векторни данни.
По-усъвършенстваният подход използва семантично значение, когато решава какво да се запази, компресира или изхвърлиВместо просто да изрязвате най-старите съобщения, вие маркирате или индексирате съдържание по теми, обекти или бизнес процеси и изпълнявате целенасочени заявки, за да реконструирате само контекста, необходим за ново изпълнение.
В C# обикновено паметта се реализира като комбинация от кешове в процеса за бърз достъп и постоянни хранилища за издръжливост и възможност за одит.Това може да означава сдвояване на релационна база данни за структурирани метаданни с векторна база данни за семантично търсене в неструктурирано съдържание, всичко това скрито зад интерфейси на хранилища, които вашите агенти могат да извикват, без да се интересуват от основната технология.
Обмисленият дизайн на разговора също е от значение: трябва да изготвите системни инструкции, описания на инструменти и потребителски подкани, така че LLM да може да разсъждава ефективно, като същевременно остава в рамките на вашата област.Това включва изясняване кога агентът трябва да задава уточняващи въпроси, кога да извика инструмент и кога да откаже заявка, която попада извън разрешения му обхват.
Инструменти като C# функции, API и външни услуги
В реални приложения най-мощните инструменти са вашите собствени функции на домейна, изложени на показ, така че агентът да може да оркестрира работата във вашите вътрешни системи.Те могат да включват операции като създаване на билети, заявки към клиентски записи, извършване на финансови изчисления или задействане на работни потоци във вашите съществуващи микросървиси.
За всеки инструмент е необходимо да предоставите богати метаданни, описващи какво прави, какви входни данни очаква и какво връща, в идеалния случай в машинно четима схема.Това помага на LLM да избере правилния инструмент, да изгради валидни аргументи и да интерпретира правилно резултатите, намалявайки халюцинациите и грешките.
От страна на имплементацията, всеки манипулатор на инструменти в C# се нуждае от защитно програмиране: стриктна валидация на входните данни, стабилна обработка на изключения и разумни таймаути.Агентът може да опита неща, които нямат бизнес смисъл; вашият код трябва да налага правила, вместо да приема, че моделът винаги се държи предвидимо.
Също така е разумно да се регистрира всяко извикване на инструмент, заедно с потребителя, който го е извикал, сегмента с подканата, който го е задействал, и резултата.Това ви дава ясна одитна следа, подпомага прегледите на сигурността и ви позволява да настроите кои инструменти са най-ефективни или се нуждаят от допълнителни предпазни мерки.
Многоагентна оркестрация и работни процеси в .NET
С усложняването на сценариите ви, може да откриете, че един агент не е достатъчен и се нуждаете от множество специализирани агенти, работещи заедно.Например, един агент може да се фокусира върху проучване и събиране на данни, друг върху анализ, а трети върху изготвяне на лесни за ползване резултати.
Концептуално, това съответства добре на моделите на работни процеси, които .NET разработчиците вече познават: последователни стъпки, паралелни разклонения, предаване на данни и роли на супервайзори.Вместо твърдо кодирана логика, агентите координират действията си чрез структурирани съобщения и споделено работно пространство, но моделите на оркестрация изглеждат познати.
Последователните работни потоци предават резултата от един агент директно на следващия, идеални за линейни задачи като събиране на изисквания, проектиране, внедряване и преглед.Паралелните работни процеси позволяват на множество агенти да обработват различни аспекти на даден проблем едновременно, след което да обединяват резултатите си на по-късен етап.
Моделите за прехвърляне позволяват отговорността да се прехвърля от агент на агент въз основа на условия, като например прагове на доверие, категории съдържание или потребителски действия.Груповите чатове включват няколко агенти в споделен разговор, където те могат да обсъждат опции, да обменят мнения и да се обединят около решение в реално време.
Контролираните или йерархични настройки въвеждат мениджърски агент, който преглежда междинните резултати, възлага задачи и разрешава конфликти.В .NET можете да представите тази оркестрация, използвайки фонови работници, опашки за съобщения или двигатели на работни процеси, докато самите агенти комуникират чрез Assistants API или свързани абстракции.
Microsoft.Extensions.AI, VectorData и Agent Framework
За да направи изграждането на агенти по-идиоматично за .NET разработчиците, Microsoft въвежда основни библиотеки като Microsoft.Extensions.AI и Microsoft.Extensions.VectorDataТези библиотеки са проектирани да се усещат подобно на други пакети на Microsoft.Extensions, които вече използвате за регистриране, конфигуриране и инжектиране на зависимости.
Разширенията с изкуствен интелект предоставят модулни компоненти за работа с модели, инструменти и подкани по начин, който позволява включване/изключване.Вместо да кодирате твърдо конкретен LLM доставчик, можете да регистрирате доставчици на модели и да ги превключвате чрез конфигурация, което е изключително полезно, когато трябва да балансирате разходите, латентността и възможностите в различните среди.
Разширенията за векторни данни се фокусират върху интегрирането на семантично търсене и генериране, допълнено с извличане, във вашите приложения.Те абстрахират специфични имплементации на векторни бази данни и ви предоставят общи интерфейси за съхраняване, търсене и управление на вграждания, които захранват дългосрочната памет на вашия агент.
В допълнение към тези градивни елементи, Microsoft Agent Framework има за цел да предложи абстракция от по-високо ниво, специално пригодена за сценарии на агенти и работни процеси.Въпреки че детайлите продължават да се развиват, целта е да се осигури последователен начин за дефиниране на агенти, инструменти, работни процеси и контекст, със силна интеграция в по-широката екосистема на .NET и Azure.
AI Toolkit, Azure AI Foundry и агенти от Visual Studio Code
Много разработчици предпочитат да изследват и създават прототипи на агенти директно от своя редактор и точно тук влизат в действие разширенията AI Toolkit и Azure AI Foundry за Visual Studio Code.Заедно те ви позволяват да преглеждате модели, да ги внедрявате, да оценявате качеството и да ги свързвате с агенти, без да напускате вашата среда за кодиране.
Разширението AI Toolkit предоставя каталог с модели, където можете да инспектирате модели, хоствани в облака и локални модели, включително тези, обслужвани чрез инструменти като Ollama.Можете да стартирате модели, хоствани в GitHub, да сравнявате резултатите от различни модели един до друг и бързо да видите кой от тях е подходящ за вашия случай на употреба.
Интеграцията с Azure AI Foundry добавя още един слой: можете да разположите модели директно в Azure, да генерирате примерен C# клиентски код за извикването им и да настройвате конфигурацията и метаданните от VS Code.Това рационализира пътя от експериментална до производствена среда, особено когато вашият екип вече работи в екосистемата на Azure.
Тези разширения също помагат при оценяването, като ви позволяват да настройвате тестови набори от данни, да изпълнявате оценки и да проверявате резултатите в инструменти като Data WranglerМожете да дефинирате персонализирани оценители, съобразени с вашия домейн, да ги стартирате в партиди от изходни данни на модела и да визуализирате къде вашите агенти се представят добре или къде се затрудняват.
За изграждане на агенти, инструментариумът поддържа създаване на агенти със системни подкани, автоматично генериране на системни съобщения и свързване към сървъри на Model Context Protocol (MCP), които предоставят външни инструменти.Можете дори да изградите агенти в стил „стая за бягство“ или специфични за домейна агенти, които извикват персонализирани MCP сървъри, представляващи вашите собствени услуги.
В самия Azure AI Foundry получавате дизайнер на визуални агенти плюс YAML синхронизация.Това означава, че можете да конфигурирате агенти, да прикачите инструменти като търсене в Bing или интерпретатор на код, да тествате взаимодействия в детска площадка и след това да експортирате или синхронизирате конфигурацията в контрола на изходния код, като по този начин поддържате вашия C# код и дефинициите на вашите агенти съгласувани.
Тестване, наблюдаемост и контрол на разходите за C# AI агенти
Агентите, готови за производство, изискват същата прецизност като всяка друга критично важна услуга: щателно тестване, добра телеметрия и текущо управление на разходите.Разликата е, че LLM-ите носят нови променливи, като стохастични изходи и използване на токени, които също трябва да следите.
От страна на тестването, искате комбинация от класически модулни тестове за вашите инструменти и разговори в стил интеграция, които симулират реалистични потребителски потоци.Единичните тестове проверяват дали всеки инструмент се държи правилно при определени входни данни, докато разговорните тестове проверяват дали агентът избира разумни инструменти, генерира валидни аргументи и остава в рамките на границите на политиката.
Наблюдаемостта трябва да обхваща повече от просто успех или неуспех; искате разпределения на латентността, потребление на токени, следи от стъпки на изпълнение и статистика за извиквания на инструменти.Тези показатели улесняват откриването на регресии, когато променяте модели, подкани или внедрявания на инструменти, и ви помагат да настроите системата си за производителност и цена.
Контролът на разходите е тясно свързан с това как управлявате продължителността на разговорите и честотата на извикванията на инструменти.Дългите, неограничени разговори могат да увеличат значително използването на токени и да забавят отговорите, така че стратегии като обобщаване, контекстни прозорци и интелигентно отрязване са от съществено значение при всяко сериозно внедряване на C#.
Добра идея е също така да се проследяват процентите на успех на ниво конкретни пътища на изпълнение или работни процеси, а не само на ниво агент като цяло.По този начин можете да видите кои маршрути през вашата многоагентна система са надеждни и кои се нуждаят от по-добри подкани, нови инструменти или допълнителни предпазни мерки.
Сигурност, съответствие и корпоративна интеграция
Когато вашите агенти започнат да докосват чувствителни данни или да автоматизират критични за бизнеса операции, сигурността и съответствието не могат да бъдат второстепенна задача.Комбинацията от гъвкавост на LLM и корпоративни ограничения изисква много внимателно обмислена позиция по сигурността.
Първо, никога не кодирайте твърдо идентификационни данни или тайни в C# кода си.Използвайте стандартни механизми за управление на секрети във вашата облачна платформа, променливи на средата или управлявани самоличности и се уверете, че вашият агентски процес има само привилегиите, от които наистина се нуждае.
Второ, всяко външно повикване, направено от името на агента, трябва да премине през слоеве за дезинфекция и валидиране.Това включва както потребителски входни данни, така и генерирани от модела аргументи към инструментите, тъй като и двете могат да съдържат неочаквано, деформирано или злонамерено съдържание.
Трето, трябва да регистрирате и одитирате всяко извикване на инструмента, включително ключов контекст като потребителя, извикващия агент, целевата система и резултата.В регулираните индустрии тази одитна следа може да е задължителна; дори извън тези среди тя е безценна за реагиране при инциденти и управление.
Накрая, синхронизирайте архитектурата на внедряването си с корпоративни модели, като например разделяне на равнините на контрол и извод.Това означава изолиране на оркестрацията, конфигурацията и мониторинга от тежките процеси на извод, което подобрява мащабируемостта, сигурността и оперативната устойчивост.
Разгръщане, мащабиране и свързване с аналитика
След като вашите C# агенти се държат добре в тестовете, ви е необходима стратегия за внедряване, която се мащабира грациозно и се интегрира с останалата част от вашия стек.Контейнерите, оркестраторите и управляваните услуги с изкуствен интелект са вашите съюзници тук.
Често срещан модел е да пакетирате слоя за оркестрация на агенти в контейнери и да ги изпълнявате под Kubernetes или друг оркестратор, като същевременно делегирате LLM извод на управлявани услуги като Azure OpenAI.Това ви позволява да мащабирате контролната равнина и равнината на извод независимо, когато търсенето се колебае.
Дълготрайните или интензивни взаимодействия с агенти често се възползват от асинхронната обработка и опашките.Вместо да блокирате HTTP заявки, докато сложно многоетапно изпълнение завършва, вие поставяте работни елементи в опашка, оставяте фоновите работници да ги обработват и уведомявате клиентите, когато резултатите са готови.
От бизнес гледна точка, истинската стойност често се проявява, когато подавате изходни данни от агенти към инструменти за анализ и бизнес разузнаване.Това може да означава вмъкване на структурирани обобщения, решения или показатели в хранилища за данни и излагането им чрез табла за управление в Power BI или други BI платформи.
Този затворен цикъл – агенти, генериращи анализи или действия, анализи, измерващи въздействието, и екипи, итериращи върху подкани и инструменти – превръща изкуствения интелект от новост в устойчива оперативна способност.С течение на времето можете да прецизирате кои агенти осигуряват най-висока възвръщаемост на инвестициите, кои работни процеси трябва да бъдат допълнително автоматизирани и къде трябва да се осигури човешки надзор.
Събирайки всички тези части, вие получавате екосистема, ориентирана към C#, където асистенти, инструменти, работни потоци и облачни услуги си сътрудничат: Assistants API предоставя разговорно мислене, вашият .NET код предоставя надеждни инструменти и състояние, библиотеките на Microsoft.Extensions предлагат изчистени абстракции, а Azure AI Foundry плюс AI Toolkit рационализират експериментирането и внедряването.С внимателно внимание към паметта, наблюдаемостта, сигурността и архитектурата, тези агенти могат да осигурят реални, измерими подобрения в ефективността, качеството на решенията и автоматизацията в цялата ви организация.