mirror of
https://github.com/microsoft/semantic-kernel.git
synced 2026-10-12 02:19:06 +00:00
Feature matrix improvements (#509)
### Motivation and Context With the official publishing of the Python Semantic Kernel, we should be informing the public of feature parity between Python and C#. Python is currently playing catch up. ### Description Removed the FEATURE_PARITY.md file from the python directory and added a FEATURE_MATRIX.md file to the top level of the repo. The main REAME.md now links to this file. Added a stronger breakdown of features that we are tracking for SK.
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
# Kernel Feature Matrix by Language
|
||||
|
||||
## AI Services
|
||||
| | C# | Python | Notes |
|
||||
|---|---|---|---|
|
||||
| TextGeneration | ✅ | ✅ | Example: Text-Davinci-003 |
|
||||
| TextEmbeddings | ✅ | ✅ | Example: Text-Embeddings-Ada-002 |
|
||||
| ChatCompletion | ✅ | ❌ | Example: GPT4, Chapt-GPT |
|
||||
| Image Generation | ✅ | ❌ | Example: Dall-E |
|
||||
|
||||
## AI Service Endpoints
|
||||
| | C# | Python | Notes |
|
||||
|---|---|---|---|
|
||||
| OpenAI | ✅ | ✅ | |
|
||||
| AzureOpenAI | ✅ | ✅ | |
|
||||
| Hugging Face | ✅ | ❌ | Coming soon to Python - both native and web endpoint support |
|
||||
| Custom | ✅ | ❌ | Requires the user to define the service schema in their application |
|
||||
|
||||
## Tokenizers
|
||||
| | C# | Python | Notes |
|
||||
|---|---|---|---|
|
||||
| GPT2 | ✅ | 🔄 | Can be manually added to Python via `pip install transformers` |
|
||||
| GPT3 | ✅ | ❌ | |
|
||||
| tiktoken | 🔄 | ❌ | Coming soon to Python and C#. Can be manually added to Python via `pip install tiktoken` |
|
||||
|
||||
## Core Skills
|
||||
| | C# | Python | Notes |
|
||||
|---|---|---|---|
|
||||
| TextMemorySkill | ✅ | ✅ | |
|
||||
| PlannerSkill | ✅ | 🔄 | |
|
||||
| ConversationSummarySkill | ✅ | ❌ | |
|
||||
| FileIOSkill | ✅ | ✅ | |
|
||||
| HttpSkill | ✅ | ❌ | |
|
||||
| MathSkill | ✅ | ❌ | |
|
||||
| TextSkill | ✅ | ✅ | |
|
||||
| TimeSkill | ✅ | ✅ | |
|
||||
|
||||
## Connectors and Skill Libraries
|
||||
| | C# | Python | Notes |
|
||||
|---|---|---|---|
|
||||
| Qdrant (Memory) | ✅ | ❌ | Vector optimized |
|
||||
| ChromaDb (Memory) | ❌ | 🔄 | |
|
||||
| Milvus (Memory) | ❌ | ❌ | Vector optimized |
|
||||
| Pinecone (Memory) | ❌ | ❌ | Vector optimized |
|
||||
| Weaviate (Memory) | ❌ | ❌ | Vector optimized |
|
||||
| CosmosDB (Memory) | ✅ | ❌ | CosmosDB is not optimized for vector storage |
|
||||
| Sqlite (Memory) | ✅ | ❌ | Sqlite is not optimized for vector storage |
|
||||
| Azure Cognitive Search | ❌ | ❌ | |
|
||||
| MsGraph | ✅ | ❌ | Contains connectors for OneDrive, Outlook, ToDos, and Organization Hierarchies |
|
||||
| Document Skills | ✅ | ❌ | Currently only supports Word documents |
|
||||
| OpenAPI | ✅ | ❌ | |
|
||||
| Web Skills | ✅ | ❌ | |
|
||||
|
||||
# Design Choices
|
||||
|
||||
The overall architecture of the core kernel is consistent across Python and C#,
|
||||
however, the code should follow common paradigms and style of each language.
|
||||
|
||||
During the initial development phase, many Python best practices have been ignored
|
||||
in the interest of velocity and feature parity. The project is now going through
|
||||
a refactoring exercise to increase code quality.
|
||||
|
||||
To make the Kernel as lightweight as possible, the core pip package should have
|
||||
a minimal set of external dependencies. On the other hand, the SDK should not
|
||||
reinvent mature solutions already available, unless of major concerns.
|
||||
@@ -56,6 +56,8 @@ Semantic Kernel is available to explore AI and build apps with C# and Python:
|
||||
</div>
|
||||
<br/>
|
||||
|
||||
See the [Feature Matrix](FEATURE_MATRIX.md) to see a breakdown of feature parity between C# and Python.
|
||||
|
||||
The quickest way to get started with the basics is to get an API key
|
||||
(OpenAI or Azure OpenAI)
|
||||
and to run one of the C# or Python console applications/scripts:
|
||||
|
||||
@@ -1,33 +0,0 @@
|
||||
# Feature matrix Python and C\#
|
||||
|
||||
The Python codebase has a bulk of the Semantic Kernel architecture re-implemented, but
|
||||
is not yet fully complete. Major things like `tests` and `docs` are work in progress.
|
||||
|
||||
This is a high-level overview of where things stand towards reaching feature
|
||||
parity with the C# reference implementation.
|
||||
|
||||
| | | |
|
||||
|-------------------------------------|--------|---------------------------------------------------------------------------------|
|
||||
| | Python | Notes |
|
||||
| `./ai/embeddings` | 🔄 | Using Numpy for embedding representation. Vector operations not yet implemented |
|
||||
| `./ai/openai` | 🔄 | Makes use of the OpenAI Python package. AzureOpenAI* not implemented |
|
||||
| `./configuration` | ✅ | Direct port. Check inline docs |
|
||||
| `./core_skills` | 🔄 | `TextMemorySkill` implemented. Others not |
|
||||
| `./diagnostics` | ✅ | Direct port of custom exceptions and validation helpers |
|
||||
| `./kernel_extensions` | 🔄 | Extensions take kernel as first argument and are exposed via `sk.extensions.*` |
|
||||
| `./memory` | 🔄 | Can simplify by relying on Numpy NDArray |
|
||||
| `./planning` | ❌ | Not yet implemented |
|
||||
| `./semantic_functions/partitioning` | ❌ | Not yet implemented |
|
||||
|
||||
## Design Choices
|
||||
|
||||
The overall architecture of the core kernel is consistent across Python and C#,
|
||||
however, the code should follow common paradigms and style of each language.
|
||||
|
||||
During the initial development phase, many Python best practices have been ignored
|
||||
in the interest of velocity and feature parity. The project is now going through
|
||||
a refactoring exercise to increase code quality.
|
||||
|
||||
To make the Kernel as lightweight as possible, the core pip package should have
|
||||
a minimal set of external dependencies. On the other hand, the SDK should not
|
||||
reinvent mature solutions already available, unless of major concerns.
|
||||
Reference in New Issue
Block a user