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:
Abby Harrison
2023-04-18 23:41:26 -07:00
committed by GitHub
parent 72c7616f83
commit c2b3a6bf7a
3 changed files with 67 additions and 33 deletions
+65
View File
@@ -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.
+2
View File
@@ -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:
-33
View File
@@ -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.