Langages de noyau sémantique pris en charge
Plans de noyau sémantique sur la prise en charge des langages suivants :
- C#
- Python
- Java
Bien que l’architecture globale du noyau soit cohérente entre tous les langages, nous avons assuré que le SDK pour chaque langage suit des paradigmes et des styles courants dans chaque langage pour qu’il soit natif et facile à utiliser.
Packages sdk disponibles
Packages C#
En C#, il existe plusieurs packages pour vous assurer que vous devez uniquement importer les fonctionnalités dont vous avez besoin pour votre projet. Le tableau suivant montre les packages disponibles en C#.
Nom du package | Description |
---|---|
Microsoft.SemanticKernel |
Le package principal qui inclut tout pour commencer |
Microsoft.SemanticKernel.Core |
Package principal qui fournit des implémentations pour Microsoft.SemanticKernel.Abstractions |
Microsoft.SemanticKernel.Abstractions |
Abstractions de base pour le noyau sémantique |
Microsoft.SemanticKernel.Connectors.OpenAI |
Connecteur pour OpenAI |
Microsoft.SemanticKernel.Connectors.HuggingFace |
Connecteur pour les modèles Visage hugging |
Microsoft.SemanticKernel.Connectors.Google |
Connecteur pour les modèles Google (par exemple, Gemini) |
Microsoft.SemanticKernel.Connectors.MistralAI |
Connecteur pour les modèles Mistral AI |
Microsoft.SemanticKernel.Plugins.OpenApi (Expérimental) |
Active le chargement de plug-ins à partir de spécifications OpenAPI |
Microsoft.SemanticKernel.PromptTemplates.Handlebars |
Active l’utilisation de modèles Handlebars pour les invites |
Microsoft.SemanticKernel.Yaml |
Fournit la prise en charge de la sérialisation des invites à l’aide de fichiers YAML |
Microsoft.SemanticKernel.Prompty |
Fournit la prise en charge de la sérialisation des invites à l’aide de fichiers Prompty |
Microsoft.SemanticKernel.Agents.Abstractions |
Fournit des abstractions pour la création d’agents |
Microsoft.SemanticKernel.Agents.OpenAI |
Fournit la prise en charge des agents d’API Assistant |
Il existe d’autres packages disponibles (par exemple, les connecteurs de mémoire), mais ils sont toujours expérimentaux et ne sont pas encore recommandés pour une utilisation en production.
Pour installer l’un de ces packages, vous pouvez utiliser la commande suivante :
dotnet add package <package-name>
Packages Python
Dans Python, il existe un package unique qui inclut tout ce dont vous avez besoin pour commencer à utiliser le noyau sémantique. Pour installer le package, vous pouvez utiliser la commande suivante :
pip install semantic-kernel
Packages Java
Pour Java, le noyau sémantique comporte les packages suivants ; tous sont sous l’ID com.microsoft.semantic-kernel
de groupe et peuvent être importés à partir de maven.
<dependency>
<groupId>com.microsoft.semantic-kernel</groupId>
<artifactId>semantickernel-api</artifactId>
</dependency>
Un boM est fourni pour définir les versions de tous les packages de noyau sémantique.
<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
– BoM de projet Maven qui peut être utilisé pour définir les versions de tous les packages de noyau sémantique.semantickernel-api
– Package qui définit l’API publique principale pour le noyau sémantique pour un projet Maven.semantickernel-aiservices-openai
–Fournit un connecteur qui peut être utilisé pour interagir avec l’API OpenAI.
Voici un exemple POM XML pour un projet simple qui utilise 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>
Fonctionnalités disponibles dans chaque Kit de développement logiciel (SDK)
Les tableaux suivants indiquent quelles fonctionnalités sont disponibles dans chaque langue. Le 🔄 symbole indique que la fonctionnalité est partiellement implémentée, consultez la colonne de note associée pour plus d’informations. Le ❌ symbole indique que la fonctionnalité n’est pas encore disponible dans cette langue ; si vous souhaitez voir une fonctionnalité implémentée dans une langue, envisagez de contribuer au projet ou d’ouvrir un problème.
Fonctionnalités principales
Services | C# | Python | Java | Notes |
---|---|---|---|---|
Invites | ✅ | ✅ | ✅ | Pour afficher la liste complète des formats de modèle et de sérialisation pris en charge, reportez-vous aux tableaux ci-dessous. |
Fonctions et plug-ins natifs | ✅ | ✅ | ✅ | |
Plug-ins OpenAPI | ✅ | ✅ | ✅ | Java a un exemple illustrant comment charger des plug-ins OpenAPI |
Appel automatique de fonction | ✅ | ✅ | ✅ | |
Ouvrir les journaux de télémétrie | ✅ | 🔄 | ❌ | |
Crochets et filtres | ✅ | ✅ | ✅ |
Formats de modèle d’invite
Lors de la création d’invites, le noyau sémantique fournit un large éventail de langages de modèle qui vous permettent d’incorporer des variables et d’appeler des fonctions. Le tableau suivant indique les langues de modèle prises en charge dans chaque langue.
Formats | C# | Python | Java | Notes |
---|---|---|---|---|
Langage de modèle de noyau sémantique | ✅ | ✅ | ✅ | |
Guidon | ✅ | ✅ | ✅ | |
Liquid | ✅ | ❌ | ❌ | |
Jinja2 | ❌ | ✅ | ❌ |
Formats de sérialisation d’invite
Une fois que vous avez créé une invite, vous pouvez la sérialiser afin qu’elle puisse être stockée ou partagée entre les équipes. Le tableau suivant indique les formats de sérialisation pris en charge dans chaque langue.
Formats | C# | Python | Java | Notes |
---|---|---|---|---|
YAML | ✅ | ✅ | ✅ | |
Prompty | ❌ | ✅ | ❌ |
Services IA
Services | C# | Python | Java | Notes |
---|---|---|---|---|
Génération de texte | ✅ | ✅ | ✅ | Exemple : Text-Davinci-003 |
Complétion de conversation | ✅ | ✅ | ✅ | Exemple : GPT4, Chat-GPT |
Incorporations de texte (expérimentales) | ✅ | ✅ | ✅ | Exemple : Text-Embeddings-Ada-002 |
Texte en image (expérimental) | ✅ | ❌ | ❌ | Exemple : Dall-E |
Image en texte (expérimental) | ✅ | ❌ | ❌ | Exemple : Pix2Struct |
Texte en audio (expérimental) | ✅ | ❌ | ❌ | Exemple : synthèse vocale |
Audio à texte (expérimental) | ✅ | ❌ | ❌ | Exemple : Chuchoter |
Points de terminaison de service IA
Points de terminaison | C# | Python | Java | Notes |
---|---|---|---|---|
OpenAI | ✅ | ✅ | ✅ | |
Azure OpenAI | ✅ | ✅ | ✅ | |
Autres points de terminaison qui suppoprt OpenAI API | ✅ | ✅ | ✅ | Inclut Ollama, LLM Studio, Azure Model-as-a-service, etc. |
API d’inférence de visage en hugging | 🔄 | ❌ | ❌ | Bientôt disponible dans Python, tous les scénarios ne sont pas couverts pour .NET |
Connecteurs de mémoire (expérimental)
Important
Tous les connecteurs de mémoire existants sont actuellement expérimentaux et sont en cours de développement actif pour améliorer l’expérience de leur utilisation. Pour fournir des commentaires sur la dernière proposition, reportez-vous aux RDR active Search and Memory Connector .
Connecteurs de mémoire | C# | Python | Java | Notes |
---|---|---|---|---|
Recherche Azure AI | ✅ | ✅ | ✅ | |
Chroma | ✅ | ✅ | ❌ | |
DuckDB | ✅ | ❌ | ❌ | |
Milvus | 🔄 | ✅ | ❌ | |
Pinecone | ✅ | ✅ | ❌ | |
Postgres | ✅ | ✅ | ❌ | |
Qdrant | ✅ | 🔄 | ❌ | |
Redis | ✅ | 🔄 | ❌ | |
Sqlite | ✅ | ❌ | 🔄 | |
Weaviate | ✅ | ✅ | ❌ |