Lenguajes semánticos de kernel admitidos

Los planes de kernel semántico para proporcionar compatibilidad con los siguientes idiomas:

  • C#
  • Python
  • Java

Aunque la arquitectura general del kernel es coherente en todos los lenguajes, nos aseguramos de que el SDK de cada lenguaje sigue los paradigmas y estilos comunes de cada idioma para que se sienta nativo y fácil de usar.

Paquetes de SDK disponibles

Paquetes de C#

En C#, hay varios paquetes que le ayudarán a asegurarse de que solo necesita importar la funcionalidad que necesita para el proyecto. En la tabla siguiente se muestran los paquetes disponibles en C#.

Nombre del paquete Descripción
Microsoft.SemanticKernel El paquete principal que incluye todo para empezar
Microsoft.SemanticKernel.Core El paquete principal que proporciona implementaciones para Microsoft.SemanticKernel.Abstractions
Microsoft.SemanticKernel.Abstractions Abstracciones base para kernel semántico
Microsoft.SemanticKernel.Connectors.OpenAI Conector para OpenAI
Microsoft.SemanticKernel.Connectors.HuggingFace El conector para los modelos de Hugging Face
Microsoft.SemanticKernel.Connectors.Google El conector para los modelos de Google (por ejemplo, Gemini)
Microsoft.SemanticKernel.Connectors.MistralAI Conector para modelos de Inteligencia artificial mistral
Microsoft.SemanticKernel.Plugins.OpenApi (Experimental) Habilita la carga de complementos desde especificaciones de OpenAPI
Microsoft.SemanticKernel.PromptTemplates.Handlebars Habilita el uso de plantillas de handlebars para solicitudes
Microsoft.SemanticKernel.Yaml Proporciona compatibilidad con la serialización de mensajes mediante archivos YAML.
Microsoft.SemanticKernel.Prompty Proporciona compatibilidad con la serialización de mensajes mediante archivos prompty.
Microsoft.SemanticKernel.Agents.Abstractions Proporciona abstracciones para crear agentes
Microsoft.SemanticKernel.Agents.OpenAI Proporciona compatibilidad con agentes de API de Assistant

Hay otros paquetes disponibles (por ejemplo, los conectores de memoria), pero siguen siendo experimentales y aún no se recomiendan para su uso en producción.

Para instalar cualquiera de estos paquetes, puede usar el siguiente comando:

dotnet add package <package-name>

Paquetes de Python

En Python, hay un único paquete que incluye todo lo que necesita para empezar a trabajar con kernel semántico. Para instalar el paquete, puede usar el siguiente comando:

pip install semantic-kernel

En PyPI en Provides-Extra los extras adicionales que puede instalar también se muestran y cuando se usan que instalarán los paquetes necesarios para usar SK con ese conector o servicio específicos, puede instalarlos con la sintaxis de corchetes por ejemplo:

pip install semantic-kernel[azure]

Esto instalará kernel semántico, así como versiones probadas específicas de: azure-ai-inference, azure-search-documents, azure-core, azure-identityy azure-cosmos msgraph-sdk (y cualquier dependencia de esos paquetes). Del mismo modo, el adicional hugging_face instalará transformers y sentence-transformers.

Paquetes de Java

Para Java, el kernel semántico tiene los siguientes paquetes; todos están en el identificador com.microsoft.semantic-kerneldel grupo y se pueden importar desde maven.

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

Se proporciona una lista de materiales que se puede usar para definir las versiones de todos los paquetes de kernel semántico.

    <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 : una lista de materiales de proyecto de Maven que se puede usar para definir las versiones de todos los paquetes de kernel semántico.
  • semantickernel-api : paquete que define la API pública principal para el kernel semántico para un proyecto de Maven.
  • semantickernel-aiservices-openai –Proporciona un conector que se puede usar para interactuar con la API de OpenAI.

A continuación se muestra un ejemplo de XML POM para un proyecto sencillo que 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>

Características disponibles en cada SDK

En las tablas siguientes se muestran las características disponibles en cada idioma. El 🔄 símbolo indica que la característica se implementa parcialmente, consulte la columna de nota asociada para obtener más detalles. El ❌ símbolo indica que la característica aún no está disponible en ese idioma; si desea ver una característica implementada en un idioma, considere la posibilidad de contribuir al proyecto o abrir un problema.

Funcionalidades principales

Servicios C# Python Java Notas
Mensajes Para ver la lista completa de formatos de serialización y plantilla admitidos, consulte las tablas siguientes.
Funciones y complementos nativos
Complementos de OpenAPI Java tiene un ejemplo que muestra cómo cargar complementos de OpenAPI
Llamada automática a funciones
Apertura de registros de telemetría 🔄
Enlaces y filtros

Formatos de plantilla de solicitud

Al crear mensajes, kernel semántico proporciona una variedad de lenguajes de plantilla que permiten insertar variables e invocar funciones. En la tabla siguiente se muestran los idiomas de plantilla que se admiten en cada idioma.

Formatos C# Python Java Notas
Lenguaje de plantilla de kernel semántico
Manillares
Liquid
Jinja2

Formatos de serialización de mensajes

Una vez que haya creado un mensaje, puede serializarlo para que se pueda almacenar o compartir entre equipos. En la tabla siguiente se muestran los formatos de serialización que se admiten en cada idioma.

Formatos C# Python Java Notas
YAML
Prompty

Modalidades de los servicios de IA

Servicios C# Python Java Notas
Generación de texto Ejemplo: Text-Davinci-003
Finalización del chat Ejemplo: GPT4, Chat-GPT
Incrustaciones de texto (experimental) Ejemplo: Inserción de texto-Ada-002
Texto a imagen (experimental) Ejemplo: Dall-E
Imagen a texto (experimental) Ejemplo: Pix2Struct
Texto a audio (experimental) Ejemplo: Texto a voz
Audio a texto (experimental) Ejemplo: Susurro

Conectores de servicio de IA

Puntos de conexión C# Python Java Notas
OpenAI
Azure OpenAI
Otros puntos de conexión que rellenan las API de OpenAI Incluye Ollama, LLM Studio, Azure Model-as-service, etc.
Hugging Face Inference API 🔄 Próximamente a Python, no todos los escenarios están cubiertos para .NET

Conectores de memoria (experimental)

Importante

Todos los conectores de memoria existentes son actualmente experimentales y se reemplazarán por conectores de almacén de vectores. Esto proporcionará más funcionalidad a través de una capa de abstracción actualizada.

Conectores de memoria C# Python Java Notas
Azure AI Search
Chroma
DuckDB
Milvus 🔄
Pinecone
Postgres
Qdrant 🔄
Redis 🔄
Sqlite 🔄
Weaviate

Conectores de almacén de vectores (experimental)

Importante

Todos los conectores de Vector Store existentes son actualmente experimentales y están experimentando un desarrollo activo para mejorar la experiencia de su uso. Para proporcionar comentarios sobre la propuesta más reciente, consulte los ADR activos del conector de búsqueda y memoria.

Para obtener la lista de conectores de almacén de vectores de fábrica y la compatibilidad de idioma para cada uno, consulte conectores listas para usar.