While the overall architecture of the kernel is consistent across all languages, we made sure the SDK for each language follows common paradigms and styles in each language to make it feel native and easy to use.
Available features
Today, not all features are available in all languages. The following tables show which features are available in each language. The 🔄 symbol indicates that the feature is partially implemented, please see the associated note column for more details. The ❌ symbol indicates that the feature is not yet available in that language; if you would like to see a feature implemented in a language, please consider contributing to the project or opening an issue.
AI Services
Services
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
AI service endpoints
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
Tokenizers
Tokenizers
C#
Python
Java
Notes
GPT2
✅
✅
✅
GPT3
✅
❌
❌
tiktoken
🔄
❌
❌
Coming soon to Python and C#. Can be manually added to Python via pip install tiktoken
Currently supported on Python 3.9+, 3.8 coming soon
Plugins
Plugins
C#
Python
Java
Notes
MsGraph
✅
❌
❌
Contains plugins for OneDrive, Outlook, ToDos, and Organization Hierarchies
Document and data loading plugins (i.e. pdf, csv, docx, pptx)
✅
❌
❌
Currently only supports Word documents
OpenAPI
✅
❌
❌
Web search plugins (i.e. Bing, Google)
✅
✅
❌
Text chunkers
🔄
🔄
❌
Notes about the Python SDK
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.