|
1 | | -# Kernel Feature Matrix by Language |
| 1 | +# Semantic Kernel Feature Matrix by Language |
2 | 2 |
|
3 | 3 | **Legend** |
4 | 4 |
|
|
10 | 10 |
|
11 | 11 | | | C# | Python | Java | Notes | |
12 | 12 | |-----------------------------------|:----:|:------:|:----:|-------| |
13 | | -| TextGeneration | ✅ | ✅ | ✅ | Example: Text-Davinci-003 | |
14 | | -| TextEmbeddings | ✅ | ✅ | ✅ | Example: Text-Embeddings-Ada-002 | |
15 | | -| ChatCompletion | ✅ | ✅ | ❌ | Example: GPT4, Chat-GPT | |
16 | | -| Image Generation | ✅ | ❌ | ❌ | Example: Dall-E | |
| 13 | +| Text Generation | ✅ | ✅ | ✅ | Example: text-davinci-003 | |
| 14 | +| Text Embeddings | ✅ | ✅ | ✅ | Example: text-embeddings-ada-002 | |
| 15 | +| Chat Completion | ✅ | ✅ | ❌ | Example: GPT-4, GPT-3.5-turbo | |
| 16 | +| Image Generation | ✅ | ❌ | ❌ | Example: Dall-E 2 | |
17 | 17 |
|
18 | 18 | ## AI Service Endpoints |
19 | 19 |
|
20 | | -| | C# | Python | Java | Notes | |
21 | | -|-----------------------------------|:----:|:------:|:----:|-------| |
22 | | -| OpenAI | ✅ | ✅ | ✅ | | |
23 | | -| AzureOpenAI | ✅ | ✅ | ✅ | | |
24 | | -| Hugging Face Inference API | 🔄 | ❌ | ❌ | Coming soon to Python, not all scenarios are covered for .NET | |
25 | | -| Hugging Face Local | ❌ | ✅ | ❌ | | |
26 | | -| Custom | ✅ | 🔄 | ❌ | Requires the user to define the service schema in their application | |
| 20 | +| | C# | Python | Java | Notes | |
| 21 | +|-----------------------------------|:---:|:------:|:----:|-------| |
| 22 | +| OpenAI | ✅ | ✅ | ✅ | | |
| 23 | +| Azure OpenAI | ✅ | ✅ | ✅ | | |
| 24 | +| Hugging Face Inference API | 🔄 | ❌ | ❌ | Coming soon to Python, not all scenarios are covered for .NET | |
| 25 | +| Hugging Face Local | ❌ | ✅ | ❌ | | |
| 26 | +| Custom | ✅ | 🔄 | ❌ | Requires to define the service schema in the application | |
27 | 27 |
|
28 | 28 | ## Tokenizers |
29 | 29 |
|
30 | | -| | C# | Python | Java | Notes | |
31 | | -|-----------------------------------|:----:|:------:|:----:|-------| |
32 | | -| GPT2 | ✅ | ✅ | ✅ | | |
33 | | -| GPT3 | ✅ | ❌ | ❌ | | |
34 | | -| tiktoken | 🔄 | ❌ | ❌ | Coming soon to Python and C#. Can be manually added to Python via `pip install tiktoken` | |
| 30 | +| | C# | Python | Java | Notes | |
| 31 | +|-----------------------------------|:---:|:------:|:----:|-------| |
| 32 | +| GPT2 | ✅ | ✅ | ✅ | | |
| 33 | +| GPT3 | ✅ | ❌ | ❌ | | |
| 34 | +| tiktoken | ❌ | ❌ | ❌ | Coming soon. Can be added manually to Python via `pip install tiktoken` | |
35 | 35 |
|
36 | 36 | ## Core Skills |
37 | 37 |
|
38 | | -| | C# | Python | Java | Notes | |
39 | | -|-----------------------------------|:----:|:------:|:----:|-------| |
40 | | -| TextMemorySkill | ✅ | ✅ | 🔄 | | |
41 | | -| ConversationSummarySkill | ✅ | ✅ | ❌ | | |
42 | | -| FileIOSkill | ✅ | ✅ | ❌ | | |
43 | | -| HttpSkill | ✅ | ✅ | ❌ | | |
44 | | -| MathSkill | ✅ | ✅ | ❌ | | |
45 | | -| TextSkill | ✅ | ✅ | 🔄 | | |
46 | | -| TimeSkill | ✅ | ✅ | 🔄 | | |
47 | | -| WaitSkill | ✅ | ❌ | ❌ | | |
| 38 | +| | C# | Python | Java | Notes | |
| 39 | +|-----------------------------------|:---:|:------:|:----:|-------| |
| 40 | +| TextMemory Skill | ✅ | ✅ | 🔄 | | |
| 41 | +| ConversationSummary Skill | ✅ | ✅ | ❌ | | |
| 42 | +| FileIO Skill | ✅ | ✅ | ❌ | | |
| 43 | +| Http Skill | ✅ | ✅ | ❌ | | |
| 44 | +| Math Skill | ✅ | ✅ | ❌ | | |
| 45 | +| Text Skill | ✅ | ✅ | 🔄 | | |
| 46 | +| Time Skill | ✅ | ✅ | 🔄 | | |
| 47 | +| Wait Skill | ✅ | ❌ | ❌ | | |
48 | 48 |
|
49 | 49 | ## Planning |
50 | 50 |
|
51 | | -| | C# | Python | Java | Notes | |
52 | | -|-----------------------------------|:----:|:------:|:----:|-------| |
53 | | -| Plan | ✅ | ✅ | ❌ | Need to port the Plan object model | |
54 | | -| BasicPlanner | ❌ | ✅ | ❌ | | |
55 | | -| ActionPlanner | ✅ | ❌ | ❌ | | |
56 | | -| SequentialPlanner | ✅ | ❌ | ❌ | | |
| 51 | +| | C# | Python | Java | Notes | |
| 52 | +|-----------------------------------|:---:|:------:|:----:|-------| |
| 53 | +| Plan | ✅ | 🔄 | ❌ | Plan object model to be completed | |
| 54 | +| BasicPlanner | ❌ | ✅ | ❌ | | |
| 55 | +| ActionPlanner | ✅ | ❌ | ❌ | | |
| 56 | +| SequentialPlanner | ✅ | ❌ | ❌ | | |
| 57 | + |
| 58 | +## Memory Connectors, Vector storage |
| 59 | + |
| 60 | +| | C# | Python | Java | Notes | |
| 61 | +|---------------|:---:|:------:|:----:|-------| |
| 62 | +| Azure Search | ✅ | 🔄 | ❌ | Azure Cognitive Search under development, currently in private preview | |
| 63 | +| Qdrant | ✅ | ❌ | ❌ | | |
| 64 | +| Pinecone | ✅ | ❌ | ❌ | | |
| 65 | +| Weaviate | ❌ | ✅ | ❌ | Currently supported on Python 3.9-3.11, 3.8 coming soon | |
| 66 | +| ChromaDb | ❌ | ✅ | ❌ | | |
| 67 | +| Milvus | ❌ | ❌ | ❌ | Coming soon | |
| 68 | +| Sqlite | ✅ | ❌ | ❌ | Vector optimization requires [sqlite-vss](https://github.com/asg017/sqlite-vss) | |
| 69 | +| Postgres | ✅ | ❌ | ❌ | Vector optimization requires [pgvector](https://github.com/pgvector/pgvector) | |
| 70 | +| CosmosDB | ✅ | ❌ | ❌ | CosmosDB is not optimized for vector storage | |
57 | 71 |
|
58 | 72 | ## Connectors and Skill Libraries |
59 | 73 |
|
60 | | -| | C# | Python | Java | Notes | |
61 | | -|-----------------------------------|:----:|:------:|:----:|-------| |
62 | | -| Qdrant (Memory) | ✅ | ❌ | ❌ | | |
63 | | -| ChromaDb (Memory) | ❌ | 🔄 | ❌ | | |
64 | | -| Milvus (Memory) | ❌ | ❌ | ❌ | | |
65 | | -| Pinecone (Memory) | ✅ | ❌ | ❌ | | |
66 | | -| Weaviate (Memory) | ❌ | ✅ | ❌ | | Vector optimized |
67 | | -| CosmosDB (Memory) | ✅ | ❌ | ❌ | CosmosDB is not optimized for vector storage | |
68 | | -| Sqlite (Memory) | ✅ | ❌ | ❌ | Sqlite is not optimized for vector storage | |
69 | | -| Postgres (Memory) | ✅ | ❌ | ❌ | Vector optimized (required the [pgvector](https://github.com/pgvector/pgvector) extension) | |
70 | | -| Azure Cognitive Search | ✅ | 🔄 | ❌ | | |
71 | | -| MsGraph | ✅ | ❌ | ❌ | Contains connectors for OneDrive, Outlook, ToDos, and Organization Hierarchies | |
72 | | -| Document and Data Loading Skills (i.e. pdf, csv, docx, pptx) | ✅ | ❌ | ❌ | Currently only supports Word documents | |
73 | | -| OpenAPI | ✅ | ❌ | ❌ | | |
74 | | -| Web Search Skills (i.e. Bing, Google) | ✅ | ❌ | ❌ | | |
75 | | -| Text Chunkers | 🔄 | 🔄 | ❌ | | |
76 | | - |
77 | | -## Design Choices |
| 74 | +| | C# | Python | Java | Notes | |
| 75 | +|---------------------------------------|:---:|:------:|:----:|-------| |
| 76 | +| MsGraph | ✅ | ❌ | ❌ | Contains connectors for OneDrive, Outlook, ToDos, and Organization Hierarchies | |
| 77 | +| Document and Data Loading Skills | ✅ | ❌ | ❌ | Pdf, csv, docx, pptx. Currently only supports Word documents | |
| 78 | +| OpenAPI | ✅ | ❌ | ❌ | | |
| 79 | +| Web Search Skills (i.e. Bing, Google) | ✅ | ❌ | ❌ | | |
| 80 | +| Text Chunkers | 🔄 | 🔄 | ❌ | | |
| 81 | + |
| 82 | +# Design Choices |
78 | 83 |
|
79 | 84 | The overall architecture of the core kernel is consistent across all languages, |
80 | | -however, the code should follow common paradigms and style of each language. |
| 85 | +however, the code follows common paradigms and style of each language. |
81 | 86 |
|
82 | 87 | During the initial development phase, many Python best practices have been ignored |
83 | 88 | in the interest of velocity and feature parity. The project is now going through |
84 | 89 | a refactoring exercise to increase code quality. |
85 | 90 |
|
86 | | -To make the Kernel as lightweight as possible, the core pip package should have |
87 | | -a minimal set of external dependencies. On the other hand, the SDK should not |
88 | | -reinvent mature solutions already available, unless of major concerns. |
| 91 | +To make the SDK as lightweight as possible, the core packages have |
| 92 | +a minimal set of external dependencies. |
0 commit comments