Auf Englisch lesen

Teilen über


Semantische Kernelkomponenten

Auswählen einer Programmiersprache

Der semantische Kernel bietet viele verschiedene Komponenten, die einzeln oder zusammen verwendet werden können. Dieser Artikel enthält eine Übersicht über die verschiedenen Komponenten und erläutert die Beziehung zwischen ihnen.

KI-Dienstverbinder

Die Semantic Kernel KI-Dienst-Konnektoren bieten eine Vermittlungsebene, die mehrere KI-Diensttypen von verschiedenen Anbietern über eine gemeinsame Schnittstelle verfügbar macht. Zu den unterstützten Diensten gehören Chat-Vervollständigung, Textgenerierung, Einbettungsgenerierung, Text zu Bild, Bild zu Text, Text zu Audio und Audio zu Text.

Wenn eine Implementierung beim Kernel registriert ist, werden standardmäßig die Dienste für Chat-Abschluss oder Textgenerierung bei allen Methodenaufrufen des Kernels verwendet. Keiner der anderen unterstützten Dienste wird automatisch verwendet.

Tipp

Weitere Informationen zur Verwendung von KI-Diensten finden Sie unter Hinzufügen von KI-Diensten zum semantischen Kernel.

Vektorspeicher (Speicher) Anschlüsse

Die Connectors für den semantischen Kernelvektorspeicher stellen eine Abstraktionsebene bereit, die Vektorspeicher von verschiedenen Anbietern über eine gemeinsame Schnittstelle verfügbar macht. Der Kernel verwendet keinen registrierten Vektorspeicher automatisch, aber die Vektorsuche kann einfach als Plug-In für den Kernel verfügbar gemacht werden, in diesem Fall wird das Plug-In für Prompt-Vorlagen und das KI-Modell für Chatabschluss verfügbar gemacht.

Tipp

Weitere Informationen zur Verwendung von Speicheranschlüssen finden Sie unter Hinzufügen von KI-Diensten zum Semantischen Kernel.

Funktionen und Plug-Ins

Plugins sind benannte Funktionscontainer. Jede kann eine oder mehrere Funktionen enthalten. Plugins können mit dem Kernel registriert werden, wodurch der Kernel sie auf zwei Arten verwenden kann:

  1. Bewerben Sie sie bei der Chat-Vervollständigungs-KI, damit die KI sie zur Ausführung auswählen kann.
  2. Stellen Sie sie zur Verfügung, um während des Renderings aus einer Vorlage aufgerufen zu werden.

Funktionen können problemlos aus vielen Quellen erstellt werden, darunter aus nativem Code, OpenAPI-Spezifikationen, ITextSearch-Implementierungen für RAG-Szenarien, aber auch aus Promptvorlagen.

PromptTemplates, NativeCode, OpenAPI-Spezifikationen und TextSearch können in Plug-Ins umgewandelt werden.

Tipp

Weitere Informationen zu verschiedenen Plug-In-Quellen finden Sie unter Was ist ein Plug-In?.

Tipp

Weitere Informationen zu Werbe-Plugins für die Chat-Vervollständigungs-KI finden Sie unter Funktionsaufrufe mit Chat-Vervollständigung.

Eingabeaufforderungsvorlagen

Mit Prompt-Vorlagen kann ein Entwickler oder Prompt-Ingenieur eine Vorlage erstellen, die Kontext und Anweisungen an die KI mit der Benutzereingabe und Funktionsausgabe kombiniert. Die Vorlage kann z. B. Anweisungen für das Chat-Abschluss-KI-Modell, Platzhalter für Benutzereingaben sowie hartcodierte Aufrufe an Plug-ins enthalten, die immer ausgeführt werden müssen, bevor das Chat-Abschluss-KI-Modell aufgerufen wird.

Vorlagen können auf zwei Arten verwendet werden:

  1. Als Ausgangspunkt eines Chat-Vervollständigungsflusses, indem der Kernel aufgefordert wird, die Vorlage zu rendern und das KI-Modell "Chatabschluss" mit dem gerenderten Ergebnis aufzurufen.
  2. Als Plug-In-Funktion, sodass sie auf die gleiche Weise wie jede andere Funktion aufgerufen werden kann.

Wenn ein Eingabeaufforderungs-Template verwendet wird, wird es zunächst gerendert, und alle hartcodierten Funktionsreferenzen, die es enthält, werden ausgeführt. Die gerenderte Eingabeaufforderung wird dann an das KI-Modell zum Abschluss des Chats übergeben. Das von der KI generierte Ergebnis wird an den Aufrufer zurückgegeben. Wenn die Eingabeaufforderungsvorlage als Plugin-Funktion registriert wurde, wurde die Funktion möglicherweise für die Ausführung durch das Chat Completion KI-Modell ausgewählt, und in diesem Fall ist der Aufrufer Semantic Kernel, im Auftrag des KI-Modells.

Die Verwendung von Eingabeaufforderungsvorlagen als Plugin-Funktionen auf diese Weise kann zu ziemlich komplexen Abläufen führen. Betrachten Sie z. B. das Szenario, in dem eine Eingabeaufforderungsvorlage A als Plug-In registriert wird. Gleichzeitig wird eine andere Eingabeaufforderungsvorlage B möglicherweise an den Kernel übergeben, um den Chatabschlussablauf zu starten. B könnte einen fest programmierten Aufruf von Ahaben. Dies würde zu den folgenden Schritten führen:

  1. B Rendering wird gestartet, und die Eingabeaufforderungsausführung findet einen Verweis auf A
  2. A wird gerendert.
  3. Die gerenderte Ausgabe von A wird an das KI-Modell zum Abschluss des Chats übergeben.
  4. Das Ergebnis des KI-Modells für den Chatabschluss wird an Bzurückgegeben.
  5. Das Rendern von B ist abgeschlossen.
  6. Die gerenderte Ausgabe von B wird an das KI-Modell zum Abschluss des Chats übergeben.
  7. Das Ergebnis des KI-Modells für den Chatabschluss wird an den Anrufer zurückgegeben.

Berücksichtigen Sie auch das Szenario, in dem kein hardcodierter Aufruf von B zu Avorhanden ist. Wenn Funktionsaufrufe aktiviert sind, kann das Chat Completion KI-Modell dennoch entscheiden, dass A aufgerufen werden soll, da Daten oder Funktionen erforderlich sind, die A bereitstellen kann.

Das Registrieren von Eingabeaufforderungsvorlagen als Plug-In-Funktionen ermöglicht die Möglichkeit, Funktionen zu erstellen, die mithilfe der menschlichen Sprache anstelle des tatsächlichen Codes beschrieben werden. Durch die Trennung der Funktionalität in ein solches Plug-In kann das KI-Modell darüber separat außerhalb des Hauptausführungsflusses nachdenken, was zu höheren Erfolgsraten führen kann, da es sich zu einem Zeitpunkt auf ein einzelnes Problem konzentrieren kann.

In dem folgenden Diagramm sehen Sie einen einfachen Ablauf, der aus einer Vorlage für eine Eingabeaufforderung gestartet wird.

PromptTemplates können vom Kernel ausgeführt werden, wobei dieser die Vorlage rendert, alle erforderlichen Funktionen aufruft und dann das KI-Modell zur Chat-Vervollständigung aufruft, um eine Antwort zu erhalten oder weitere Funktionen zu aktivieren.

Tipp

Weitere Informationen zu Prompt-Vorlagen finden Sie unter Was sind Prompts?.

Filter

Filter bieten eine Möglichkeit, benutzerdefinierte Aktionen vor und nach bestimmten Ereignissen während des Chatabschlussflusses auszuführen. Zu diesen Ereignissen gehören:

  1. Vor- und Nachher-Funktionsaufruf.
  2. Vor und nach dem Anzeigen der Eingabeaufforderung.

Filter müssen beim Kernel registriert werden, um während des Chatabschlussflusses aufgerufen zu werden.

Beachten Sie, dass Eingabeaufforderungsvorlagen vor der Ausführung immer in kernelFunctions konvertiert werden und sowohl Funktions- als auch Eingabeaufforderungsfilter für eine Eingabeaufforderungsvorlage aufgerufen werden. Da Filter geschachtelt sind, wenn mehrere verfügbar sind, sind Funktionsfilter die äußeren Filter und Eingabeaufforderungsfilter die inneren Filter.

Filterintegration in die semantische Kernelpipeline.

Tipp

Weitere Informationen zu Filtern finden Sie unter Was sind Filter?.