Unterstützte Sprachen für den semantischen Kernel
Semantic Kernel plans on providing support to the following languages:
- C#
- Python
- Java
Während die allgemeine Architektur des Kernels in allen Sprachen konsistent ist, haben wir sichergestellt, dass das SDK für jede Sprache gängige Paradigmen und Stile in jeder Sprache folgt, um es zu nativ und einfach zu bedienen.
Verfügbare SDK-Pakete
C#-Pakete
In C# gibt es mehrere Pakete, um sicherzustellen, dass Sie nur die für Ihr Projekt benötigten Funktionen importieren müssen. In der folgenden Tabelle sind die verfügbaren Pakete in C# aufgeführt.
Paketname | Beschreibung |
---|---|
Microsoft.SemanticKernel |
Das Hauptpaket, das alles enthält, um zu beginnen |
Microsoft.SemanticKernel.Core |
Das Kernpaket, das Implementierungen für Microsoft.SemanticKernel.Abstractions |
Microsoft.SemanticKernel.Abstractions |
Die Basisabstraktionen für den semantischen Kernel |
Microsoft.SemanticKernel.Connectors.OpenAI |
Der Connector für OpenAI |
Microsoft.SemanticKernel.Connectors.HuggingFace |
Der Verbinder für Hugging Face Modelle |
Microsoft.SemanticKernel.Connectors.Google |
Der Connector für Google-Modelle (z.B. Gemini) |
Microsoft.SemanticKernel.Connectors.MistralAI |
Der Verbinder für Mistral AI-Modelle |
Microsoft.SemanticKernel.Plugins.OpenApi (Experimental) |
Aktiviert das Laden von Plug-Ins aus OpenAPI-Spezifikationen |
Microsoft.SemanticKernel.PromptTemplates.Handlebars |
Aktiviert die Verwendung von Handlebars-Vorlagen für Eingabeaufforderungen |
Microsoft.SemanticKernel.Yaml |
Bietet Unterstützung für die Serialisierung von Eingabeaufforderungen mithilfe von YAML-Dateien |
Microsoft.SemanticKernel.Prompty |
Bietet Unterstützung für die Serialisierung von Eingabeaufforderungen mithilfe von Eingabeaufforderungsdateien |
Microsoft.SemanticKernel.Agents.Abstractions |
Stellt Abstraktionen zum Erstellen von Agents bereit. |
Microsoft.SemanticKernel.Agents.OpenAI |
Bietet Unterstützung für Assistenten-API-Agents |
Es gibt weitere Pakete (z. B. die Speicherconnectors), aber sie sind noch experimentell und werden noch nicht für die Produktionsverwendung empfohlen.
Um eines dieser Pakete zu installieren, können Sie den folgenden Befehl verwenden:
dotnet add package <package-name>
Python-Pakete
In Python gibt es ein einzelnes Paket, das alles enthält, was Sie für die ersten Schritte mit dem semantischen Kernel benötigen. Zum Installieren des Pakets können Sie den folgenden Befehl verwenden:
pip install semantic-kernel
Auf PyPI unter Provides-Extra
den zusätzlichen Extras, die Sie installieren können, werden auch aufgelistet und bei Verwendung, die für die Verwendung von SK mit diesem bestimmten Connector oder Dienst benötigt werden, können Sie diese mit der eckigen Klammernsyntax installieren, z. B.:
pip install semantic-kernel[azure]
Dadurch wird der semantische Kernel sowie bestimmte getestete Versionen von: azure-ai-inference
, , azure-search-documents
, azure-core
, azure-identity
und azure-cosmos
(und msgraph-sdk
alle Abhängigkeiten dieser Pakete) installiert. Ebenso wird das Extra hugging_face
installiert transformers
und sentence-transformers
.
Java-Pakete
Für Java weist der semantische Kernel die folgenden Pakete auf: alle befinden sich unter der Gruppen-ID com.microsoft.semantic-kernel
und können aus Maven importiert werden.
<dependency>
<groupId>com.microsoft.semantic-kernel</groupId>
<artifactId>semantickernel-api</artifactId>
</dependency>
Es wird eine BOM bereitgestellt, die zum Definieren der Versionen aller semantischen Kernelpakete verwendet werden kann.
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.microsoft.semantic-kernel</groupId>
<artifactId>semantickernel-bom</artifactId>
<version>${semantickernel.version}</version>
<scope>import</scope>
<type>pom</type>
</dependency>
</dependencies>
</dependencyManagement>
semantickernel-bom
– Ein Maven-Projekt-BOM, das verwendet werden kann, um die Versionen aller semantischen Kernelpakete zu definieren.semantickernel-api
– Paket, das die zentrale öffentliche API für den semantischen Kernel für ein Maven-Projekt definiert.semantickernel-aiservices-openai
–Stellt einen Connector bereit, der für die Interaktion mit der OpenAI-API verwendet werden kann.
Nachfolgend finden Sie ein Beispiel für POM XML für ein einfaches Projekt, das OpenAI verwendet.
<project>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.microsoft.semantic-kernel</groupId>
<artifactId>semantickernel-bom</artifactId>
<version>${semantickernel.version}</version>
<scope>import</scope>
<type>pom</type>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>com.microsoft.semantic-kernel</groupId>
<artifactId>semantickernel-api</artifactId>
</dependency>
<dependency>
<groupId>com.microsoft.semantic-kernel</groupId>
<artifactId>semantickernel-connectors-ai-openai</artifactId>
</dependency>
</dependencies>
</project>
Verfügbare Features in jedem SDK
In den folgenden Tabellen wird gezeigt, welche Features in jeder Sprache verfügbar sind. Das 🔄 Symbol gibt an, dass das Feature teilweise implementiert ist. Weitere Details finden Sie in der zugehörigen Notizspalte. Das ❌ Symbol gibt an, dass das Feature noch nicht in dieser Sprache verfügbar ist. Wenn Sie ein Feature in einer Sprache implementieren möchten, sollten Sie einen Beitrag zum Projekt leisten oder ein Problem öffnen.
Grundlegende Funktionen
Dienste | C# | Python | Java | Hinweise |
---|---|---|---|---|
Eingabeaufforderungen | ✅ | ✅ | ✅ | Eine vollständige Liste der unterstützten Vorlagen- und Serialisierungsformate finden Sie in den folgenden Tabellen. |
Systemeigene Funktionen und Plug-Ins | ✅ | ✅ | ✅ | |
OpenAPI-Plug-Ins | ✅ | ✅ | ✅ | Java verfügt über ein Beispiel, in dem veranschaulicht wird, wie OpenAPI-Plug-Ins geladen werden. |
Automatische Funktionsaufrufe | ✅ | ✅ | ✅ | |
Öffnen von Telemetrieprotokollen | ✅ | 🔄 | ❌ | |
Hooks und Filter | ✅ | ✅ | ✅ |
Eingabeaufforderungsvorlagenformate
Beim Erstellen von Eingabeaufforderungen stellt der semantische Kernel eine Vielzahl von Vorlagensprachen bereit, mit denen Sie Variablen einbetten und Funktionen aufrufen können. Die folgende Tabelle zeigt, welche Vorlagensprachen in jeder Sprache unterstützt werden.
Formate | C# | Python | Java | Hinweise |
---|---|---|---|---|
Sprache der semantischen Kernelvorlage | ✅ | ✅ | ✅ | |
Lenkstangen | ✅ | ✅ | ✅ | |
Liquid | ✅ | ❌ | ❌ | |
Jinja2 | ❌ | ✅ | ❌ |
Serialisierungsformate für Aufforderungen
Nachdem Sie eine Eingabeaufforderung erstellt haben, können Sie sie serialisieren, damit sie in teamsübergreifend gespeichert oder freigegeben werden kann. Die folgende Tabelle zeigt, welche Serialisierungsformate in jeder Sprache unterstützt werden.
Formate | C# | Python | Java | Hinweise |
---|---|---|---|---|
YAML | ✅ | ✅ | ✅ | |
Aufforderung | ❌ | ✅ | ❌ |
AI Services-Modalitäten
Dienste | C# | Python | Java | Hinweise |
---|---|---|---|---|
Textgenerierung | ✅ | ✅ | ✅ | Beispiel: Text-Davinci-003 |
Chatvervollständigung | ✅ | ✅ | ✅ | Beispiel: GPT4, Chat-GPT |
Texteinbettungen (Experimental) | ✅ | ✅ | ✅ | Beispiel: Text-Embeddings-Ada-002 |
Text in Bild (Experimental) | ✅ | ✅ | ❌ | Beispiel: Dall-E |
Bild zu Text (Experimental) | ✅ | ✅ | ❌ | Beispiel: Pix2Struct |
Text in Audio (Experimental) | ✅ | ❌ | ❌ | Beispiel: Text-zu-Sprache |
Audio zu Text (Experimental) | ✅ | ❌ | ❌ | Beispiel: Flüstern |
KI-Dienstconnectors
Endpunkte | C# | Python | Java | Hinweise |
---|---|---|---|---|
OpenAI | ✅ | ✅ | ✅ | |
Azure OpenAI | ✅ | ✅ | ✅ | |
Andere Endpunkte, die OpenAI-APIs suppoprt | ✅ | ✅ | ✅ | Umfasst Ollama, LLM Studio, Azure Model-as-a-Service usw. |
Hugging Face Inference API | 🔄 | ❌ | ❌ | Bald in Python verfügbar, werden nicht alle Szenarien für .NET behandelt. |
Speicherconnectors (Experimental)
Wichtig
Alle vorhandenen Speicherconnectors sind derzeit experimentell und werden durch Vector Store-Connectors ersetzt. Diese bieten mehr Funktionen über eine aktualisierte Abstraktionsebene.
Speicherconnectors | C# | Python | Java | Hinweise |
---|---|---|---|---|
Azure KI Cognitive Search | ✅ | ✅ | ✅ | |
Chroma | ✅ | ✅ | ❌ | |
DuckDB | ✅ | ❌ | ❌ | |
Milvus | 🔄 | ✅ | ❌ | |
Pinecone | ✅ | ✅ | ❌ | |
Postgres | ✅ | ✅ | ❌ | |
Qdrant | ✅ | 🔄 | ❌ | |
Redis | ✅ | 🔄 | ❌ | |
Sqlite | ✅ | ❌ | 🔄 | |
Weaviate | ✅ | ✅ | ❌ |
Vector Store Connectors (Experimental)
Wichtig
Alle vorhandenen Vector Store-Connectors sind derzeit experimentell und werden aktiv entwickelt, um die Verwendung zu verbessern. Um Feedback zum aktuellen Vorschlag zu geben, lesen Sie bitte die aktiven AdRs für Such- und Speicherkonnektor .
Die Liste der out of the box Vector Store Connectors und die Sprachunterstützung für die einzelnen Vektorspeicher finden Sie unter out of the box connectors.