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-identity
y 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-kernel
del 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.