Linguagens de kernel semântico suportadas
O Semantic Kernel planeja fornecer suporte para os seguintes idiomas:
- C#
- Python
- Java
Embora a arquitetura geral do kernel seja consistente em todos os idiomas, garantimos que o SDK para cada idioma siga paradigmas e estilos comuns em cada idioma para torná-lo nativo e fácil de usar.
Pacotes SDK disponíveis
Pacotes C#
Em C#, há vários pacotes para ajudar a garantir que você só precise importar a funcionalidade necessária para seu projeto. A tabela a seguir mostra os pacotes disponíveis em C#.
Nome do pacote | Description |
---|---|
Microsoft.SemanticKernel |
O pacote principal que inclui tudo para começar |
Microsoft.SemanticKernel.Core |
O pacote principal que fornece implementações para Microsoft.SemanticKernel.Abstractions |
Microsoft.SemanticKernel.Abstractions |
As abstrações de base para o Kernel Semântico |
Microsoft.SemanticKernel.Connectors.OpenAI |
O conector para OpenAI |
Microsoft.SemanticKernel.Connectors.HuggingFace |
O conector para modelos Hugging Face |
Microsoft.SemanticKernel.Connectors.Google |
O conector para modelos do Google (por exemplo, Gemini) |
Microsoft.SemanticKernel.Connectors.MistralAI |
O conector para modelos Mistral AI |
Microsoft.SemanticKernel.Plugins.OpenApi (Experimental) |
Permite carregar plugins a partir das especificações OpenAPI |
Microsoft.SemanticKernel.PromptTemplates.Handlebars |
Permite o uso de modelos de guidão para prompts |
Microsoft.SemanticKernel.Yaml |
Fornece suporte para serialização de prompts usando arquivos YAML |
Microsoft.SemanticKernel.Prompty |
Fornece suporte para serialização de prompts usando arquivos Prompty |
Microsoft.SemanticKernel.Agents.Abstractions |
Fornece abstrações para a criação de agentes |
Microsoft.SemanticKernel.Agents.OpenAI |
Fornece suporte para agentes de API do Assistente |
Existem outros pacotes disponíveis (por exemplo, os conectores de memória), mas eles ainda são experimentais e ainda não são recomendados para uso em produção.
Para instalar qualquer um desses pacotes, você pode usar o seguinte comando:
dotnet add package <package-name>
Pacotes de Python
Em Python, há um único pacote que inclui tudo o que você precisa para começar a usar o Kernel Semântico. Para instalar o pacote, você pode usar o seguinte comando:
pip install semantic-kernel
No PyPI sob Provides-Extra
os extras adicionais que você pode instalar também estão listados e quando usado que irá instalar os pacotes necessários para usar SK com esse conector ou serviço específico, você pode instalar aqueles com a sintaxe de colchetes, por exemplo:
pip install semantic-kernel[azure]
Isso instalará o Kernel Semântico, bem como versões testadas específicas de: azure-ai-inference
, azure-search-documents
, azure-core
, azure-cosmos
azure-identity
e msgraph-sdk
(e quaisquer dependências desses pacotes). Da mesma forma, o extra hugging_face
irá instalar transformers
e sentence-transformers
.
Pacotes Java
Para Java, o Semantic Kernel tem os seguintes pacotes; todos estão sob o grupo Id com.microsoft.semantic-kernel
, e podem ser importados do maven.
<dependency>
<groupId>com.microsoft.semantic-kernel</groupId>
<artifactId>semantickernel-api</artifactId>
</dependency>
É fornecida uma lista técnica que pode ser usada para definir as versões de todos os pacotes do 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
– Uma lista técnica do projeto Maven que pode ser usada para definir as versões de todos os pacotes do Kernel Semântico.semantickernel-api
– Pacote que define a API pública principal para o Kernel Semântico para um projeto Maven.semantickernel-aiservices-openai
–Fornece um conector que pode ser usado para interagir com a API OpenAI.
Abaixo está um exemplo de POM XML para um projeto simples 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>
Recursos disponíveis em cada SDK
As tabelas a seguir mostram quais recursos estão disponíveis em cada idioma. O 🔄 símbolo indica que o recurso está parcialmente implementado, consulte a coluna de notas associada para obter mais detalhes. O ❌ símbolo indica que o recurso ainda não está disponível nesse idioma, se você gostaria de ver um recurso implementado em um idioma, considere contribuir para o projeto ou abrir um problema.
Capacidades principais
Serviços | C# | Python | Java | Notas |
---|---|---|---|---|
Pedidos | ✅ | ✅ | ✅ | Para ver a lista completa de modelos suportados e formatos de serialização, consulte as tabelas abaixo |
Funções nativas e plugins | ✅ | ✅ | ✅ | |
Plugins OpenAPI | ✅ | ✅ | ✅ | Java tem um exemplo demonstrando como carregar plugins OpenAPI |
Chamada automática de função | ✅ | ✅ | ✅ | |
Abrir logs de telemetria | ✅ | 🔄 | ❌ | |
Ganchos e filtros | ✅ | ✅ | ✅ |
Avisar formatos de modelo
Ao criar prompts, o Semantic Kernel fornece uma variedade de linguagens de modelo que permitem incorporar variáveis e invocar funções. A tabela a seguir mostra quais idiomas de modelo são suportados em cada idioma.
Formatos | C# | Python | Java | Notas |
---|---|---|---|---|
Linguagem de modelo do Kernel Semântico | ✅ | ✅ | ✅ | |
Handlebars | ✅ | ✅ | ✅ | |
Liquid | ✅ | ❌ | ❌ | |
Jinja2 | ❌ | ✅ | ❌ |
Formatos de serialização de prompt
Depois de criar um prompt, você pode serializá-lo para que possa ser armazenado ou compartilhado entre as equipes. A tabela a seguir mostra quais formatos de serialização são suportados em cada idioma.
Formatos | C# | Python | Java | Notas |
---|---|---|---|---|
YAML | ✅ | ✅ | ✅ | |
Prontidão | ❌ | ✅ | ❌ |
Modalidades de Serviços de IA
Serviços | C# | Python | Java | Notas |
---|---|---|---|---|
Geração de texto | ✅ | ✅ | ✅ | Exemplo: Text-Davinci-003 |
Conclusão do bate-papo | ✅ | ✅ | ✅ | Exemplo: GPT4, Chat-GPT |
Incorporações de texto (experimental) | ✅ | ✅ | ✅ | Exemplo: text-embeddings-ada-002 |
Texto para Imagem (Experimental) | ✅ | ✅ | ❌ | Exemplo: Dall-E |
Imagem para Texto (Experimental) | ✅ | ✅ | ❌ | Exemplo: Pix2Struct |
Texto para áudio (Experimental) | ✅ | ❌ | ❌ | Exemplo: conversão de texto em fala |
Áudio para Texto (Experimental) | ✅ | ❌ | ❌ | Exemplo: Whisper |
Conectores de serviço AI
Pontos finais | C# | Python | Java | Notas |
---|---|---|---|---|
OpenAI | ✅ | ✅ | ✅ | |
Azure OpenAI | ✅ | ✅ | ✅ | |
Outros endpoints que suppoprt APIs OpenAI | ✅ | ✅ | ✅ | Inclui Ollama, LLM Studio, Azure Model-as-a-service, etc. |
API de inferência de rosto abraçado | 🔄 | ❌ | ❌ | Em breve no Python, nem todos os cenários são cobertos para .NET |
Conectores de memória (experimental)
Importante
Todos os conectores de memória existentes são atualmente experimentais e serão substituídos por conectores de armazenamento vetorial. Estes fornecerão mais funcionalidade através de uma camada de abstração atualizada.
Conectores de memória | C# | Python | Java | Notas |
---|---|---|---|---|
Pesquisa de IA do Azure | ✅ | ✅ | ✅ | |
Cromo | ✅ | ✅ | ❌ | |
DuckDB | ✅ | ❌ | ❌ | |
Milvus | 🔄 | ✅ | ❌ | |
Pinecone | ✅ | ✅ | ❌ | |
Postgres | ✅ | ✅ | ❌ | |
Qdrant | ✅ | 🔄 | ❌ | |
Redis | ✅ | 🔄 | ❌ | |
Sqlite | ✅ | ❌ | 🔄 | |
Tecelagem | ✅ | ✅ | ❌ |
Conectores de armazenamento vetorial (experimental)
Importante
Todos os conectores Vetor Store existentes são atualmente experimentais e estão passando por um desenvolvimento ativo para melhorar a experiência de usá-los. Para fornecer comentários sobre a proposta mais recente, consulte os ADRs ativos de Pesquisa e Conector de Memória .
Para obter a lista de conectores de armazenamento vetorial prontos para uso e o suporte a idiomas para cada um, consulte Conectores prontos para uso.