Semantiska kernelspråk som stöds
Semantisk kernel planerar att ge stöd till följande språk:
- C#
- Python
- Java
Även om den övergripande arkitekturen i kerneln är konsekvent på alla språk, såg vi till att SDK:t för varje språk följer vanliga paradigmer och format på varje språk så att det känns inbyggt och enkelt att använda.
Tillgängliga SDK-paket
C#-paket
I C# finns det flera paket som hjälper dig att se till att du bara behöver importera de funktioner som du behöver för projektet. I följande tabell visas de tillgängliga paketen i C#.
Paketnamn | beskrivning |
---|---|
Microsoft.SemanticKernel |
Huvudpaketet som innehåller allt för att komma igång |
Microsoft.SemanticKernel.Core |
Kärnpaketet som tillhandahåller implementeringar för Microsoft.SemanticKernel.Abstractions |
Microsoft.SemanticKernel.Abstractions |
Basabstraktionerna för semantisk kernel |
Microsoft.SemanticKernel.Connectors.OpenAI |
Anslutningsappen för OpenAI |
Microsoft.SemanticKernel.Connectors.HuggingFace |
Anslutningsappen för Hugging Face-modeller |
Microsoft.SemanticKernel.Connectors.Google |
Anslutningsappen för Google-modeller (t.ex. Gemini) |
Microsoft.SemanticKernel.Connectors.MistralAI |
Anslutningsappen för Mistral AI-modeller |
Microsoft.SemanticKernel.Plugins.OpenApi (Experimentell) |
Aktiverar inläsning av plugin-program från OpenAPI-specifikationer |
Microsoft.SemanticKernel.PromptTemplates.Handlebars |
Aktiverar användning av referensmallar för frågor |
Microsoft.SemanticKernel.Yaml |
Ger stöd för serialiseringsprompter med YAML-filer |
Microsoft.SemanticKernel.Prompty |
Ger stöd för serialiseringsprompter med prompty-filer |
Microsoft.SemanticKernel.Agents.Abstractions |
Tillhandahåller abstraktioner för att skapa agenter |
Microsoft.SemanticKernel.Agents.OpenAI |
Tillhandahåller stöd för API-agenter för assistenter |
Det finns andra paket tillgängliga (t.ex. minnesanslutningarna), men de är fortfarande experimentella och rekommenderas ännu inte för produktionsanvändning.
Om du vill installera något av dessa paket kan du använda följande kommando:
dotnet add package <package-name>
Python-paket
I Python finns det ett enda paket som innehåller allt du behöver för att komma igång med semantisk kernel. Om du vill installera paketet kan du använda följande kommando:
pip install semantic-kernel
På PyPI under Provides-Extra
de ytterligare extrafunktioner som du kan installera visas också och när de används som installerar de paket som behövs för att använda SK med den specifika anslutningsappen eller tjänsten kan du installera dem med hakparentessyntaxen för till exempel:
pip install semantic-kernel[azure]
Detta installerar semantisk kernel samt specifika testade versioner av: azure-ai-inference
, azure-search-documents
, azure-core
, azure-identity
azure-cosmos
och msgraph-sdk
(och eventuella beroenden av dessa paket). På samma sätt installeras transformers
sentence-transformers
och hugging_face
.
Java-paket
För Java har semantisk kernel följande paket; alla finns under grupp-ID com.microsoft.semantic-kernel
och kan importeras från maven.
<dependency>
<groupId>com.microsoft.semantic-kernel</groupId>
<artifactId>semantickernel-api</artifactId>
</dependency>
En strukturlista tillhandahålls som kan användas för att definiera versionerna av alla Semantic Kernel-paket.
<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
– En Maven-projektstruktur som kan användas för att definiera versionerna av alla Semantic Kernel-paket.semantickernel-api
– Paket som definierar det offentliga kärn-API:et för semantisk kernel för ett Maven-projekt.semantickernel-aiservices-openai
– Tillhandahåller en anslutningsapp som kan användas för att interagera med OpenAI-API:et.
Nedan visas ett exempel på POM XML för ett enkelt projekt som använder OpenAI.
<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>
Tillgängliga funktioner i varje SDK
Följande tabeller visar vilka funktioner som är tillgängliga på varje språk. Symbolen 🔄 anger att funktionen delvis har implementerats. Mer information finns i den associerade anteckningskolumnen. Symbolen ❌ anger att funktionen ännu inte är tillgänglig på det språket. Om du vill se en funktion implementerad på ett språk bör du överväga att bidra till projektet eller öppna ett problem.
Kärnfunktioner
Tjänster | C# | Python | Java | Kommentar |
---|---|---|---|---|
Frågor | ✅ | ✅ | ✅ | En fullständig lista över mall- och serialiseringsformat som stöds finns i tabellerna nedan |
Inbyggda funktioner och plugin-program | ✅ | ✅ | ✅ | |
OpenAPI-plugin-program | ✅ | ✅ | ✅ | Java har ett exempel som visar hur du läser in OpenAPI-plugin-program |
Automatisk funktionsanrop | ✅ | ✅ | ✅ | |
Öppna telemetriloggar | ✅ | 🔄 | ❌ | |
Krokar och filter | ✅ | ✅ | ✅ |
Fråga efter mallformat
När du redigerar frågor tillhandahåller Semantic Kernel en mängd olika mallspråk som gör att du kan bädda in variabler och anropa funktioner. I följande tabell visas vilka mallspråk som stöds på varje språk.
Format | C# | Python | Java | Kommentar |
---|---|---|---|---|
Mallspråk för semantisk kernel | ✅ | ✅ | ✅ | |
Handtag | ✅ | ✅ | ✅ | |
Liquid | ✅ | ❌ | ❌ | |
Jinja2 | ❌ | ✅ | ❌ |
Fråga efter serialiseringsformat
När du har skapat en fråga kan du serialisera den så att den kan lagras eller delas mellan team. I följande tabell visas vilka serialiseringsformat som stöds på varje språk.
Format | C# | Python | Java | Kommentar |
---|---|---|---|---|
YAML | ✅ | ✅ | ✅ | |
Fråga | ❌ | ✅ | ❌ |
AI Services-modaliteter
Tjänster | C# | Python | Java | Kommentar |
---|---|---|---|---|
Textgenerering | ✅ | ✅ | ✅ | Exempel: Text-Davinci-003 |
Chatten har slutförts | ✅ | ✅ | ✅ | Exempel: GPT4, Chat-GPT |
Inbäddningar av text (experimentell) | ✅ | ✅ | ✅ | Exempel: Text-Embeddings-Ada-002 |
Text till bild (experimentell) | ✅ | ✅ | ❌ | Exempel: Dall-E |
Bild till text (experimentell) | ✅ | ✅ | ❌ | Exempel: Pix2Struct |
Text till ljud (experimentell) | ✅ | ❌ | ❌ | Exempel: Text till tal |
Ljud till text (experimentell) | ✅ | ❌ | ❌ | Exempel: Whisper |
AI-tjänstanslutningsprogram
Slutpunkter | C# | Python | Java | Kommentar |
---|---|---|---|---|
OpenAI | ✅ | ✅ | ✅ | |
Azure OpenAI | ✅ | ✅ | ✅ | |
Andra slutpunkter som suppoprt OpenAI API:er | ✅ | ✅ | ✅ | Innehåller Ollama, LLM Studio, Azure Model-as-a-service osv. |
API för att krama ansiktsinferens | 🔄 | ❌ | ❌ | Kommer snart till Python, inte alla scenarier omfattas för .NET |
Minnesanslutningar (experimentella)
Viktigt!
Alla befintliga minnesanslutningar är för närvarande experimentella och ersätts av Vector Store-anslutningsappar. Dessa ger fler funktioner via ett uppdaterat abstraktionslager.
Minnesanslutningar | C# | Python | Java | Kommentar |
---|---|---|---|---|
Azure AI-sökning | ✅ | ✅ | ✅ | |
Chroma | ✅ | ✅ | ❌ | |
DuckDB | ✅ | ❌ | ❌ | |
Milvus | 🔄 | ✅ | ❌ | |
Pinecone | ✅ | ✅ | ❌ | |
Postgres | ✅ | ✅ | ❌ | |
Qdrant | ✅ | 🔄 | ❌ | |
Redis | ✅ | 🔄 | ❌ | |
Sqlite | ✅ | ❌ | 🔄 | |
Viaviate | ✅ | ✅ | ❌ |
Anslutningsappar för vektorlager (experimentella)
Viktigt!
Alla befintliga Vector Store-kopplingar är för närvarande experimentella och genomgår en aktiv utveckling för att förbättra upplevelsen av att använda dem. Om du vill ge feedback om det senaste förslaget kan du läsa de aktiva sök- och minnesanslutnings-ADR:erna.
Listan över färdiga vektorlagringsanslutningar och språkstöd för var och en finns i out of the box-anslutningsappar.