Idiomas de kernel semântico suportados
O Semantic Kernel planeja fornecer suporte aos seguintes idiomas:
- C#
- Python
- Java
Embora a arquitetura geral do kernel seja consistente em todas as linguagens, garantimos que o SDK de cada linguagem siga paradigmas e estilos comuns em cada linguagem 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 | Descrição |
---|---|
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 básicas 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 o carregamento de plug-ins a partir de especificações OpenAPI |
Microsoft.SemanticKernel.PromptTemplates.Handlebars |
Permite o uso de modelos de Handlebars 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 da 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 do Python
Em Python, há um único pacote que inclui tudo o que você precisa para começar a usar o Semantic Kernel. Para instalar o pacote, você pode usar o seguinte comando:
pip install semantic-kernel
No PyPI , os Provides-Extra
extras adicionais que você pode instalar também estão listados e, quando usados, instalarão os pacotes necessários para usar o SK com esse conector ou serviço específico, você pode instalá-los com a sintaxe de colchetes, por exemplo:
pip install semantic-kernel[azure]
Isso instalará o Semantic Kernel, bem como versões testadas específicas de: azure-ai-inference
, azure-search-documents
, azure-core
, azure-identity
azure-cosmos
, e msgraph-sdk
(e quaisquer dependências desses pacotes). Da mesma forma, o extra hugging_face
instalará transformers
e sentence-transformers
.
Pacotes Java
Para Java, o Semantic Kernel tem os seguintes pacotes; todos estão no ID do grupo e com.microsoft.semantic-kernel
podem ser importados do maven.
<dependency>
<groupId>com.microsoft.semantic-kernel</groupId>
<artifactId>semantickernel-api</artifactId>
</dependency>
É fornecida uma lista de materiais 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 de materiais 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 de um projeto Maven.semantickernel-aiservices-openai
–Fornece um conector que pode ser usado para interagir com a API OpenAI.
Abaixo está um exemplo de XML POM 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ê quiser ver um recurso implementado em um idioma, considere contribuir para o projeto ou abrir um problema.
Principais funcionalidades
Serviços | C# | Python | Java | Observações |
---|---|---|---|---|
Prompts | ✅ | ✅ | ✅ | Para ver a lista completa de formatos de modelo e serialização com suporte, consulte as tabelas abaixo |
Funções e plug-ins nativos | ✅ | ✅ | ✅ | |
Plug-ins OpenAPI | ✅ | ✅ | ✅ | Java tem um exemplo demonstrando como carregar plug-ins OpenAPI |
Chamada automática de função | ✅ | ✅ | ✅ | |
Abrir logs de telemetria | ✅ | 🔄 | ❌ | |
Ganchos e filtros | ✅ | ✅ | ✅ |
Formatos de modelo de prompt
Ao criar prompts, o Semantic Kernel fornece uma variedade de linguagens de modelo que permitem inserir variáveis e invocar funções. A tabela a seguir mostra quais linguagens de modelo são suportadas em cada linguagem.
Formatos | C# | Python | Java | Observações |
---|---|---|---|---|
Linguagem de modelo do Kernel Semântico | ✅ | ✅ | ✅ | |
Guidões | ✅ | ✅ | ✅ | |
Liquid | ✅ | ❌ | ❌ | |
Jinja2 | ❌ | ✅ | ❌ |
Formatos de serialização de prompt
Depois de criar um prompt, você pode serializá-lo para que ele possa ser armazenado ou compartilhado entre as equipes. A tabela a seguir mostra quais formatos de serialização têm suporte em cada idioma.
Formatos | C# | Python | Java | Observações |
---|---|---|---|---|
YAML | ✅ | ✅ | ✅ | |
Pronto | ❌ | ✅ | ❌ |
Modalidades de serviços de IA
Serviços | C# | Python | Java | Observações |
---|---|---|---|---|
Geração de texto | ✅ | ✅ | ✅ | Exemplo: Texto-Davinci-003 |
Conclusão de Chat. | ✅ | ✅ | ✅ | 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: Sussurro |
Conectores de serviço de IA
Pontos de extremidade | C# | Python | Java | Observações |
---|---|---|---|---|
OpenAI | ✅ | ✅ | ✅ | |
OpenAI do Azure | ✅ | ✅ | ✅ | |
Outros endpoints que oferecem suporte às APIs OpenAI | ✅ | ✅ | ✅ | Inclui Ollama, LLM Studio, Azure Model-as-a-service, etc. |
Abraçando a API de Inferência Facial | 🔄 | ❌ | ❌ | Em breve no Python, nem todos os cenários são cobertos para o .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 do Vector Store. Eles fornecerão mais funcionalidade por meio de uma camada de abstração atualizada.
Conectores de memória | C# | Python | Java | Observações |
---|---|---|---|---|
Azure AI Search | ✅ | ✅ | ✅ | |
Chroma | ✅ | ✅ | ❌ | |
DuckDB | ✅ | ❌ | ❌ | |
Milvus | 🔄 | ✅ | ❌ | |
Pinecone | ✅ | ✅ | ❌ | |
Postgres | ✅ | ✅ | ❌ | |
Qdrant | ✅ | 🔄 | ❌ | |
Redis | ✅ | 🔄 | ❌ | |
Sqlite | ✅ | ❌ | 🔄 | |
Weaviate | ✅ | ✅ | ❌ |
Conectores de armazenamento de vetores (experimental)
Importante
Todos os conectores existentes do Vector Store são atualmente experimentais e estão passando por desenvolvimento ativo para melhorar a experiência de usá-los. Para fornecer comentários sobre a proposta mais recente, consulte os ADRs ativos do conector de pesquisa e memória.
Para obter a lista de conectores de repositório de vetores prontos para uso e o suporte de idioma para cada um, consulte conectores prontos para uso.