Linguaggi del kernel semantico supportati

Il kernel semantico prevede di fornire supporto per i linguaggi seguenti:

  • C#
  • Python
  • Java

Anche se l'architettura complessiva del kernel è coerente in tutti i linguaggi, abbiamo verificato che l'SDK per ogni linguaggio segua paradigmi e stili comuni in ogni linguaggio per renderlo nativo e facile da usare.

Pacchetti SDK disponibili

Pacchetti C#

In C# sono disponibili diversi pacchetti che consentono di assicurarsi di dover importare solo le funzionalità necessarie per il progetto. La tabella seguente illustra i pacchetti disponibili in C#.

Nome pacchetto Descrizione
Microsoft.SemanticKernel Pacchetto principale che include tutti gli elementi da iniziare
Microsoft.SemanticKernel.Core Pacchetto principale che fornisce implementazioni per Microsoft.SemanticKernel.Abstractions
Microsoft.SemanticKernel.Abstractions Astrazioni di base per il kernel semantico
Microsoft.SemanticKernel.Connectors.OpenAI Connettore per OpenAI
Microsoft.SemanticKernel.Connectors.HuggingFace Connettore per i modelli Hugging Face
Microsoft.SemanticKernel.Connectors.Google Connettore per i modelli Google (ad esempio, Gemini)
Microsoft.SemanticKernel.Connectors.MistralAI Connettore per i modelli di intelligenza artificiale mistrale
Microsoft.SemanticKernel.Plugins.OpenApi (Sperimentale) Abilita il caricamento di plug-in dalle specifiche OpenAPI
Microsoft.SemanticKernel.PromptTemplates.Handlebars Abilita l'uso dei modelli di handlebars per le richieste
Microsoft.SemanticKernel.Yaml Fornisce supporto per la serializzazione dei prompt tramite file YAML
Microsoft.SemanticKernel.Prompty Fornisce supporto per la serializzazione delle richieste tramite i file Prompty
Microsoft.SemanticKernel.Agents.Abstractions Fornisce astrazioni per la creazione di agenti
Microsoft.SemanticKernel.Agents.OpenAI Fornisce supporto per gli agenti DELL'API Assistente

Sono disponibili altri pacchetti (ad esempio, i connettori di memoria), ma sono ancora sperimentali e non sono ancora consigliati per l'uso in produzione.

Per installare uno di questi pacchetti, è possibile usare il comando seguente:

dotnet add package <package-name>

Pacchetti Python

In Python è disponibile un singolo pacchetto che include tutti gli elementi necessari per iniziare a usare il kernel semantico. Per installare il pacchetto, è possibile usare il comando seguente:

pip install semantic-kernel

Pacchetti Java

Per Java, Il kernel semantico include i pacchetti seguenti; tutti sono inclusi nell'ID com.microsoft.semantic-kernelgruppo e possono essere importati da maven.

    <dependency>
        <groupId>com.microsoft.semantic-kernel</groupId>
        <artifactId>semantickernel-api</artifactId>
    </dependency>

Viene fornito un bom che può essere usato per definire le versioni di tutti i pacchetti semantici del kernel.

    <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 : distinta base del progetto Maven che può essere usata per definire le versioni di tutti i pacchetti semantici del kernel.
  • semantickernel-api : pacchetto che definisce l'API pubblica di base per il kernel semantico per un progetto Maven.
  • semantickernel-aiservices-openai –Fornisce un connettore che può essere usato per interagire con l'API OpenAI.

Di seguito è riportato un esempio di XML POM per un progetto semplice che usa 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>

Funzionalità disponibili in ogni SDK

Le tabelle seguenti illustrano le funzionalità disponibili in ogni lingua. Il 🔄 simbolo indica che la funzionalità è parzialmente implementata, vedere la colonna nota associata per altri dettagli. Il ❌ simbolo indica che la funzionalità non è ancora disponibile in tale lingua. Se si vuole visualizzare una funzionalità implementata in una lingua, è consigliabile contribuire al progetto o aprire un problema.

Funzionalità principali

Servizi C# Python Java Note
Prompt Per visualizzare l'elenco completo dei formati di modello e serializzazione supportati, vedere le tabelle seguenti
Funzioni native e plug-in
Plug-in OpenAPI Java ha un esempio che illustra come caricare plug-in OpenAPI
Chiamata automatica di funzioni
Aprire i log di telemetria 🔄
Hook e filtri

Formati dei modelli di richiesta

Quando si creano richieste, il kernel semantico offre un'ampia gamma di linguaggi modello che consentono di incorporare variabili e richiamare funzioni. Nella tabella seguente vengono illustrate le lingue del modello supportate in ogni lingua.

Formati C# Python Java Note
Linguaggio del modello del kernel semantico
Manubrio
Liquid
Jinja2

Formati di serializzazione prompt

Dopo aver creato un prompt, è possibile serializzarlo in modo che possa essere archiviato o condiviso tra team. Nella tabella seguente vengono illustrati i formati di serializzazione supportati in ogni lingua.

Formati C# Python Java Note
YAML
Richiesta

Servizi di intelligenza artificiale

Servizi C# Python Java Note
Generazione di testo Esempio: Text-Davinci-003
Completamento chat Esempio: GPT4, Chat-GPT
Incorporamenti di testo (sperimentale) Esempio: Text-Embeddings-Ada-002
Testo in immagine (sperimentale) Esempio: Dall-E
Da immagine a testo (sperimentale) Esempio: Pix2Struct
Da testo a audio (sperimentale) Esempio: Sintesi vocale
Audio in testo (sperimentale) Esempio: Whisper

Endpoint del servizio di intelligenza artificiale

Endpoint C# Python Java Note
OpenAI
OpenAI di Azure
Altri endpoint che suppoprtno le API OpenAI Include Ollama, LLM Studio, Modello di Azure come servizio e così via.
Hugging Face Inference API 🔄 Presto disponibile in Python, non tutti gli scenari sono trattati per .NET

Connettori di memoria (sperimentale)

Importante

Tutti i connettori di memoria esistenti sono attualmente sperimentali e sono in fase di sviluppo attivo per migliorare l'esperienza di utilizzo. Per fornire commenti e suggerimenti sulla proposta più recente, fare riferimento alle adR di Search and Memory Connector attive.

Connettori di memoria C# Python Java Note
Azure AI Search
Chroma
DuckDB
Milvus 🔄
Pinecone
Postgres
Qdrant 🔄
Redis 🔄
Sqlite 🔄
Weaviate