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-kernel
gruppo 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 | ✅ | ✅ | ❌ |