Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek popisuje běžné oblasti návrhu a faktory, které je potřeba vzít v úvahu při rozhodování o technologii a přístupu při vytváření aplikace, která má funkce AI. Pokyny platí pro tradiční úlohy strojového učení i generování AI. Zahrnuje architektury, jako jsou TensorFlow, Keras a PyTorch, spolu s různými možnostmi obsluhy a hostování, které zahrnují dávkové, streamované a online zpracování.
Při návrhu inteligentních funkcí v úloze je potřeba vzít v úvahu mnoho možností. Jedinečné funkční a nefunkční požadavky vám pomůžou určit, jestli potřebujete základní možnosti odvozování nebo více možností dynamického řešení problémů. Tyto požadavky vám pomůžou při rozhodování o návrhu vysoké úrovně. Při přechodu z oblastí návrhu vysoké úrovně na oblasti návrhu nižší úrovně zvažte tyto volby.
Jak je popsáno v článku Začínáme, ať už chcete vytvořit vlastní model nebo použít předem vytvořený model, je jedním z prvních důležitých rozhodnutí, která je potřeba provést. Při použití předem vytvořeného modelu zvažte následující body:
Zdroje katalogu: Prozkoumejte úložiště, jako je Hugging Face Model Hub, TensorFlow Hub a katalog modelů portálu Microsoft Foundry , a vyhledejte předem natrénované modely. Tyto platformy poskytují rozsáhlý katalog modelů pro různé úlohy.
Licencování: Ujistěte se, že licenční podmínky modelu odpovídají vašim bezpečnostním, souladu s předpisy a aplikačním cílům, zejména pokud plánujete distribuovat aplikaci nebo ji integrovat s jinými službami.
Klíčové komponenty: Podívejte se na architekturu modelu, trénovací data a výkon a zjistěte, jestli je vyladěná pro vaši úlohu nebo doménu.
Pokyny k volbě hostitelské platformy najdete v tématu Důležité informace o hostování modelu a platformě pro odvozování.
Architektura aplikační vrstvy
Při návrhu inteligentních funkcí nastavte v návrhu jasné hranice napříč následujícími pěti klíčovými vrstvami.
Klientská vrstva: Uživatelské rozhraní a klientské aplikace, ve kterých uživatelé nebo procesy mají zkušenosti s inteligentními možnostmi vaší úlohy. Udržujte tuto vrstvu tenkou a delegujte většinu schopností na jiné vrstvy.
Vrstva inteligentních funkcí: Možnosti směrování, orchestrace a agenta, které koordinuje operace umělé inteligence. Tato vrstva zahrnuje směrování modelů, správu konverzací a inteligentní rozhodování.
Vrstva odvozování: Spouštění natrénovaných modelů pro generování předpovědí nebo rozhodování na základě dat Tato vrstva zpracovává načítání modelů a volání za běhu, vstupní předběžné zpracování a následné zpracování výstupu spolu s obsluhou předpovědí prostřednictvím rozhraní API nebo vložených systémů.
Vrstva znalostí: Základní data, znalostní grafy a služby vyhledávání, které poskytují relevantní kontext a informace vrstvě inteligence. Tato vrstva vynucuje zásady přístupu k datům a autorizaci.
Vrstva nástrojů: Obchodní rozhraní API, externí služby a možnosti akcí, které může vrstva inteligentních funkcí vyvolat. Tato vrstva by měla používat standardizovaná rozhraní a vynucovat vlastní zásady zabezpečení.
Každá vrstva vynucuje vlastní zásady, identity a strategie ukládání do mezipaměti, aby dosáhla svých vlastních lokalizovaných požadavků na spolehlivost, zabezpečení a výkon. Vrstvy také umožňují soustředit se na vývoj, testování a řešení potíží.
Doporučení
Následující tabulka shrnuje doporučení uvedená v tomto článku.
| Doporučení | Popis |
|---|---|
| Určení priorit řízení zabezpečení a zodpovědného řízení AI | Implementujte tradiční zabezpečení aplikací a bezpečnostní opatření specifická pro AI jako primární ovladač návrhu. Vynucujte bezpečnostní systémy poskytovatele, filtrování vstupu a výstupu, omezování rychlosti a kvót podle identity a limity na tokeny a výzvy. Bezpečnostní a bezpečnostní prvky musí být ověřeny a nelze je předpokládat ze spravovaných služeb. |
| Udržujte inteligenci mimo klienta. | Navrhujte back-endové služby pro zpracování průřezových záležitostí, jako jsou omezování rychlosti, operace převzetí služeb při selhání a logika zpracování umělé inteligence. Oddělte abstraktní chování a inteligenci od klienta, abyste zajistili budoucí odolnost vaší konstrukce a zlepšili udržovatelnost. |
| Zablokujte přímý přístup k úložištím dat. | Kód v systémech AI by neměl mít přímý přístup k úložištím dat. Směrujte všechny žádosti o data prostřednictvím rozhraní API nebo podobné abstrakce přístupu k datům, která vynucuje autorizaci a šíří kontext uživatele nebo tenanta do načítání a filtrování. Předat identitu uživatele, aby bylo možné použít zabezpečení na úrovni dat. |
| Abstrahujte své modely a nástroje | Pomocí vrstev abstrakce oddělte aplikaci od konkrétních modelů, nástrojů a technologií. Implementujte standardizovaná rozhraní a protokoly, abyste zajistili flexibilitu při vývoji technologií, což usnadňuje údržbu návrhu a testování v budoucnu. |
| Izolujte chování a akce. | Návrh jasných hranic mezi klienty, inteligentními funkcemi (směrování, orchestrace/agenty), znalostmi (uzemnění dat) a nástroji (obchodní rozhraní API) Každá vrstva by měla vynucovat vlastní zásady, identity a strategie ukládání do mezipaměti, aby se omezil rozsah dopadu a soustředilo vývojové úsilí. |
| Určete prioritu předem připravených řešení. | Používejte software jako službu (SaaS) nebo platformu jako službu (PaaS) ke zpracování funkcí úloh, pokud splňují požadavky na zabezpečení, bezpečnost, dodržování předpisů a kvóty. Implementujte kompenzační ovládací prvky prostřednictvím bran, které vynucují ověřování, kvóty, zabezpečení a protokolování. Pokud je to možné, používejte předem připravené a natrénované modely, abyste minimalizovali provozní a vývojovou zátěž pro vaše pracovní a provozní týmy. |
Rozlišovat mezi odvozováním a inteligentními aplikacemi
Při návrhu architektury aplikace nejprve určete, jestli vytváříte aplikaci zaměřenou na odvozování nebo aplikaci zaměřenou na inteligenci, protože toto rozlišení řídí rozhodnutí o návrhu.
Odvozování aplikací
Odvozování aplikací provádí jednokrokové operace, jako je klasifikace, překlad nebo shrnutí. Tyto aplikace mají jednodušší architektury.
Typická architektura: Klient komunikuje s bránou AI, která poskytuje ověřování, kvóty, bezpečnost a směrování. Tato brána komunikuje s vrstvou pro obsluhu modelů, jako je Foundry, Azure Kubernetes Service (AKS) nebo spravované online koncové body. Pokud je to praktické, výsledky se můžou ukládat do mezipaměti pro budoucí volání inference před vrácením klientovi.
Odvozování aplikací obvykle používá přímé volání modelu, vyžaduje minimální orchestraci, zaměřuje se na výkon a propustnost a nevyžaduje složitou správu stavu.
Inteligentní aplikace
Inteligentní aplikace provádějí plánování, koordinaci a vícestupňové odůvodnění a obvykle se zpracovávají prostřednictvím agentů a orchestrace agentů. Ve svých architekturách potřebují zahrnout více konceptů.
Typická architektura: Klient vyvolá agenta nebo agenta orchestrátoru. Na základě návrhu nebo autonomních funkcí tato vrstva vyvolá vrstvu nástrojů, jako jsou servery MCP (Model Context Protocol) nebo vlastní rozhraní API. Agent může potřebovat využít služby poskytující znalostní základy, jako je index vyhledávání, databáze nebo graf. Modely se můžou během tohoto procesu vyvolat v několika bodech. Ukládání do mezipaměti může také probíhat na několika úrovních, aby se proces optimalizoval.
Inteligentní aplikace obvykle obsahují vzory agentů a směrování modelů se složitou koordinací pracovních postupů, integrují se s více zdroji dat a nástroji a vyžadují konverzační a kontextovou správu.
Základní pokyny pro návrh aplikací AI
Při návrhu aplikací AI použijte následující základní pokyny k vytváření odolných a udržovatelných systémů.
Začínáme s obchodními výsledky
Než vyberete technologie, jasně definujte obchodní problém, který řešíte. Tato definice vás provede volbami technologií a návrhem architektury. Vezměte v úvahu následující faktory:
Metriky úspěšnosti: Definujte měřitelné výsledky, které ukazují hodnotu, jako jsou vylepšení přesnosti, snížení nákladů nebo skóre spokojenosti uživatelů.
Požadavky na uživatelské prostředí: Porozumíte tomu, jak uživatelé a procesy budou pracovat s funkcemi umělé inteligence a jaké doby odezvy očekávají.
Regulační omezení: Identifikujte požadavky na dodržování předpisů, které můžou ovlivnit vaše volby návrhu, například rezidenci dat nebo požadavky na vysvětlení.
Návrh zabezpečení od samého počátku
Úlohy umělé inteligence od počátku vyžadují přístup založený na zabezpečení. Implementujte vrstvené zabezpečení napříč všemi komponentami pomocí šíření identity a auditovatelných ovládacích prvků. Další informace naleznete v tématu Strategie návrhu zabezpečení.
Návrh pro pozorovatelnost od prvního dne
Aplikace umělé inteligence vyžadují monitorování nad rámec tradičních metrik aplikací. Zabudujte do návrhu pozorovatelnost od začátku:
Sledování výkonu modelu: Monitorování odchylek přesnosti, latence odvozování a skóre spolehlivosti předpovědi
Monitorování kvality dat: Sledujte změny distribuce vstupních dat, které můžou ovlivnit výkon modelu.
Analýza interakce uživatelů: Seznamte se s tím, jak uživatelé komunikují s funkcemi AI a identifikují příležitosti ke zlepšení.
Plánujte abstrakci a budoucí flexibilitu
Navrhněte systém pomocí abstrakcí vrstev, které umožňují přizpůsobit se při vývoji technologií umělé inteligence:
Abstrakce modelu: Abstraktní modely za konzistentními rozhraními, které umožňují prohození nebo upgrade bez změn aplikací.
Standardizované protokoly: Upřednostněte otevřená, zdokumentovaná rozhraní a formáty, jako jsou OpenAPI pro nástroje, ONNX pro přenositelnost modelů a OpenTelemetry pro telemetrii.
Návrh založený na schopnostech: Navržení možností místo konkrétních technologií pro zajištění flexibility
Externalizace výzev a konfigurace
Zacházejte s výzvami jako s konfigurací, která by se měla externalizovat podle principů návrhu aplikace Twelve-Factor :
Správa verzí: Udržujte výzvy ve správě verzí s jasným sledováním nasazení pro korelaci telemetrických a bezpečnostních výsledků s konkrétními verzemi výzvy.
Oddělení rolí: Umožňuje obchodním analytikům a odborníkům na domény ladit výzvy bez změn kódu.
Bezpečné nasazení: Implementujte řízené procesy zavedení pro výzvy ke změnám a zacházejte s nimi jako s významnými aktualizacemi konfigurace.
Plánování vyřazení modelu
Základní modely nakonec dosáhnou konce své životnosti a jsou vyřazeny z vaší platformy pro hostování modelů. Modely jsou nahrazeny modely, které fungují lépe, jsou nákladově efektivnější, mají aktualizované znalosti trénování a podporují nové funkce. Navrhněte abstrakce, které minimalizují dopad budoucích přechodů modelu vaší úlohy.
Abstrakce zprostředkovatele: Používejte vrstvy abstrakce, které umožňují přepínání mezi poskytovateli modelů bez změny aplikace.
Správa verzí: Implementujte strategie správy verzí, které podporují postupné migrace mezi verzemi modelu.
Záložní strategie: Návrh záložních mechanismů pro to, kdy upřednostňované modely přestanou být dostupné.
Techniky návrhu architektury, které řeší otázky životního cyklu modelu, najdete v tématu Návrh pro podporu základních životních cyklů modelu.
Kontejnerizace komponent
Pokud chcete zajistit, aby vaše nezávisle nasaditelné komponenty byly samostatné a aby se zlepšila konzistence nasazení, zvažte kontejnerizaci jako součást strategie návrhu. Kontejnerizované by měly být následující komponenty:
Mikroslužby: Kontejnerizujte jednotlivé mikroslužby, které zpracovávají konkrétní funkce aplikace, jako je zpracování dat, odvozování modelů a ověřování uživatelů. Tento přístup umožňuje nezávislé nasazení a škálování a usnadňuje efektivnější aktualizace a údržbu.
Modely AI: Kontejnerizujte modely AI, abyste zajistili, že jsou všechny závislosti, knihovny a konfigurace seskupené dohromady. Tento přístup izoluje modelové prostředí od hostitelského systému, aby se zabránilo konfliktům verzí, a pomáhá zajistit konzistentní chování v různých prostředích nasazení.
Kanály zpracování dat: Kontejnerizujte úlohy zpracování dat, které předchází nebo následují odvozování modelu, jako je čištění dat, transformace a extrakce funkcí. Tento přístup zlepšuje reprodukovatelnost a zjednodušuje správu závislostí.
Služby infrastruktury: Kontejnerizovat služby, které poskytují podporu infrastruktury, jako jsou databáze a vrstvy ukládání do mezipaměti. Tento přístup pomáhá udržovat konzistenci verzí a usnadňuje škálování a správu těchto komponent.
Implementace strategií ukládání do mezipaměti ve více vrstvách
Přístup pro ukládání do mezipaměti s více vrstvami může pomoct zlepšit výkon a snížit náklady v aplikacích AI. Zvažte implementaci ukládání do mezipaměti na několika úrovních zásobníku aplikací:
Ukládání výsledků a odpovědí do mezipaměti: Tento přístup použijte k opakovanému použití odpovědí pro identické nebo sémanticky podobné dotazy, pokud je to vhodné pro situaci. V úlohách, kde jsou odpovědi uložené v mezipaměti, může tento přístup výrazně snížit vyvolání modelu, což zvyšuje výkon a snižuje náklady na vyvolání modelu.
Ukládání fragmentů znalostí a dat zakotvení do mezipaměti: Ukládejte často načítané fragmenty znalostí a data zakotvení do mezipaměti, aby nedocházelo k opakovaným databázovým a vyhledávacím dotazům nebo operacím rozhraní API pro data.
Ukládání výstupu modelu do mezipaměti: Mezipaměť výstupů modelu, které lze znovu použít pro různé požadavky.
Při návrhu přístupu k ukládání do mezipaměti v jednotlivých vrstvách je potřeba pochopit, k jakým datům se často přistupuje a jak můžou role a oprávnění uživatelů aplikace ovlivnit, k jakým datům mají přístup. Aby ukládání do mezipaměti bylo efektivní, musíte očekávat vysokou míru úspěšných zásahů do mezipaměti. Zaměřte se na důležité ukládání do mezipaměti pro cesty s vysokým provozem, jako jsou vyhledávání v katalogu produktů, a zároveň monitorujte vyřazení mezipaměti.
Součásti klíče mezipaměti: Hodnoty uložené v mezipaměti musí být svázané s konkrétními faktory modulu runtime v rámci vaší úlohy. Do klíčů mezipaměti zahrňte hodnoty, jako je identita tenanta nebo uživatele, kontext zásad, verze modelu a výzva, aby se zajistilo, že se hodnota uložená v mezipaměti vrací jenom v případě, že je to pro požadavek vhodné.
Zásady TTL (Time to Live): Nastavte vhodné doby vypršení platnosti na základě požadavků na aktuálnost dat a citlivost obsahu.
Neplatné háky: Implementujte triggery zneplatnění mezipaměti pro aktualizace dat, změny modelu a změny výzvy.
Ochrana osobních údajů uživatele: Nikdy neuchovávejte uživatelský privátní obsah do mezipaměti, pokud není správně vymezený podle klíče a zásad. Obecně platí, že ukládání do mezipaměti je nejvhodnější pro data, která platí pro více uživatelů. Ve většině situací neukládejte mezipaměť pro jednoho uživatele. Vyhněte se ukládání odpovědí specifických pro uživatele do mezipaměti jako platnou odpověď pro všechny uživatele. Například odpověď uložená v mezipaměti pro "Kolik hodin placeného volna zbývá?", je vhodná jenom pro uživatele, který požaduje data, i když ostatní uživatelé prezentují stejný dotaz.
Riziko: Ukládání do mezipaměti zlepšuje výkon a snižuje náklady, ale přináší rizika zabezpečení a aktuálnosti dat. Mezi tato rizika patří únik dat, zastaralá data a porušení ochrany osobních údajů.
Vyhodnocení použití orchestrace a agentů v generačních řešeních AI
Zvolte vhodný koordinační přístup na základě požadavků vaší aplikace na determinismus a možnosti průzkumnosti.
Kdy použít orchestraci
Orchestrátor spravuje pracovní postup tím, že koordinuje komunikaci mezi různými komponentami řešení AI, které by jinak bylo obtížné spravovat ve složitých úlohách. Pokud vaše úloha potřebuje některou z následujících charakteristik, doporučujeme do návrhu sestavit orchestrátor:
Předvídatelné pracovní postupy: Vícekrokové procesy s dobře definovanými sekvencemi a rozhodovacími body.
Požadavky na dodržování předpisů: Scénáře, ve kterých potřebujete zajistit, aby se provedly konkrétní kroky pro dodržování právních předpisů.
Kritické cesty k výkonu: Pracovní postupy, ve kterých je potřeba pečlivě kontrolovat latenci a využití prostředků.
Jednoduchá koordinace: Jednoduché delegování úkolů, které nevyžaduje dynamické odůvodnění.
Kdy použít spolupráci agenta
Agent je způsob, jak zabalit, extrahovat a definovat inteligentní chování ve vaší aplikaci. Agenti poskytují funkce vázané na kontext a můžou pracovat s architekturami orchestrace, jako jsou sémantické jádro, autogen nebo rozhraní Microsoft Agent Framework.
Použití přístupů ke spolupráci směrovaným agentem pro průzkumné nebo složené úlohy:
Vícekrokové odůvodnění: Úkoly, které vyžadují plánování a rozhodování napříč několika kroky
Koordinace nástrojů: Složité pracovní postupy, které zahrnují koordinaci více specializovaných nástrojů a služeb
Adaptivní chování: Scénáře, kdy systém potřebuje upravit svůj přístup na základě průběžných výsledků nebo měnících se podmínek
Správa kontextu: Aplikace, které potřebují udržovat stav konverzace a kontext uživatele napříč interakcemi
Aspekty návrhu agenta
Při navrhování systémů založených na agentech zvažte izolaci a hranice, komunikační vzory a strategie abstrakce nástrojů. Navrhujte jasné hranice mezi různými možnostmi agentů, abyste snížili poloměr výbuchu a zlepšili testovatelnost. Pro komunikaci s agenty používejte zavedené vzory, jako jsou systémy front témat. Abstraktní funkce nástrojů pomocí standardizovaných rozhraní, které umožňují flexibilitu agentů.
Důležité
Nepřidávejte automaticky agenty mezi úlohu, která se má dokončit, a voláním modelu. Vyhodnoťte, jestli doručované inteligentní funkce vyžadují složitost vzorů agentů nebo jestli jsou pro váš případ použití dostatečné přímé volání modelu. Vrstvy agenta přidávají latenci, rozšiřují povrchovou oblast a komplikují testování.
Trvalost stavu agenta
U konverzací s více turny a dlouhotrvajících úloh navrhujte agenty, kteří obsahují trvalost trvalých stavů, aby si mohli zachovat kontext napříč požadavky, relacemi nebo cykly nasazení. K ukládání relevantních metadat, historie konverzací a průběhu úkolů použijte zabezpečené sdílené úložiště, jako je Azure Cosmos DB, Azure Managed Redis nebo Azure Table Storage. Omezte trvalý stav pouze na nezbytné minimální informace, aby se snížila rizika pro soukromí a režijní náklady na tokeny, a zavádějte zásady TTL pro vypršení platnosti zastaralých dat. Ujistěte se, že agenti mohou obnovit stav po obnovení, aby mohli pokračovat v pracovních postupech bez opakování dokončených kroků.
Hybridní přístupy
Zvažte hybridní návrhy, ve kterých orchestrátory delegují konkrétní dílčí úkoly na agenty.
Strukturované pracovní postupy s flexibilními kroky: Orchestraci můžete použít pro celkový pracovní postup a zároveň umožnit agentům zpracovávat složité jednotlivé kroky.
Vzorce eskalace: Začněte deterministickou orchestrací a přejděte na agentové uvažování, pokud předem stanovená logika není dostatečná.
Odůvodnění specifické pro doménu: Orchestraci můžete použít pro koordinaci mezi doménou a současně používat specializované agenty pro úlohy specifické pro doménu.
Kompromis: Orchestrace poskytuje předvídatelnost a kontrolu, ale omezuje adaptabilnost. Spolupráce agenta umožňuje dynamické řešení problémů, ale přináší proměnlivost a složitost.
Zavést brány AI pro vynucování zásad
Využijte brány AI ve vašem návrhu k poskytování možností offloading brány, směrování brány a agregace brány v rámci vaší úlohy. Brány se obvykle implementují pomocí platforem, jako je Azure API Management nebo prostřednictvím vlastních programových řešení, jako je implementace Envoy nebo NGINX. Brány lze použít k proxy požadavkům na poskytovatele modelů, koncové body agentů, nástroje a úložiště znalostí.
Základní možnosti brány AI
Brána AI může řešit průřezové záležitosti a sloužit jako vrstva abstrakce a nepřímé vrstvy vůči cílovému systému. Při návrhu strategie brány AI zvažte následující možnosti:
Normalizace protokolu: U sdílených funkcí umělé inteligence napříč poskytovateli normalizujete rozhraní na společný protokol prostřednictvím brány, aby se zlepšila udržovatelnost. Pro funkce specifické pro poskytovatele použijte bránu jako reverzní proxy server bez normalizace.
Ověřování a autorizace: Vynucujte řízení přístupu na základě identity a šíření kontextu uživatele do podřízených služeb.
Omezování rychlosti a kvóty: Implementujte omezení rychlosti a kvóty na úrovni jednotlivých uživatelů, aplikací nebo nájemců tokenů, abyste zabránili zneužití a řídili náklady.
Filtrování požadavků a odpovědí: Použijte ověřování vstupu, filtrování výzev a kontroly bezpečnosti výstupu na úrovni brány.
Tokeny a výzvy: Vynucujte maximální limity tokenů a omezení velikosti výzev, aby se zabránilo vyčerpání prostředků preventivním odmítnutím požadavků, které kladou na systém vyšší nároky, než je žádoucí nebo možné.
Zásady směrování modelu: Směrujte požadavky na vhodné modely na základě uživatelských oprávnění, charakteristik požadavků nebo cílů optimalizace nákladů. Brány se často používají k přesměrování přebytečného provozu mezi více modely, když je kapacita nebo ceny využívána v jednom modelu, ale jsou k dispozici na jiném nasazeném modelu.
Injektáž hlaviček a transformace: Přidejte požadované hlavičky, kontext uživatele a tokeny zabezpečení pro podřízené služby.
Správa zpětného účtování: Přidělujte poplatky napříč odděleními, která sdílejí komponenty úloh AI, jako je jedna instance Azure OpenAI.
Návod
Podrobný pohled na to, jak se dá brána AI použít k průřezovým obavám a jak brána přináší do vaší architektury další složitost, najdete v tématu Přístup k Azure OpenAI a dalším jazykovým modelům prostřednictvím brány.
Scénáře s více poskytovateli
AI brány jsou zvláště cenné, pokud využíváte různé poskytovatele modelů nebo platformy pro sdílené hostování modelů. Tyto brány jsou často centralizovanými prostředky ve vaší organizaci, na kterých je doporučeno nebo vyžadováno, aby vaše úloha závisela. Dostatečně složitá úloha může také těžit z vytvoření této vrstvy abstrakce v rámci vlastního návrhu.
Sjednocené rozhraní: Zadejte jeden povrch rozhraní API, který abstrahuje více back-endových poskytovatelů.
Převzetí služeb při selhání a redundance: Když primární služby nejsou k dispozici, směrujte požadavky k alternativním poskytovatelům.
Optimalizace nákladů: Směrujte požadavky na cenově nejvýhodnějšího poskytovatele na základě charakteristik požadavků.
Důležité
Nespoléhejte pouze na opakování a vypršení časových limitů sady SDK. Vynucujte limity, ověřování, kvóty a časové limity na úrovni brány a zásad pro komplexní řízení.
Použití vzorů návrhu aplikací AI
Obor definuje několik běžných vzorů návrhu pro aplikace umělé inteligence. Můžete je použít ke zjednodušení návrhu a implementace. Tyto vzory návrhu zahrnují následující typy:
Skládání modelů: Tento vzor návrhu kombinuje předpovědi z více modelů, aby se zlepšila přesnost a robustnost tím, že zmírní omezení jednotlivých modelů.
Architektura mikroslužeb: Tento vzor návrhu odděluje komponenty do nezávisle nasaditelných služeb, aby se zlepšila škálovatelnost a udržovatelnost. Umožňuje týmům pracovat na různých částech aplikace současně.
Architektura řízená událostmi: Tento vzor návrhu používá události k aktivaci akcí, které umožňují oddělit komponenty a zpracování v reálném čase, aby systém rychleji reagoval a přizpůsobil změnám dat.
Vzory integrace základů a znalostí
Mnoho aplikací umělé inteligence přistupuje k externím zdrojům znalostí, aby poskytovaly přesné a aktuální informace. Zacházejte s načtením jako s nástrojem agenta nebo dotazem na znalosti v rámci služby, která vynucuje autorizaci.
Směrování znalostí: Přímé dotazy do příslušných zdrojů znalostí na základě typu dotazu, domény nebo kontextu uživatele
Vrstvení kontextu: Vytvářejte systémy, které můžou kombinovat více zdrojů znalostí a kontextové typy, aby poskytovaly komplexní odpovědi.
Dynamické uzemnění: Implementujte systémy, které mohou přizpůsobovat své zdroje znalostí a základní strategie na základě měnících se požadavků nebo dostupnosti dat.
Načítání s podporou autorizace: Při načítání informací se ujistěte, že poskytování služeb vynucuje uživatelská oprávnění a kontext nájemce.
Podrobnější porozumění návrhu účelově vytvořeného vektorového indexu, který podporuje základní data specifická pro úlohy pro sémantické načítání, najdete v tématu Návrh a vývoj řešení rozšířené generace (RAG).
Vícemodelové směrovací vzory
Použití směrovače modelů může zlepšit dostupnost úloh směrováním požadavků na model, který je v pořádku, když je jiný model v pořádku, nebo může pomoct zlepšit kvalitu odpovědí výběrem nejlepšího modelu pro konkrétní úlohu v reálném čase. Modelové směrovače přidávají flexibilitu, ale přinášejí další variabilitu. Používejte je selektivně:
Kdy použít směrovače modelů: Směrovač modelu použijte, když vaše úloha dokáže tolerovat přidanou variabilitu a latenci, uživatelské prostředí očekává šířku napříč typy modelů nebo potřebujete vyvážit náklady a možnosti napříč různými modely.
Kdy se vyhnout směrovačům modelu: Nepoužívejte směrovač modelu ve scénářích, kdy úloha potřebuje přesné odpovědi optimalizované pro konkrétní úlohy, když použijete jemně vyladěné modely s úzkými cíli na úrovni služeb (SLO) nebo když je pro váš případ použití důležité deterministické chování, včetně konzistentního výkonu.
Když do aplikace přidáte směrovač modelu, upřednostněte směrování nativní pro poskytovatele, pokud je k dispozici, a monitorujte dopad na výkon a spokojenost uživatelů.
Kompromis: Směrovače modelů poskytují flexibilitu a optimalizaci nákladů, ale při testování a řešení potíží přidávají ne deterministické chování a složitost.
Pokud je vaše úloha víceklientská aplikace, podívejte se na Průvodce návrhem zabezpečeného víceklientského RAG inferenčního řešení pro doporučení ohledně přístupu k uzemňovacím datům jednotlivých tenantů.
Kdy použít vzory návrhu
Zvažte použití těchto vzorů návrhu pro následující scénáře:
Složité pracovní postupy: Pokud máte složité pracovní postupy nebo interakce mezi několika modely AI, můžou vzorce, jako je RAG nebo mikroslužby, pomoct spravovat složitost a zajistit jasnou komunikaci mezi komponentami.
Požadavky na škálovatelnost: Pokud poptávka po aplikaci kolísá, model, jako jsou mikroslužby, umožňuje jednotlivým komponentám nezávisle škálovat různé zatížení, aniž by to ovlivnilo celkový výkon systému.
Aplikace řízené daty: Pokud vaše aplikace vyžaduje rozsáhlé zpracování dat, může architektura řízená událostmi poskytovat rychlost odezvy v reálném čase a efektivní zpracování dat.
Poznámka:
Menší aplikace nebo testování konceptů (POCS) obvykle tyto vzory návrhu nevyužívají. Tyto aplikace by měly být navrženy pro jednoduchost. Podobně platí, že pokud máte omezení zdrojů, jako je rozpočet, čas nebo počet prostředků, pomocí jednoduchého návrhu, který lze refaktorovat později, je lepší než přijetí složitého vzoru návrhu.
Volba správných architektur, knihoven a protokolů
Volba architektur a knihoven je úzce propojena s návrhem aplikace. Ovlivňují výkon, škálovatelnost a udržovatelnost. Požadavky na návrh ale můžou omezit volby architektury. Například použití semantické sady SDK jádra často podporuje návrh založený na mikroslužbách, kde je každý agent nebo funkce zapouzdřen ve své vlastní službě. Při výběru architektur a knihoven zvažte následující faktory:
Požadavky na aplikaci: Požadavky aplikace, jako je zpracování v reálném čase nebo dávkové zpracování, můžou omezit výběr architektury. Pokud například aplikace vyžaduje nízkou latenci, možná budete muset použít architekturu s asynchronními funkcemi.
Potřeby integrace: Návrh může vyžadovat konkrétní integrace s jinými systémy nebo službami. Pokud architektura nepodporuje potřebné protokoly nebo formáty dat, možná budete muset návrh znovu zvážit nebo zvolit jinou architekturu.
Odborné znalosti týmu: Sada dovedností vývojového týmu může omezit volby architektury. Návrh, který spoléhá na méně známou architekturu, může vést ke zvýšení času a složitosti vývoje, takže zvažte použití běžnějšího nástroje.
Komunita a podpora: Zvažte vyspělost a podporu ekosystému architektury. Aktivní komunity a komplexní dokumentace snižují rizika implementace.
Charakteristiky výkonu: Vyhodnoťte výkon architektury pro váš konkrétní případ použití, včetně využití paměti, doby spuštění a rychlosti odvozování.
Osvojte si standardizované protokoly nástrojů, abyste zlepšili zásady správného řízení a umožnili flexibilitu:
Použití serverů ve stylu MCP: Pomocí MCP nebo jiného vhodného standardu zabalte obchodní funkce jako zjistitelné servery nástrojů.
Použijte specifikace, které mají širokou podporu sady SDK. Definujte například nástroje pomocí specifikací OpenAPI pro konzistentní dokumentaci a ověřování rozhraní.
Inzerování schopností: Nástroje navržené k inzerování jejich schopností, což orchestrátorům umožňuje adekvátně objevovat a směrovat požadavky. Jako příklad můžete operace čtení a zápisu v rámci plánování podnikových zdrojů (ERP) zabalit jako nástrojový server, který zveřejňuje své schopnosti. Tento přístup umožňuje ladit interakce ERP beze změny logiky agenta.
Předvolby protokolu
Když vyberete protokoly a standardy, upřednostněte otevřené a zdokumentované rozhraní před proprietárními formáty. V odvětví existuje spousta nově vznikajících protokolů. Při zvažování případů použití agent-agent a řízení zvažte technický dluh, který může pocházet z protokolů, jež podléhají rychlé evoluci nebo vyřazování. Vrstvy abstrakce vám můžou pomoct udržet návrh interoperabilní napříč různými architekturami a poskytovateli AI.
Návrh strategie zabezpečení pro komponenty AI vaší úlohy
Komponenty AI vyžadují aspekty zabezpečení nad rámec tradičního zabezpečení aplikací. Implementujte bezpečnostní opatření napříč všemi aplikačními vrstvami při použití standardních zprostředkovatelů identity, jako je Microsoft Entra ID pro základní ověřování a autorizaci.
Základní principy zabezpečení
Implementujte následující základní postupy zabezpečení:
Standardní ověřování a autorizace: Použijte zavedené zprostředkovatele identit a systémy řízení přístupu na základě role (RBAC).
Zabezpečení sledování původu dat s přenosem kontextu uživatele: Ujistěte se, že řízení přístupu je zachováno v celém datovém kanálu. Předávat identitu uživatele použitím toků zastupujících uživatele, aby uživatelé měli přístup jen k výsledkům na základě údajů, které je jim povoleno vidět.
Záznamy auditu: Implementujte podrobné protokolování interakcí AI pro monitorování dodržování předpisů a zabezpečení.
Bezpečnostní opatření specifická pro AI
Řešení problémů se zabezpečením, které jsou pro aplikace umělé inteligence jedinečné:
Filtrování výzev a prevence injekcí: Implementujte opatření proti útokům injekce výzev, které mohou manipulovat chováním umělé inteligence nebo extrahovat citlivé informace.
Ovládací prvky bezpečného používání nástrojů: Pokud používáte agenty s přístupem k nástrojům, implementujte ovládací prvky, které před vyvoláním zabrání škodlivým akcím a ověří použití nástrojů.
Monitorování chování agenta: Monitorujte akce a rozhodnutí agenta, abyste zjistili neobvyklé nebo potenciálně škodlivé vzorce chování.
Řízení přístupu modelu: Implementujte jemně odstupňovaná oprávnění pro různé modely a možnosti v rámci systému AI.
Filtrování odpovědí a bezpečnostní kontroly: Filtrováním výstupů umělé inteligence zabráníte generování škodlivého, nevhodného nebo citlivého obsahu.
Uzemnění omezené zabezpečením
Pokračujte nad rámec toho, aby se zabránilo přímému přístupu k databázi, a implementujte načítání znalostí s podporou zabezpečení:
Šíření identity: Předání deklarací identity skupiny Microsoft Entra nebo ekvivalentních informací o identitě do volání nástroje pro znalostní bázi, aby uzemňující služby nikdy nenačítaly neautorizovaná data nebo média.
Ořezání založené na bezpečnostních skupinách a seznamech řízení přístupu (ACL): Implementujte filtrování na základě bezpečnostních skupin a seznamů ACL ve znalostní vrstvě.
Auditovatelné odepření: Odepření požadavků protokolování protokolu a auditu způsobených nedostatečnými oprávněními
Vynucení autorizace: Vyžadovat, aby kód byl mezi agenty a zdroji znalostí k vynucení zásad autorizace.
Můžete například předat nároky skupiny Microsoft Entra do volání nástroje znalostí, aby se zajistilo, že nástroj zabezpečení nikdy nenačte neoprávněné dokumenty. Tato konfigurace zaručuje výsledky uložené v mezipaměti a zajišťuje, aby odpovědi na AI respektovaly uživatelská oprávnění.
Zvažte nefunkční požadavky
Vaše úloha může mít nefunkční požadavky, které představují výzvy kvůli faktorům, které jsou součástí technologií umělé inteligence.
Latence odvozování modelu nebo vypršení časových limitů: Aplikace umělé inteligence často vyžadují odpovědi v reálném čase nebo téměř v reálném čase. Návrh pro nízkou latenci je zásadní. Zahrnuje optimalizaci architektury modelu, kanálů zpracování dat a hardwarových prostředků. Implementace strategií ukládání do mezipaměti a zajištění efektivního načítání modelu jsou také nezbytné, aby nedocházelo k vypršení časových limitů a poskytovaly včasné odpovědi.
Omezení propustnosti tokenu nebo požadavku: Řada služeb AI omezuje počet tokenů nebo propustnost požadavků, zejména u cloudových modelů. Návrh pro tato omezení vyžaduje pečlivou správu velikostí vstupu, dávkování požadavků v případě potřeby a potenciálně implementaci mechanismů omezování rychlosti nebo řazení do front, které spravují očekávání uživatelů a brání přerušení služeb.
Scénáře nákladů a následného účtování: Návrh pro transparentnost nákladů zahrnuje implementaci funkcí sledování využití a reportování, které usnadňují modely následného účtování. Tyto funkce umožňují vaší organizaci přidělovat náklady přesně napříč odděleními. Správa zpětného účtování se obvykle zpracovává bránou rozhraní API, jako je API Management.
Přesnost a posun modelu: Modely AI se můžou v průběhu času snižovat, když se mění vzory dat. Návrh monitorovacích systémů pro detekci posunu přesnosti a implementace automatizovaných kanálů opětovného trénování v případě potřeby.
Dodržování předpisů a vysvětlení: Některá odvětví vyžadují vysvětlitelná rozhodnutí o umělé inteligenci. V případě potřeby navrhněte systém tak, aby zaznamenával a poskytoval důvody pro výstupy generované AI.
Ochrana osobních údajů a umístění dat: Ujistěte se, že návrh splňuje požadavky na ochranu dat, včetně možnosti odstranění uživatelských dat a dodržování pravidel geografického umístění dat.