サポートされているセマンティック カーネル言語
セマンティック カーネルは、次の言語のサポートを提供することを計画しています。
- C#
- Python
- Java
カーネルの全体的なアーキテクチャはすべての言語で一貫していますが、各言語の SDK が各言語の共通のパラダイムとスタイルに従って、ネイティブで使いやすいものになるようにしました。
使用可能な SDK パッケージ
C# パッケージ
C# には、プロジェクトに必要な機能のみをインポートする必要があることを確認するために役立つパッケージがいくつかあります。 次の表に、C# で使用可能なパッケージを示します。
パッケージ名 | 説明 |
---|---|
Microsoft.SemanticKernel |
作業を開始するためのすべてを含むメイン パッケージ |
Microsoft.SemanticKernel.Core |
の実装を提供するコア パッケージ Microsoft.SemanticKernel.Abstractions |
Microsoft.SemanticKernel.Abstractions |
セマンティック カーネルの基本抽象化 |
Microsoft.SemanticKernel.Connectors.OpenAI |
OpenAI 用コネクタ |
Microsoft.SemanticKernel.Connectors.HuggingFace |
ハギングフェイスモデル用コネクタ |
Microsoft.SemanticKernel.Connectors.Google |
Google モデルのコネクタ (例: Gemini) |
Microsoft.SemanticKernel.Connectors.MistralAI |
Mistral AI モデルのコネクタ |
Microsoft.SemanticKernel.Plugins.OpenApi (試験段階) |
OpenAPI 仕様からのプラグインの読み込みを有効にします |
Microsoft.SemanticKernel.PromptTemplates.Handlebars |
プロンプトに Handlebars テンプレートを使用できるようにします |
Microsoft.SemanticKernel.Yaml |
YAML ファイルを使用したプロンプトのシリアル化のサポートを提供します |
Microsoft.SemanticKernel.Prompty |
Prompty ファイルを使用したプロンプトのシリアル化のサポートを提供します |
Microsoft.SemanticKernel.Agents.Abstractions |
エージェントを作成するための抽象化を提供します |
Microsoft.SemanticKernel.Agents.OpenAI |
アシスタント API エージェントのサポートを提供します |
他にも使用可能なパッケージ (メモリ コネクタなど) がありますが、これらはまだ試験段階であり、運用環境での使用にはまだ推奨されていません。
これらのパッケージのいずれかをインストールするには、次のコマンドを使用します。
dotnet add package <package-name>
Python パッケージ
Python には、セマンティック カーネルの使用を開始するために必要なものがすべて含まれる 1 つのパッケージがあります。 パッケージをインストールするには、次のコマンドを使用します。
pip install semantic-kernel
PyPI ではProvides-Extra
追加の追加機能も一覧表示され、使用すると、その特定のコネクタまたはサービスで SK を使用するために必要なパッケージをインストールする場合は、次のように角かっこ構文を使用してインストールできます。
pip install semantic-kernel[azure]
これにより、セマンティック カーネルと、 azure-ai-inference
、 azure-search-documents
、 azure-core
、 azure-identity
、 azure-cosmos
、 msgraph-sdk
(およびこれらのパッケージの依存関係) の特定のテスト済みバージョンがインストールされます。 同様に、追加の hugging_face
は transformers
と sentence-transformers
をインストールします。
Java パッケージ
Java の場合、セマンティック カーネルには次のパッケージがあります。すべてがグループ ID com.microsoft.semantic-kernel
の下にあり、maven からインポートできます。
<dependency>
<groupId>com.microsoft.semantic-kernel</groupId>
<artifactId>semantickernel-api</artifactId>
</dependency>
すべてのセマンティック カーネル パッケージのバージョンを定義するために使用できる BOM が用意されています。
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.microsoft.semantic-kernel</groupId>
<artifactId>semantickernel-bom</artifactId>
<version>${semantickernel.version}</version>
<scope>import</scope>
<type>pom</type>
</dependency>
</dependencies>
</dependencyManagement>
semantickernel-bom
– すべてのセマンティック カーネル パッケージのバージョンを定義するために使用できる Maven プロジェクト BOM。semantickernel-api
– Maven プロジェクトのセマンティック カーネルのコア パブリック API を定義するパッケージ。semantickernel-aiservices-openai
–OpenAI API との対話に使用できるコネクタを提供します。
OpenAI を使用する単純なプロジェクトの POM XML の例を次に示します。
<project>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.microsoft.semantic-kernel</groupId>
<artifactId>semantickernel-bom</artifactId>
<version>${semantickernel.version}</version>
<scope>import</scope>
<type>pom</type>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>com.microsoft.semantic-kernel</groupId>
<artifactId>semantickernel-api</artifactId>
</dependency>
<dependency>
<groupId>com.microsoft.semantic-kernel</groupId>
<artifactId>semantickernel-connectors-ai-openai</artifactId>
</dependency>
</dependencies>
</project>
各 SDK で使用可能な機能
次の表に、各言語で使用できる機能を示します。 🔄記号は、機能が部分的に実装されていることを示しています。詳細については、関連するノート列を参照してください。 ❌記号は、その機能がその言語でまだ使用されていないことを示します。言語で実装されている機能を表示する場合は、プロジェクトへのまたは問題のオープンを検討してください。
コア機能
サービス | C# | Python | Java | メモ |
---|---|---|---|---|
プロンプト | ✅ | ✅ | ✅ | サポートされているテンプレートとシリアル化形式の完全な一覧については、次の表を参照してください。 |
ネイティブ関数とプラグイン | ✅ | ✅ | ✅ | |
OpenAPI プラグイン | ✅ | ✅ | ✅ | Java には、OpenAPI プラグインを読み込む方法を示すサンプルがあります |
関数の自動呼び出し | ✅ | ✅ | ✅ | |
テレメトリ ログを開く | ✅ | 🔄 | ❌ | |
フックとフィルター | ✅ | ✅ | ✅ |
プロンプト テンプレートの形式
プロンプトを作成するときに、セマンティック カーネルには、変数を埋め込んで関数を呼び出すさまざまなテンプレート言語が用意されています。 次の表に、各言語でサポートされているテンプレート言語を示します。
形式 | C# | Python | Java | メモ |
---|---|---|---|---|
セマンティック カーネル テンプレート言語 | ✅ | ✅ | ✅ | |
ハンドルバー | ✅ | ✅ | ✅ | |
Liquid | ✅ | ❌ | ❌ | |
Jinja2 | ❌ | ✅ | ❌ |
シリアル化の形式を確認する
プロンプトを作成したら、それをシリアル化して、チーム間で保存または共有できるようにします。 次の表に、各言語でサポートされているシリアル化形式を示します。
形式 | C# | Python | Java | メモ |
---|---|---|---|---|
YAML | ✅ | ✅ | ✅ | |
Prompty | ❌ | ✅ | ❌ |
AI サービスのモダリティ
サービス | C# | Python | Java | メモ |
---|---|---|---|---|
テキストの生成 | ✅ | ✅ | ✅ | 例: Text-Davinci-003 |
Chat Completion | ✅ | ✅ | ✅ | 例: GPT4、Chat-GPT |
テキスト埋め込み (試験段階) | ✅ | ✅ | ✅ | 例: Text-Embeddings-Ada-002 |
テキストから画像へ (試験段階) | ✅ | ✅ | ❌ | 例: Dall-E |
画像からテキストへの変換 (試験段階) | ✅ | ✅ | ❌ | 例: Pix2Struct |
テキストからオーディオへ (試験段階) | ✅ | ❌ | ❌ | 例: テキスト読み上げ |
音声テキスト変換 (試験段階) | ✅ | ❌ | ❌ | 例: ささやき |
AI サービス コネクタ
エンドポイント | C# | Python | Java | メモ |
---|---|---|---|---|
OpenAI | ✅ | ✅ | ✅ | |
Azure OpenAI | ✅ | ✅ | ✅ | |
OpenAI API をサポートするその他のエンドポイント | ✅ | ✅ | ✅ | Ollama、LLM Studio、Azure サービスとしてのモデルなどが含まれます。 |
Face Inference API の抱き合い | 🔄 | ❌ | ❌ | Python に近日公開予定です。すべてのシナリオが .NET でカバーされるわけではありません |
メモリ コネクタ (試験段階)
重要
既存のすべてのメモリ コネクタは現在試験段階であり、Vector Store コネクタに置き換えられます。 これらは、更新された抽象化レイヤーを介してより多くの機能を提供します。
メモリ コネクタ | C# | Python | Java | メモ |
---|---|---|---|---|
Azure AI Search | ✅ | ✅ | ✅ | |
Chroma | ✅ | ✅ | ❌ | |
DuckDB | ✅ | ❌ | ❌ | |
Milvus | 🔄 | ✅ | ❌ | |
Pinecone | ✅ | ✅ | ❌ | |
Postgres | ✅ | ✅ | ❌ | |
Qdrant | ✅ | 🔄 | ❌ | |
Redis | ✅ | 🔄 | ❌ | |
Sqlite | ✅ | ❌ | 🔄 | |
Weaviate | ✅ | ✅ | ❌ |
ベクター ストア コネクタ (試験段階)
重要
既存のすべての Vector Store コネクタは現在試験段階にあり、それらを使用するエクスペリエンスを向上させるために積極的な開発を行っています。 最新の提案に関するフィードバックを提供するには、アクティブな Search および Memory Connector ADR を参照してください。
既定のベクター ストア コネクタの一覧と、それぞれの言語サポートについては、 アウト オブ ザ ボックス コネクタを参照してください。