Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel werden allgemeine Entwurfsbereiche und Faktoren beschrieben, die Sie berücksichtigen sollten, wenn Sie Entscheidungen zu Technologie und Ansatz treffen, wenn Sie eine Anwendung mit KI-Funktionen erstellen. Die Anleitung gilt sowohl für herkömmliche maschinelles Lernen als auch für generative KI-Workloads. Es umfasst Frameworks wie TensorFlow, Keras und PyTorch sowie verschiedene Bereitstellungs- und Hostingoptionen, die Batch-, Stream- und Onlineverarbeitung umfassen.
Es gibt viele Optionen, die Sie berücksichtigen sollten, wenn Sie intelligente Funktionen in Ihre Workload entwerfen. Ihre einzigartigen funktionalen und nichtfunktionalen Anforderungen helfen Ihnen zu bestimmen, ob Sie grundlegende Ableitungsfunktionen oder dynamischere Problemlösungsfunktionen benötigen. Diese Anforderungen leiten Ihre allgemeinen Entwurfsentscheidungen. Berücksichtigen Sie diese Entscheidungen, während Sie von allgemeinen Entwurfsbereichen zu Entwurfsbereichen auf niedrigerer Ebene wechseln.
Wie im Artikel Erste Schritte erläutert, ist die Entscheidung, ob Sie Ihr eigenes Modell erstellen oder ein vordefiniertes Modell verwenden, eine der ersten wichtigen Entscheidungen, die Sie treffen müssen. Wenn Sie ein vorgefertigtes Modell verwenden, sollten Sie die folgenden Punkte berücksichtigen:
Katalogquellen: Erkunden Sie Repositorys wie den Hugging Face Model Hub, TensorFlow Hub und den Azure AI Foundry-Portalmodellkatalog , um vortrainierte Modelle zu finden. Diese Plattformen bieten einen umfangreichen Katalog von Modellen für verschiedene Aufgaben.
Zulassung: Stellen Sie sicher, dass die Lizenzbedingungen des Modells Ihren Sicherheits-, Compliance- und Anwendungszielen entsprechen, insbesondere, wenn Sie beabsichtigen, die Anwendung zu verteilen oder in andere Dienste zu integrieren.
Wichtige Komponenten: Sehen Sie sich die Architektur, die Schulungsdaten und die Leistung des Modells an, um festzustellen, ob sie für Ihre Aufgabe oder Domäne optimiert ist.
Anleitungen zum Auswählen einer Hostingplattform finden Sie unter Überlegungen für das Modellhosting und die Ableitungsplattform.
Architektur der Anwendungsschicht
Wenn Sie intelligente Funktionen entwerfen, legen Sie klare Grenzen in Ihrem Design über die folgenden fünf Schlüsselebenen fest.
Clientebene: Die Benutzeroberfläche und Clientanwendungen, in denen Benutzer oder Prozesse die intelligenten Funktionen Ihrer Workload erleben. Halten Sie diese Ebene dünn und delegieren Sie die meisten Funktionen auf anderen Ebenen.
Intelligence Layer: Routing-, Orchestrierungs- und Agentfunktionen, die KI-Vorgänge koordinieren. Diese Ebene umfasst Modellrouting, Gesprächsverwaltung und intelligente Entscheidungsfindung.
Ableitungsebene: Ausführen trainierter Modelle zum Generieren von Vorhersagen oder Entscheidungen basierend auf Daten. Diese Ebene behandelt das Laden und die Laufzeitaufrufe des Modells, die Eingabevorverarbeitung und die Ausgabe postprocessing sowie die Bereitstellung von Vorhersagen über APIs oder eingebettete Systeme.
Wissensschicht: Fundamentale Daten, Wissensgraphen und Abrufdienste, die relevanten Kontext und Informationen für die Intelligenzschicht bereitstellen. Diese Ebene erzwingt Datenzugriffsrichtlinien und -autorisierung.
Tools-Ebene: Geschäfts-APIs, externe Dienste und Aktionsfunktionen, die von der Intelligence-Ebene aufgerufen werden können. Diese Ebene sollte standardisierte Schnittstellen verwenden und eigene Sicherheitsrichtlinien erzwingen.
Jede Ebene erzwingt eigene Richtlinien, Identitäten und Zwischenspeicherungsstrategien, um ihre eigenen lokalisierten Zuverlässigkeits-, Sicherheits- und Leistungsanforderungen zu erreichen. Die Ebenen ermöglichen auch die fokussierte Entwicklung, Tests und Problembehandlung.
Empfehlungen
In der folgenden Tabelle sind die Empfehlungen in diesem Artikel zusammengefasst.
| Empfehlung | Beschreibung |
|---|---|
| Sicherheit und verantwortungsvolle KI-Mechanismen priorisieren. | Implementieren Sie herkömmliche Anwendungssicherheit plus KI-spezifische Sicherheitsmaßnahmen als primärer Designtreiber. Erzwingen Sie Anbietersicherheitssysteme, Eingabe-/Ausgabefilterung, Begrenzung der identitätsgebundenen Rate und Kontingente sowie Token-/Eingabeaufforderungsgrenzen. Sicherheits- und Sicherheitskontrollen müssen überprüft werden und können nicht von verwalteten Diensten übernommen werden. |
| Halten Sie Die Intelligenz vom Client fern. | Entwerfen Sie Back-End-Dienste, um übergreifende Bedenken wie Ratelimiting, Failovervorgänge und KI-Verarbeitungslogik zu verarbeiten. Abstrahieren Sie Verhalten und Intelligenz weg vom Client, um Ihre Gestaltung zukunftssicher zu gestalten und die Wartbarkeit zu verbessern. |
| Den direkten Zugriff auf Datenspeicher blockieren. | Code in KI-Systemen sollte nicht direkt auf Ihre Datenspeicher zugreifen. Leiten Sie alle Datenanfragen über eine API oder eine ähnliche Datenzugriffsabstraktion weiter, die Autorisierung erzwingt und den Benutzer- oder Mandantenkontext in Abruf und Filterung einbezieht und überträgt. Übergeben Sie die Benutzeridentität weiter, damit die Sicherheit auf Datenebene angewendet werden kann. |
| Abstrahieren Sie Ihre Modelle und Werkzeuge. | Verwenden Sie Abstraktionsebenen, um Ihre Anwendung von bestimmten Modellen, Tools und Technologien zu entkoppeln. Implementieren Sie standardisierte Schnittstellen und Protokolle, um Flexibilität bei der Entwicklung von Technologien zu bieten, wodurch Ihr Design bearbeitbarer und zukunftssicherer gestaltet wird. |
| Isolieren Sie Verhaltensweisen und Aktionen. | Entwerfen Sie klare Grenzen zwischen den Schichten: Client, Intelligenz (Routing/Orchestrierung/Agenten), Wissen (Grundlagendaten) und Werkzeuge (Business-APIs). Jede Ebene sollte ihre eigenen Richtlinien, Identitäten und Zwischenspeicherungsstrategien erzwingen, um den Strahlradius zu reduzieren und sich auf die Entwicklung zu konzentrieren. |
| Priorisieren Sie vorgefertigte Lösungen. | Verwenden Sie Software als Dienst (SaaS) oder Plattform als Dienst (PaaS), um Arbeitslastfunktionen zu verarbeiten, wenn sie Sicherheits-, Sicherheits-, Compliance- und Kontingentanforderungen erfüllen. Implementieren Sie Ausgleichskontrollen durch Gateways, die Authentifizierung, Kontingente, Sicherheit und Protokollierung erzwingen. Verwenden Sie vorkonfigurierte und vortrainierte Modelle, um die Betriebs- und Entwicklungsbelastung für Ihre Arbeitsauslastung und Ihre Betriebsteams möglichst gering zu halten. |
Unterscheiden zwischen Inferencing und intelligenten Anwendungen
Wenn Sie Ihre Anwendungsarchitektur entwerfen, bestimmen Sie zunächst, ob Sie eine inferencing-fokussierte Anwendung oder eine mit Intelligenz fokussierte Anwendung erstellen, da diese Unterscheidung Designentscheidungen fördert.
Inferenz-Anwendungen
Inferenzen-Anwendungen führen Einzelschrittvorgänge wie Zusammenfassung, Übersetzung oder Klassifizierung durch. Diese Anwendungen haben einfachere Architekturen.
Typische Architektur: Der Client kommuniziert mit einem KI-Gateway, das Authentifizierung, Kontingente, Sicherheit und Routing bereitstellt. Dieses Gateway ruft die Modellbereitstellungsebene wie Azure AI Foundry, Azure Kubernetes Service (AKS) oder verwaltete Onlineendpunkte auf. In der Praxis können die Ergebnisse für zukünftige Ableitungsaufrufe zwischengespeichert werden, bevor sie an den Client zurückgegeben werden.
Inferencing-Anwendungen enthalten in der Regel direkte Modellaufrufe, erfordern minimale Orchestrierung, konzentrieren sich auf Leistung und Durchsatz und erfordern keine komplexe Zustandsverwaltung.
Intelligente Anwendungen
Intelligente Anwendungen führen Planung, Koordination und mehrstufige Begründung durch und werden in der Regel durch Agenten und Agenten-Orchestrierung behandelt. Sie erfordern mehr Konzepte, die in ihren Architekturen berücksichtigt werden müssen.
Typische Architektur: Der Client ruft einen Agent- oder Agent-Orchestrator auf. Basierend auf den Entwurfs- oder autonomen Funktionen ruft diese Ebene eine Toolsebene auf, z. B. MCP-Server (Model Context Protocol) oder benutzerdefinierte APIs. Möglicherweise ist es für den Agenten erforderlich, auf Wissensdienste wie Suchindex, Datenbank oder Graph zuzugreifen. Modelle können während dieses Prozesses an mehreren Punkten aufgerufen werden. Das Zwischenspeichern kann auch auf mehreren Ebenen erfolgen, um den Prozess zu optimieren.
Intelligente Anwendungen verfügen in der Regel über agentenbasierte Muster und Modellsteuerung mit komplexer Workflow-Koordination, integrieren mit mehreren Datenquellen und Tools und erfordern die Gesprächs- und Kontextverwaltung.
Grundlegende KI-Anwendungs-Design-Richtlinien
Wenn Sie KI-Anwendungen entwerfen, wenden Sie die folgenden grundlegenden Richtlinien an, um robuste und wartungsfähige Systeme zu erstellen.
Beginnen Sie mit den Geschäftsergebnissen
Bevor Sie Technologien auswählen, definieren Sie klar das Geschäftsproblem, das Sie lösen. Diese Definition führt zur Technologieauswahl und zum Architekturdesign. Berücksichtigen Sie die folgenden Faktoren:
Erfolgskriterien: Definieren Sie messbare Ergebnisse, die Werte demonstrieren, z. B. Genauigkeitsverbesserungen, Kostenreduzierungen oder Benutzerzufriedenheitsbewertungen.
Anforderungen an die Benutzeroberfläche: Verstehen, wie Benutzer und Prozesse mit KI-Funktionen interagieren und welche Reaktionszeiten sie erwarten.
Regulatorische Einschränkungen: Identifizieren Sie Complianceanforderungen, die sich auf Ihre Designentscheidungen auswirken können, z. B. Datenhaltung oder Erläuterungsanforderungen.
Design für Sicherheit von Tag 1
KI-Workloads fordern von Anfang an einen Sicherheitsansatz. Implementieren Sie mehrstufige Sicherheit für alle Komponenten mithilfe von Identitätsverteilungs- und auditierbaren Steuerelementen. Weitere Informationen finden Sie unter "Strategien für das Sicherheitsdesign".
Design für Beobachtbarkeit von Anfang an
KI-Anwendungen erfordern eine Überwachung über herkömmliche Anwendungsmetriken hinaus. Integrieren Sie Observability von Anfang an in Ihr Design.
Modellleistungsnachverfolgung: Überwachen Sie Genauigkeitsabweichungen, Ableitungslatenz und Konfidenzbewertungen für Vorhersage.
Datenqualitätsüberwachung: Nachverfolgen von Änderungen der Eingabedatenverteilung, die sich auf die Modellleistung auswirken können.
Benutzerinteraktionsanalyse: Verstehen Sie, wie Benutzer mit KI-Features interagieren, um Verbesserungsmöglichkeiten zu identifizieren.
Planen für Abstraktion und zukünftige Flexibilität
Entwerfen Sie Ihr System mit Abstraktionsebenen, mit denen Sie sich anpassen können, wenn SICH KI-Technologien entwickeln:
Modellstraktion: Abstrakte Modelle hinter konsistenten Schnittstellen, um das Austauschen oder Aktualisieren ohne Anwendungsänderungen zu ermöglichen.
Standardisierte Protokolle: Bevorzugen Sie offene, dokumentierte Schnittstellen und Formate wie OpenAPI für Tools, ONNX für Modellübertragbarkeit und OpenTelemetry für Telemetrie.
Funktionsbasiertes Design: Entwerfen Sie Funktionen anstelle bestimmter Technologien, um Flexibilität zu gewährleisten.
Externalisieren von Eingabeaufforderungen und Konfigurationen
Behandeln Sie Aufforderungen als Konfiguration, die gemäß den Twelve-Factor App-Designprinzipien externisiert werden soll:
Versionskontrolle: Halten Sie Aufforderungen in der Versionsverwaltung mit klarer Bereitstellungsverfolgung, um Telemetrie- und Sicherheitsergebnisse bestimmten Aufforderungsversionen zuzuordnen.
Rollentrennung: Ermöglichen Sie Geschäftsanalysten und Domänenexperten, Aufforderungen ohne Codeänderungen zu optimieren.
Sichere Bereitstellung: Implementieren Sie kontrollierte Rolloutprozesse für aufforderungsgesteuerte Änderungen und behandeln Sie sie als signifikante Konfigurationsupdates.
Plan für die Außerbetriebnahme des Modells
Foundation-Modelle erreichen schließlich das Ende der Lebensdauer und werden von Ihrer Modellhostingplattform eingestellt. Die Modelle werden durch Modelle ersetzt, die besser funktionieren, kosteneffizienter sind, aktualisierte Schulungskenntnisse haben und neue Funktionen unterstützen. Entwerfen Sie Abstraktionen, die die Auswirkungen der zukünftigen Modellübergänge Ihrer Workload minimieren.
Anbieterstraktion: Verwenden Sie Abstraktionsebenen, die den Wechsel zwischen Modellanbietern ohne Anwendungsänderungen ermöglichen.
Versionsverwaltung: Implementieren Sie Versionsverwaltungsstrategien, die die schrittweise Migration zwischen Modellversionen unterstützen.
Fallbackstrategien: Entwerfen Sie Fallbackmechanismen für die Nichtverfügbarkeit bevorzugter Modelle.
Informationen zu Architekturdesigntechniken, die sich auf Probleme mit dem Lebenszyklus von Modellmodellen beziehen, finden Sie unter Design zur Unterstützung von Foundation-Modelllebenszyklen.
Containerisieren von Komponenten
Um sicherzustellen, dass Ihre unabhängig bereitgestellten Komponenten eigenständig sind und um die Konsistenz der Bereitstellung zu verbessern, sollten Sie die Containerisierung als Teil Ihrer Entwurfsstrategie in Betracht ziehen. Die folgenden Komponenten sollten containerisiert werden:
Microservices: Containerisieren Sie einzelne Microservices, die bestimmte Funktionen der Anwendung verarbeiten, z. B. Datenverarbeitung, Modellleitung und Benutzerauthentifizierung. Dieser Ansatz ermöglicht eine unabhängige Bereitstellung und Skalierung und erleichtert effizientere Updates und Wartung.
KI-Modelle: Containerisieren Sie KI-Modelle, um sicherzustellen, dass alle Abhängigkeiten, Bibliotheken und Konfigurationen gebündelt sind. Dieser Ansatz isoliert die Modellumgebung vom Hostsystem, um Versionskonflikte zu verhindern und ein einheitliches Verhalten in verschiedenen Bereitstellungsumgebungen sicherzustellen.
Datenverarbeitungspipelines: Containerisieren Sie Datenverarbeitungsaufgaben, die der Modellinferenz vorangehen oder folgen, wie zum Beispiel Datenbereinigung, Transformation und Merkmalsextraktion. Dieser Ansatz verbessert die Reproduzierbarkeit und vereinfacht die Verwaltung von Abhängigkeiten.
Infrastrukturdienste: Containerisieren Sie Dienste, die Infrastrukturunterstützung bieten, z. B. Datenbanken und Zwischenspeicherungsebenen. Dieser Ansatz trägt dazu bei, die Versionskonsistenz aufrechtzuerhalten und die Skalierung und Verwaltung dieser Komponenten zu vereinfachen.
Implementieren von mehrschichtigen Caching-Strategien
Ein Multi-Layer-Caching-Ansatz kann dazu beitragen, die Leistung zu verbessern und Kosten in Ihren KI-Anwendungen zu reduzieren. Erwägen Sie die Implementierung der Zwischenspeicherung auf mehreren Ebenen ihres Anwendungsstapels:
Ergebnis- und Antwortzwischenspeicherung: Verwenden Sie diesen Ansatz, um Antworten für identische oder semantische ähnliche Abfragen wiederzuverwenden, falls dies für die Situation geeignet ist. In Arbeitslasten, bei denen Antworten zwischengespeichert werden können, kann dieser Ansatz Aufrufe für Ihr Modell erheblich reduzieren, was die Leistung verbessert und modellaufrufkosten reduziert.
Zwischenspeicherung von Abruf- und Grundlagen-Ausschnitten: Speichern Sie häufig abgerufene Wissensfragmente und Grundlagendaten zwischen, um wiederholte Datenbank- und Suchabfragen oder Daten-API-Vorgänge zu vermeiden.
Modellausgabezwischenspeicherung: Zwischenergebnisse des Modells zwischenspeichern, die für Anforderungen wiederverwendet werden können.
Wenn Sie Ihren Zwischenspeicheransatz auf jeder Ebene entwerfen, müssen Sie verstehen, welche Daten häufig abgerufen werden und wie die Rollen und Berechtigungen der Benutzer der Anwendung beeinflussen können, auf welche Daten zugegriffen werden kann. Damit die Zwischenspeicherung wirksam ist, müssen Sie eine gesunde Cachetrefferrate erwarten. Konzentrieren Sie sich auf das Zwischenspeichern für hochfrequentierte Pfade wie Produktkatalogsuchen, während gleichzeitig die Leerung des Caches überwacht wird.
Cacheschlüsselkomponenten: Zwischengespeicherte Werte müssen an bestimmte Laufzeitfaktoren innerhalb Ihrer Workload gebunden sein. Schließen Sie Werte wie Mandanten- oder Benutzeridentität, Richtlinienkontext, Modellversion und Eingabeaufforderungsversion in Cacheschlüssel ein, um sicherzustellen, dass ein zwischengespeicherter Wert nur bei Bedarf für die Anforderung zurückgegeben wird.
TTL-Richtlinien (Time-to-Live): Legen Sie geeignete Ablaufzeiten basierend auf den Anforderungen an die Datenaktualisierung und der Vertraulichkeit von Inhalten fest.
Ungültige Hooks: Implementieren Sie Cache-Ungültigheitsauslöser für Datenaktualisierungen, Modelländerungen und Aufforderungsänderungen.
Datenschutz des Benutzers: Benutzerbezogene Inhalte niemals zwischenspeichern, es sei denn, sie werden ordnungsgemäß nach Schlüssel und Richtlinie gecachet. Im Allgemeinen eignet sich das Zwischenspeichern am besten für Daten, die für mehrere Benutzer gelten. Zwischenspeichern Sie in den meisten Situationen nicht für einen einzelnen Benutzer. Vermeiden Sie das Zwischenspeichern von benutzerspezifischen Antworten als gültige Antwort für alle Benutzer. Beispielsweise ist eine zwischengespeicherte Antwort für "Wie viele Stunden bezahlter Abwesenheitsstunden?" nur für den Benutzer geeignet, der die Daten anfordert, auch wenn andere Benutzer dieselbe Abfrage präsentieren.
Risiko: Die Zwischenspeicherung verbessert die Leistung und verringert die Kosten, führt jedoch zu Sicherheits- und Datenfrischigkeitsrisiken. Zu diesen Risiken gehören Datenlecks, veraltete Daten und Datenschutzverletzungen.
Bewerten Sie die Verwendung von Orchestrierung und Agenten in KI-Lösungen für generative Systeme.
Wählen Sie den geeigneten Koordinierungsansatz basierend auf den Anforderungen Ihrer Anwendung für Determinismus und explorative Funktionen aus.
Wann sollte Orchestrierung verwendet werden
Ein Orchestrator verwaltet einen Workflow, indem er die Kommunikation zwischen den verschiedenen Komponenten der KI-Lösung koordiniert, die sonst in komplexen Workloads schwer zu verwalten wäre. Es wird empfohlen, einen Orchestrator in Ihr Design zu integrieren, wenn Ihre Workload eines der folgenden Merkmale benötigt:
Vorhersehbare Workflows: Mehrstufige Prozesse mit klar definierten Sequenzen und Entscheidungspunkten.
Complianceanforderungen: Szenarien, in denen Sie sicherstellen müssen, dass bestimmte Schritte für die Einhaltung gesetzlicher Vorschriften ausgeführt werden.
Leistungskritische Pfade: Workflows, bei denen Latenz und Ressourcennutzung eng gesteuert werden müssen.
Einfache Koordination: Einfache Aufgabendelegierung, die keine dynamische Begründung erfordert.
Wann die Agentzusammenarbeit verwendet werden soll
Ein Agent ist eine Möglichkeit, intelligentes Verhalten in Ihrer Applikation zu ummanteln, zu extrahieren und zu definieren. Agents bieten kontextgebundene Funktionen und können mit Orchestrierungsframeworks wie Semantic Kernel, Autogen oder Microsoft Agent Framework arbeiten.
Verwenden Sie agentengesteuerte Kooperationsansätze für explorative oder strukturierte Aufgaben.
Mehrstufige Begründung: Aufgaben, die eine Planung und Entscheidung über mehrere Schritte erfordern
Werkzeugkoordination: Komplexe Workflows, die mehrere spezialisierte Tools und Dienste koordinieren
Adaptives Verhalten: Szenarien, in denen das System seinen Ansatz basierend auf Zwischenergebnissen oder sich ändernden Bedingungen anpassen muss
Kontextverwaltung: Anwendungen, die den Unterhaltungszustand und den Benutzerkontext über Interaktionen hinweg verwalten müssen
Überlegungen zum Agententwurf
Berücksichtigen Sie beim Entwerfen agentbasierter Systeme Isolation und Grenzen, Kommunikationsmuster und Toolstraktionsstrategien. Entwerfen Sie klare Grenzen zwischen verschiedenen Agentenfunktionen, um den Strahlradius zu reduzieren und die Testbarkeit zu verbessern. Verwenden Sie etablierte Muster wie Themenwarteschlangensysteme für die Agentkommunikation. Abstrakte Toolfunktionen mithilfe standardisierter Schnittstellen, um die Agentflexibilität zu ermöglichen.
Von Bedeutung
Fügen Sie nicht automatisch Agenten zwischen der zu erfüllenden Aufgabe und den Modellaufrufen hinzu. Bewerten Sie, ob die bereitgestellte Intelligenz die Komplexität von Agentmustern erfordert oder ob direkte Modellaufrufe für Ihren Anwendungsfall ausreichend sind. Agentebenen fügen Latenz hinzu, erweitern den Oberflächenbereich und komplizieren Tests.
Agent-Status-Persistenz
Bei Multi-Turn-Unterhaltungen und lang ausgeführten Aufgaben entwerfen Sie Agents mit dauerhafter Zustandspersistenz, damit sie Kontext über Anforderungen, Sitzungen oder Bereitstellungszyklen hinweg beibehalten können. Verwenden Sie sicheren, freigegebenen Speicher wie Azure Cosmos DB, Azure Managed Redis oder Azure Table Storage, um relevante Metadaten, aufgezeichnete Unterhaltungen und Den Vorgangsfortschritt zu speichern. Begrenzen Sie den persistierten Zustand auf die minimal erforderlichen Informationen, um Datenschutzrisiken und Token-Overhead zu reduzieren, und implementieren Sie TTL-Richtlinien, um veraltete Daten ablaufen zu lassen. Stellen Sie sicher, dass Agenten den Zustand rehydratisieren können, um Workflows fortzusetzen, ohne die abgeschlossenen Schritte zu wiederholen.
Hybridansätze
Erwägen Sie Hybriddesigns, bei denen Orchestratoren bestimmte Teilvorgänge an Agents delegieren.
Strukturierte Workflows mit flexiblen Schritten: Verwenden Sie die Orchestrierung für den gesamten Workflow, während Agents komplexe einzelne Schritte verarbeiten können.
Eskalationsmuster: Beginnen Sie mit der deterministischen Orchestrierung und eskalieren Sie zu agentenbasierten Schlussfolgerungen, wenn die vorher festgelegte Logik nicht ausreicht.
Domänenspezifische Begründung: Verwenden Sie die Orchestrierung für domänenübergreifende Koordination, während Sie spezielle Agents für domänenspezifische Aufgaben einsetzen.
Ausgleich: Die Orchestrierung bietet Vorhersagbarkeit und Kontrolle, beschränkt aber die Anpassungsfähigkeit. Die Zusammenarbeit von Agenten ermöglicht dynamische Problemlösung, führt jedoch zu Variabilität und Komplexität.
Implementieren von KI-Gateways für die Richtlinienerzwingung
Verwenden Sie KI-Gateways in Ihrem Entwurf, um Gateway-Offloading-, Gatewayrouting- und Gatewayaggregationsfunktionen innerhalb Ihrer Workload bereitzustellen. Gateways werden in der Regel mithilfe von Plattformen wie Azure API Management oder über benutzerdefinierte Codelösungen implementiert, z. B. eine Envoy- oder NGINX-Implementierung. Gateways können für Proxyanforderungen an Modellanbieter, Agentendpunkte, Tools und Wissensspeicher verwendet werden.
Kernfunktionen des KI-Gateways
Ein KI-Gateway kann sich mit querschneidenden Bedenken befassen und als Eine Ebene von Abstraktion und Dereferenzierung aus dem Zielsystem dienen. Berücksichtigen Sie beim Entwerfen einer KI-Gatewaystrategie die folgenden Funktionen:
Protokollnormalisierung: Normalisieren Sie für gemeinsame KI-Funktionen über verschiedene Anbieter die Schnittstellen auf ein einheitliches Protokoll über das Gateway, um die Wartbarkeit zu verbessern. Verwenden Sie für anbieterspezifische Features das Gateway als Reverseproxy ohne Normalisierung.
Authentifizierung und Autorisierung: Erzwingen Sie die identitätsbasierte Zugriffssteuerung, und verteilen Sie den Benutzerkontext an nachgeschaltete Dienste.
Zinsbegrenzung und Kontingente: Implementieren Sie Benutzer-, Anwendungs- oder Mandantenratenlimits und Tokenkontingente, um Missbrauch zu verhindern und Kosten zu verwalten.
Anforderungs- und Antwortfilterung: Wenden Sie Eingabeüberprüfungen, Eingabeaufforderungsfilterung und Ausgabesicherheitsprüfungen auf Gatewayebene an.
Token- und Eingabeaufforderungsgrenzen: Erzwingen Sie maximale Tokenbeschränkungen und Aufforderungsgrößenbeschränkungen, um die Ressourcenauslastung zu verhindern, indem Sie Anforderungen, die mehr Anforderungen für das System darstellen, als gewünscht oder möglich ablehnen.
Modellroutingrichtlinien: Leiten Sie Anforderungen an geeignete Modelle basierend auf Benutzerberechtigungen, Anforderungsmerkmalen oder Kostenoptimierungszielen weiter. Gateways werden häufig verwendet, um eine Übertragung zwischen mehreren Modellen zu implementieren, wenn Kapazität oder Preise auf einem Modell verbraucht werden, aber in einer anderen Modellimplementierung verfügbar sind.
Headereinfügung und Transformation: Fügen Sie die erforderlichen Header, den Benutzerkontext und die Sicherheitstoken für nachgeschaltete Dienste hinzu.
Rückbuchungsverwaltung: Weisen Sie Gebühren für Abteilungen zu, die KI-Workload-Komponenten gemeinsam nutzen, z. B. eine einzelne Azure OpenAI-Instanz.
Tipp
Einen ausführlichen Überblick darüber, wie ein KI-Gateway für grenzüberschreitende Bedenken verwendet werden kann und wie ein Gateway zusätzliche Komplexität in Ihre Architektur einführt, finden Sie unter Access Azure OpenAI und anderen Sprachmodellen über ein Gateway.
Szenarien mit mehreren Anbietern
KI-Gateways sind besonders hilfreich, wenn Sie mehrere Modellanbieter oder Hostingplattformen für gemeinsam genutzte Modelle verwenden. Diese Gateways sind häufig zentrale Ressourcen innerhalb Ihrer Organisation, auf die Ihre Arbeitslast empfohlen oder erforderlich ist, sich zu stützen. Eine ausreichend komplexe Arbeitslast könnte auch davon profitieren, diese Abstraktionsebene innerhalb ihres eigenen Designs aufzubauen.
Einheitliche Schnittstelle: Stellen Sie eine einzelne API-Oberfläche bereit, die mehrere Back-End-Anbieter abstrahiert.
Failover und Redundanz: Leiten Sie Anfragen an alternative Anbieter weiter, wenn die primären Dienste nicht verfügbar sind.
Kostenoptimierung: Leiten Sie Anforderungen basierend auf Anforderungsmerkmalen an den kostengünstigsten Anbieter weiter.
Von Bedeutung
Verlassen Sie sich nicht ausschließlich auf SDK-Wiederholungen und Timeouts. Erzwingen Sie Grenzwerte, Authentifizierung, Kontingente und Timeouts auf der Gateway- und Richtlinienebene für umfassende Kontrolle.
Verwenden von KI-Anwendungsentwurfsmustern
Die Branche definiert mehrere gängige Entwurfsmuster für KI-Anwendungen. Sie können sie verwenden, um Ihr Design und Ihre Implementierung zu vereinfachen. Zu diesen Entwurfsmustern gehören die folgenden Typen:
Modell-Ensembling: Dieses Entwurfsmuster kombiniert Vorhersagen aus mehreren Modellen, um die Genauigkeit und Robustheit zu verbessern, indem die Einschränkungen einzelner Modelle eingeschränkt werden.
Microservices-Architektur: Dieses Entwurfsmuster trennt Komponenten in unabhängig bereitgestellte Dienste, um Skalierbarkeit und Wartung zu verbessern. Es ermöglicht Teams, gleichzeitig an verschiedenen Teilen der Anwendung zu arbeiten.
Ereignisgesteuerte Architektur: Dieses Entwurfsmuster verwendet Ereignisse, um Aktionen auszulösen, die entkoppelte Komponenten und Echtzeitverarbeitung ermöglichen, um das System reaktionsfähiger und anpassungsfähiger für die Änderung von Daten zu machen.
Grundlagen- und Wissensintegrationsmuster
Viele KI-Anwendungen greifen auf externe Wissensquellen zu, um genaue, aktuelle Informationen bereitzustellen. Behandeln Sie den Abruf als Agentenwerkzeug oder Wissensabruf hinter einem Dienst, der die Autorisierung erzwingt.
Wissensrouting: Direkte Abfragen an geeignete Wissensquellen basierend auf Abfragetyp, Domäne oder Benutzerkontext.
Kontextschichtung: Erstellen Sie Systeme, die mehrere Wissensquellen und Kontexttypen kombinieren können, um umfassende Antworten bereitzustellen.
Dynamische Verankerung: Implementieren Sie Systeme, die ihre Wissensquellen und Verankerungsstrategien basierend auf sich ändernden Anforderungen oder der Datenverfügbarkeit anpassen können.
Autorisierungsfähiges Abrufen: Stellen Sie sicher, dass Verknüpfungsdienste beim Abrufen von Informationen Benutzerberechtigungen und Mandantenkontext anwenden.
Ein tieferes Verständnis für den Entwurf eines zweckgebundenen Vektorindex, der die für Ihren Workload spezifischen fundierenden Daten für die semantische Suche unterstützt, finden Sie unter Entwerfen und Entwickeln einer RAG-Lösung (Retrieval-Augmented Generation).
Routingmuster mit mehreren Modellen
Die Verwendung eines Modellrouters kann die Verfügbarkeit Ihrer Workload verbessern, indem Anforderungen an ein fehlerfreies Modell weitergeleitet werden, wenn sich ein anderes Modell in einem fehlerhaften Zustand befindet, oder es kann dazu beitragen, die Qualität der Antworten zu verbessern, indem das beste Modell für eine bestimmte Aufgabe in Echtzeit ausgewählt wird. Modellrouter fügen Flexibilität hinzu, stellen aber eine zusätzliche Variabilität vor. Verwenden Sie sie selektiv:
Wann Modellrouter verwendet werden sollen: Verwenden Sie einen Modellrouter, wenn Ihre Workload zusätzliche Variabilität und Latenz tolerieren kann, wenn die Benutzererfahrung eine Vielzahl von Modelltypen erwartet, oder wenn Sie Kosten und Fähigkeiten über verschiedene Modelle hinweg ausgleichen müssen.
Gründe für die Vermeidung von Modellroutern: Verwenden Sie keinen Modellrouter in Szenarien, in denen die Workload präzise Antworten benötigt, die für bestimmte Aufgaben optimiert sind, wenn Sie fein abgestimmte Modelle mit schmalen Zielen auf Dienstebene (SLOs) verwenden oder wenn deterministisches Verhalten, einschließlich konsistenter Leistung, für Ihren Anwendungsfall von entscheidender Bedeutung ist.
Wenn Sie Ihrer Anwendung einen Modellrouter hinzufügen, bevorzugen Sie das anbietereigene Routing, wenn verfügbar, und überwachen Sie die Auswirkungen auf die Leistung und die Benutzerzufriedenheit.
Ausgleich: Modellrouter bieten Flexibilität und Kostenoptimierung, fügen jedoch nicht deterministisches Verhalten und Komplexität zum Testen und Zur Problembehandlung hinzu.
Wenn es sich bei Ihrer Workload um eine mandantenfähige Anwendung handelt, lesen Sie den Leitfaden zum Entwerfen einer sicheren RAG-Inferencing-Lösung für Empfehlungen zum Zugriff auf mandantenspezifische Daten.
Wann man Entwurfsmuster verwenden sollte
Erwägen Sie die Verwendung dieser Entwurfsmuster für die folgenden Szenarien:
Komplexe Workflows: Wenn Sie komplexe Workflows oder Interaktionen zwischen mehreren KI-Modellen haben, können Muster wie RAG oder Microservices dabei helfen, Komplexität zu verwalten und eine klare Kommunikation zwischen Komponenten sicherzustellen.
Skalierbarkeitsanforderungen: Wenn die Nachfrage nach Ihrer Anwendung schwankt, ermöglicht ein Muster wie Microservices, dass einzelne Komponenten unabhängig voneinander skaliert werden können, um unterschiedliche Lasten aufzunehmen, ohne die Gesamtleistung des Systems zu beeinträchtigen.
Datengesteuerte Anwendungen: Wenn Ihre Anwendung umfangreiche Datenverarbeitung erfordert, kann eine ereignisgesteuerte Architektur Echtzeit-Reaktionsfähigkeit und effiziente Datenverarbeitung bieten.
Hinweis
Kleinere Anwendungen oder PoCs (Proof of Concepts) profitieren in der Regel nicht von diesen Entwurfsmustern. Diese Anwendungen sollten auf Einfachheit ausgelegt sein. Ebenso ist die Verwendung eines einfachen Designs, das später umgestaltet werden kann, ein besserer Ansatz als die Übernahme eines komplexen Entwurfsmusters, wenn Sie Ressourceneinschränkungen wie Budget, Zeit oder Mitarbeiter haben.
Auswählen der richtigen Frameworks, Bibliotheken und Protokolle
Die Wahl von Frameworks und Bibliotheken ist eng mit dem Anwendungsdesign verbunden. Sie wirken sich auf Leistung, Skalierbarkeit und Wartung aus. Designanforderungen können ihre Framework-Auswahl jedoch einschränken. Die Verwendung des Semantischen Kernel SDK fördert z. B. häufig ein mikroservicesbasiertes Design, bei dem jeder Agent oder jede Funktion in seinem eigenen Dienst gekapselt wird. Berücksichtigen Sie beim Auswählen von Frameworks und Bibliotheken die folgenden Faktoren:
Anwendungsanforderungen: Die Anforderungen der Anwendung, wie Echtzeitverarbeitung oder Batchverarbeitung, können die Wahl des Frameworks beeinflussen. Wenn die Anwendung z. B. eine geringe Latenz erfordert, müssen Sie möglicherweise ein Framework verwenden, das über asynchrone Funktionen verfügt.
Integrationsanforderungen: Für das Design sind möglicherweise bestimmte Integrationen mit anderen Systemen oder Diensten erforderlich. Wenn ein Framework die erforderlichen Protokolle oder Datenformate nicht unterstützt, müssen Sie den Entwurf möglicherweise überdenken oder ein anderes Framework auswählen.
Teamkompetenz: Die Fähigkeiten des Entwicklungsteams können die Framework-Auswahl einschränken. Ein Design, das auf einem weniger vertrauten Framework basiert, kann zu einer erhöhten Entwicklungszeit und Komplexität führen, daher sollten Sie ein vertrautes Tool verwenden.
Community und Support: Betrachten Sie die Reife und das Unterstützungsökosystem des Frameworks. Aktive Communitys und umfassende Dokumentation reduzieren Implementierungsrisiken.
Leistungsmerkmale: Bewerten Sie die Frameworkleistung für Ihren spezifischen Anwendungsfall, einschließlich Speicherauslastung, Startzeit und Ableitungsgeschwindigkeit.
Übernehmen Sie standardisierte Toolprotokolle, um die Governance zu verbessern und Flexibilität zu ermöglichen:
Verwenden Von MCP-Servern: Verwenden Sie MCP oder einen anderen geeigneten Standard, um Geschäftsfunktionen als auffindbare Toolserver einzuschließen.
Verwenden Sie Spezifikationen, die über eine breite SDK-Unterstützung verfügen. Definieren Sie z. B. Tools mithilfe von OpenAPI-Spezifikationen für konsistente Schnittstellendokumentation und Validierung.
Werbefunktionen: Entwerfen Sie Tools, um ihre Funktionen zu bewerben, wodurch Orchestratoren Anforderungen entsprechend ermitteln und weiterleiten können. Umschließen Sie beispielsweise ERP-Lese- und Schreibvorgänge für Enterprise-Ressourcenplanung als Toolserver, der Funktionen angibt. Mit diesem Ansatz können Sie die ERP-Interaktionen optimieren, ohne die Agentlogik zu ändern.
Protokolleinstellungen
Wenn Sie Protokolle und Standards auswählen, bevorzugen Sie offene, dokumentierte Schnittstellen gegenüber proprietären Formaten. Es gibt viele neue Protokolle in der Branche. Wenn Sie Ihre Agenten-zu-Agent- und Kontrollanwendungsfälle berücksichtigen, sollten Sie technische Schulden berücksichtigen, die aus Protokollen stammen können, die sich unter einer schnellen Entwicklung oder Veraltetheit befinden. Ebenen der Abstraktion können dazu beitragen, dass Ihr Design in verschiedenen KI-Frameworks und Anbietern interoperabel bleibt.
Entwerfen einer Sicherheitsstrategie für die KI-Komponenten Ihrer Workload
KI-Komponenten erfordern Sicherheitsüberlegungen über herkömmliche Anwendungssicherheit hinaus. Implementieren Sie Sicherheitsmaßnahmen auf allen Anwendungsebenen, während Sie Standardidentitätsanbieter wie Microsoft Entra ID für die grundlegende Authentifizierung und Autorisierung verwenden.
Kernsicherheitsprinzipien
Implementieren Sie die folgenden grundlegenden Sicherheitspraktiken:
Standardauthentifizierung und Autorisierung: Verwenden Sie etablierte Identitätsanbieter und rollenbasierte Zugriffssteuerungssysteme (RBAC).
Sicherheit der Datenlinie mit Benutzerkontextverteilung: Stellen Sie sicher, dass Zugriffssteuerungen in der gesamten Datenpipeline verwaltet werden. Übergeben Sie die Benutzeridentität, indem Sie im Auftrag von Abläufen verwenden, sodass Benutzer nur auf die Ergebnisse zugreifen können, die auf den Daten basieren, die ihnen angezeigt werden dürfen.
Prüfpfade: Implementieren Sie eine detaillierte Protokollierung von KI-Interaktionen für Compliance- und Sicherheitsüberwachung.
KI-spezifische Sicherheitsmaßnahmen
Behandeln Sie Sicherheitsprobleme, die für KI-Anwendungen einzigartig sind:
Befehlsfilterung und Injektionsprävention: Implementieren Sie Schutzmaßnahmen gegen Befehlsinjektionsangriffe, die das Verhalten der KI manipulieren oder vertrauliche Informationen extrahieren können.
Sichere Toolverwendungssteuerelemente: Wenn Sie Agents mit Toolzugriff verwenden, implementieren Sie Steuerelemente, um schädliche Aktionen zu verhindern und die Verwendung von Tools vor dem Aufruf zu überprüfen.
Agentverhaltensüberwachung: Überwachen Sie Agentaktionen und Entscheidungen, um ungewöhnliche oder potenziell schädliche Verhaltensmuster zu erkennen.
Modellzugriffskontrolle: Implementieren Sie differenzierte Berechtigungen für verschiedene Modelle und Funktionen in Ihrem KI-System.
Reaktionsfilterung und Sicherheitsüberprüfungen: Filtern Sie KI-Ausgaben, um die Generierung schädlicher, unangemessener oder vertraulicher Inhalte zu verhindern.
Sicherheitsbasierte Erdung
Gehen Sie über die reine Verhinderung des direkten Datenbankzugriffs hinaus und implementieren Sie einen sicherheitsbewussten Wissensabruf.
Identitätsweitergabe: Übergeben Sie Microsoft Entra-Gruppenansprüche oder gleichwertige Identitätsinformationen an Wissenstoolaufrufe, sodass Basisdienste keine nicht autorisierten Daten oder Medien abrufen.
Gruppen- und Zugriffssteuerungsliste (ACL)-basiertes Kürzen: Implementieren Sie die Filterung basierend auf Sicherheitsgruppen und ACLs auf der Wissensebene.
Prüfbare Ablehnungen: Protokoll- und Überwachungsprotokollierungsanforderungsverweigerungen, die durch unzureichende Berechtigungen verursacht werden.
Autorisierungserzwingung: Setzen Sie voraus, dass der Code zwischen Agents und Wissensquellen liegt, um Autorisierungsrichtlinien zu erzwingen.
Sie können beispielsweise Microsoft Entra-Gruppenansprüche an den Aufruf des Wissenstools übergeben, um sicherzustellen, dass nie unbefugte Dokumente abgerufen werden. Diese Konfiguration garantiert zwischengespeicherte Ergebnisse und stellt sicher, dass KI-Antworten Die Benutzerberechtigungen respektieren.
Berücksichtigen Sie nicht-funktionale Anforderungen
Ihre Arbeitsauslastung kann nicht-funktionale Anforderungen haben, die aufgrund von Faktoren, die KI-Technologien inhärent sind, Herausforderungen darstellen.
Latenz von Modellausschlüssen oder Timeouts: KI-Anwendungen erfordern häufig Echtzeit- oder Nahezu-Echtzeitantworten. Das Design für geringe Latenzzeiten ist entscheidend. Es umfasst die Optimierung der Modellarchitektur, der Datenverarbeitungspipeline und der Hardwareressourcen. Die Implementierung von Caching-Strategien und die Sicherstellung des effizienten Ladens von Modellen sind ebenfalls unerlässlich, um Timeouts zu vermeiden und zeitnahe Antworten bereitzustellen.
Einschränkungen des Token- oder Anforderungsdurchsatzes: Viele KI-Dienste legen Beschränkungen für die Anzahl der Token oder den Durchsatz von Anforderungen fest, insbesondere bei cloudbasierten Modellen. Das Design für diese Beschränkungen erfordert eine sorgfältige Verwaltung der Eingabegrößen, das Batching von Anfragen, wenn dies erforderlich ist, und möglicherweise die Implementierung von Mechanismen zur Begrenzung der Rate oder der Warteschlange, um die Erwartungen der Benutzer zu erfüllen und Dienstunterbrechungen zu vermeiden.
Kosten- und Rückbuchungsszenarien: Das Entwerfen für Kostentransparenz umfasst die Implementierung von Nutzungsnachverfolgungs- und Berichterstellungsfeatures, die Chargebackmodelle vereinfachen. Diese Funktionen ermöglichen es Ihrer Organisation, Kosten exakt auf die einzelnen Abteilungen zu verteilen. Die Chargeback-Verwaltung wird in der Regel von einem API-Gateway wie API Management behandelt.
Modellgenauigkeit und -drift: KI-Modelle können sich im Laufe der Zeit verschlechtern, wenn sich Datenmuster ändern. Entwerfen Sie Überwachungssysteme, um Genauigkeitsabweichungen zu erkennen und automatisierte Umschulungspipelinen bei Bedarf zu implementieren.
Compliance und Erklärungsfähigkeit: Einige Branchen erfordern erklärungsfähige KI-Entscheidungen. Entwerfen Sie Ihr System so, dass es bei Bedarf Gründe für KI-generierte Ausgaben erfassen und bereitstellen kann.
Datenschutz und Wohnsitz: Stellen Sie sicher, dass Ihr Design die Datenschutzanforderungen erfüllt, einschließlich der Möglichkeit, Benutzerdaten zu löschen und geografische Datenhaltungsregeln einzuhalten.