diff --git a/FEATURE_MATRIX.md b/FEATURE_MATRIX.md index 0e1f63672e5b..281acebeb3d9 100644 --- a/FEATURE_MATRIX.md +++ b/FEATURE_MATRIX.md @@ -1,4 +1,4 @@ -# Kernel Feature Matrix by Language +# Semantic Kernel Feature Matrix by Language **Legend** @@ -10,79 +10,83 @@ | | C# | Python | Java | Notes | |-----------------------------------|:----:|:------:|:----:|-------| -| TextGeneration | ✅ | ✅ | ✅ | Example: Text-Davinci-003 | -| TextEmbeddings | ✅ | ✅ | ✅ | Example: Text-Embeddings-Ada-002 | -| ChatCompletion | ✅ | ✅ | ❌ | Example: GPT4, Chat-GPT | -| Image Generation | ✅ | ❌ | ❌ | Example: Dall-E | +| Text Generation | ✅ | ✅ | ✅ | Example: text-davinci-003 | +| Text Embeddings | ✅ | ✅ | ✅ | Example: text-embeddings-ada-002 | +| Chat Completion | ✅ | ✅ | ❌ | Example: GPT-4, GPT-3.5-turbo | +| Image Generation | ✅ | ❌ | ❌ | Example: Dall-E 2 | ## AI Service Endpoints -| | C# | Python | Java | Notes | -|-----------------------------------|:----:|:------:|:----:|-------| -| OpenAI | ✅ | ✅ | ✅ | | -| AzureOpenAI | ✅ | ✅ | ✅ | | -| Hugging Face Inference API | 🔄 | ❌ | ❌ | Coming soon to Python, not all scenarios are covered for .NET | -| Hugging Face Local | ❌ | ✅ | ❌ | | -| Custom | ✅ | 🔄 | ❌ | Requires the user to define the service schema in their application | +| | C# | Python | Java | Notes | +|-----------------------------------|:---:|:------:|:----:|-------| +| OpenAI | ✅ | ✅ | ✅ | | +| Azure OpenAI | ✅ | ✅ | ✅ | | +| Hugging Face Inference API | 🔄 | ❌ | ❌ | Coming soon to Python, not all scenarios are covered for .NET | +| Hugging Face Local | ❌ | ✅ | ❌ | | +| Custom | ✅ | 🔄 | ❌ | Requires to define the service schema in the application | ## Tokenizers -| | C# | Python | Java | Notes | -|-----------------------------------|:----:|:------:|:----:|-------| -| GPT2 | ✅ | ✅ | ✅ | | -| GPT3 | ✅ | ❌ | ❌ | | -| tiktoken | 🔄 | ❌ | ❌ | Coming soon to Python and C#. Can be manually added to Python via `pip install tiktoken` | +| | C# | Python | Java | Notes | +|-----------------------------------|:---:|:------:|:----:|-------| +| GPT2 | ✅ | ✅ | ✅ | | +| GPT3 | ✅ | ❌ | ❌ | | +| tiktoken | ❌ | ❌ | ❌ | Coming soon. Can be added manually to Python via `pip install tiktoken` | ## Core Skills -| | C# | Python | Java | Notes | -|-----------------------------------|:----:|:------:|:----:|-------| -| TextMemorySkill | ✅ | ✅ | 🔄 | | -| ConversationSummarySkill | ✅ | ✅ | ❌ | | -| FileIOSkill | ✅ | ✅ | ❌ | | -| HttpSkill | ✅ | ✅ | ❌ | | -| MathSkill | ✅ | ✅ | ❌ | | -| TextSkill | ✅ | ✅ | 🔄 | | -| TimeSkill | ✅ | ✅ | 🔄 | | -| WaitSkill | ✅ | ❌ | ❌ | | +| | C# | Python | Java | Notes | +|-----------------------------------|:---:|:------:|:----:|-------| +| TextMemory Skill | ✅ | ✅ | 🔄 | | +| ConversationSummary Skill | ✅ | ✅ | ❌ | | +| FileIO Skill | ✅ | ✅ | ❌ | | +| Http Skill | ✅ | ✅ | ❌ | | +| Math Skill | ✅ | ✅ | ❌ | | +| Text Skill | ✅ | ✅ | 🔄 | | +| Time Skill | ✅ | ✅ | 🔄 | | +| Wait Skill | ✅ | ❌ | ❌ | | ## Planning -| | C# | Python | Java | Notes | -|-----------------------------------|:----:|:------:|:----:|-------| -| Plan | ✅ | ✅ | ❌ | Need to port the Plan object model | -| BasicPlanner | ❌ | ✅ | ❌ | | -| ActionPlanner | ✅ | ❌ | ❌ | | -| SequentialPlanner | ✅ | ❌ | ❌ | | +| | C# | Python | Java | Notes | +|-----------------------------------|:---:|:------:|:----:|-------| +| Plan | ✅ | 🔄 | ❌ | Plan object model to be completed | +| BasicPlanner | ❌ | ✅ | ❌ | | +| ActionPlanner | ✅ | ❌ | ❌ | | +| SequentialPlanner | ✅ | ❌ | ❌ | | + +## Memory Connectors, Vector storage + +| | C# | Python | Java | Notes | +|---------------|:---:|:------:|:----:|-------| +| Azure Search | ✅ | 🔄 | ❌ | Azure Cognitive Search under development, currently in private preview | +| Qdrant | ✅ | ❌ | ❌ | | +| Pinecone | ✅ | ❌ | ❌ | | +| Weaviate | ❌ | ✅ | ❌ | Currently supported on Python 3.9-3.11, 3.8 coming soon | +| ChromaDb | ❌ | ✅ | ❌ | | +| Milvus | ❌ | ❌ | ❌ | Coming soon | +| Sqlite | ✅ | ❌ | ❌ | Vector optimization requires [sqlite-vss](https://github.com/asg017/sqlite-vss) | +| Postgres | ✅ | ❌ | ❌ | Vector optimization requires [pgvector](https://github.com/pgvector/pgvector) | +| CosmosDB | ✅ | ❌ | ❌ | CosmosDB is not optimized for vector storage | ## Connectors and Skill Libraries -| | C# | Python | Java | Notes | -|-----------------------------------|:----:|:------:|:----:|-------| -| Qdrant (Memory) | ✅ | ❌ | ❌ | | -| ChromaDb (Memory) | ❌ | 🔄 | ❌ | | -| Milvus (Memory) | ❌ | ❌ | ❌ | | -| Pinecone (Memory) | ✅ | ❌ | ❌ | | -| Weaviate (Memory) | ❌ | ✅ | ❌ | | Vector optimized -| CosmosDB (Memory) | ✅ | ❌ | ❌ | CosmosDB is not optimized for vector storage | -| Sqlite (Memory) | ✅ | ❌ | ❌ | Sqlite is not optimized for vector storage | -| Postgres (Memory) | ✅ | ❌ | ❌ | Vector optimized (required the [pgvector](https://github.com/pgvector/pgvector) extension) | -| Azure Cognitive Search | ✅ | 🔄 | ❌ | | -| MsGraph | ✅ | ❌ | ❌ | Contains connectors for OneDrive, Outlook, ToDos, and Organization Hierarchies | -| Document and Data Loading Skills (i.e. pdf, csv, docx, pptx) | ✅ | ❌ | ❌ | Currently only supports Word documents | -| OpenAPI | ✅ | ❌ | ❌ | | -| Web Search Skills (i.e. Bing, Google) | ✅ | ❌ | ❌ | | -| Text Chunkers | 🔄 | 🔄 | ❌ | | - -## Design Choices +| | C# | Python | Java | Notes | +|---------------------------------------|:---:|:------:|:----:|-------| +| MsGraph | ✅ | ❌ | ❌ | Contains connectors for OneDrive, Outlook, ToDos, and Organization Hierarchies | +| Document and Data Loading Skills | ✅ | ❌ | ❌ | Pdf, csv, docx, pptx. Currently only supports Word documents | +| OpenAPI | ✅ | ❌ | ❌ | | +| Web Search Skills (i.e. Bing, Google) | ✅ | ❌ | ❌ | | +| Text Chunkers | 🔄 | 🔄 | ❌ | | + +# Design Choices The overall architecture of the core kernel is consistent across all languages, -however, the code should follow common paradigms and style of each language. +however, the code follows 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. +To make the SDK as lightweight as possible, the core packages have +a minimal set of external dependencies. \ No newline at end of file diff --git a/python/pyproject.toml b/python/pyproject.toml index 55289b54bda4..bb780baa5782 100644 --- a/python/pyproject.toml +++ b/python/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "semantic-kernel" -version = "0.2.9.dev" +version = "0.3.0.dev" description = "" authors = ["Microsoft "] readme = "pip/README.md"