Bagikan melalui


Bahasa Kernel Semantik yang didukung

Semantic Kernel berencana memberikan dukungan untuk bahasa berikut:

  • C#
  • Python
  • Java

Meskipun arsitektur keseluruhan kernel konsisten di semua bahasa, kami memastikan SDK untuk setiap bahasa mengikuti paradigma dan gaya umum dalam setiap bahasa untuk membuatnya terasa asli dan mudah digunakan.

Paket SDK yang tersedia

Paket C#

Di C#, ada beberapa paket untuk membantu memastikan bahwa Anda hanya perlu mengimpor fungsionalitas yang Anda butuhkan untuk proyek Anda. Tabel berikut ini memperlihatkan paket yang tersedia di C#.

Nama paket Deskripsi
Microsoft.SemanticKernel Paket utama yang mencakup semuanya untuk memulai
Microsoft.SemanticKernel.Core Paket inti yang menyediakan implementasi untuk Microsoft.SemanticKernel.Abstractions
Microsoft.SemanticKernel.Abstractions Abstraksi dasar untuk Kernel Semantik
Microsoft.SemanticKernel.Connectors.OpenAI Konektor untuk OpenAI
Microsoft.SemanticKernel.Connectors.HuggingFace Konektor untuk memeluk model Wajah
Microsoft.SemanticKernel.Connectors.Google Konektor untuk model Google (misalnya, Gemini)
Microsoft.SemanticKernel.Connectors.MistralAI Konektor untuk model Mistral AI
Microsoft.SemanticKernel.Plugins.OpenApi (Eksperimental) Mengaktifkan pemuatan plugin dari spesifikasi OpenAPI
Microsoft.SemanticKernel.PromptTemplates.Handlebars Mengaktifkan penggunaan templat Handlebars untuk perintah
Microsoft.SemanticKernel.Yaml Menyediakan dukungan untuk menserialisasikan perintah menggunakan file YAML
Microsoft.SemanticKernel.Prompty Menyediakan dukungan untuk menserialisasikan perintah menggunakan file Prompty
Microsoft.SemanticKernel.Agents.Abstractions Menyediakan abstraksi untuk membuat agen
Microsoft.SemanticKernel.Agents.OpenAI Menyediakan dukungan untuk agen Assistant API

Ada paket lain yang tersedia (misalnya, konektor memori), tetapi masih bersifat eksperimental dan belum direkomendasikan untuk penggunaan produksi.

Untuk menginstal salah satu paket ini, Anda dapat menggunakan perintah berikut:

dotnet add package <package-name>

Paket Python

Di Python, ada satu paket yang mencakup semua yang Anda butuhkan untuk mulai menggunakan Semantic Kernel. Untuk menginstal paket, Anda dapat menggunakan perintah berikut:

pip install semantic-kernel

Pada PyPI di bawah Provides-Extra ekstra tambahan yang dapat Anda instal juga tercantum dan ketika digunakan yang akan menginstal paket yang diperlukan untuk menggunakan SK dengan konektor atau layanan tertentu, Anda dapat menginstalnya dengan sintaks kurung siku misalnya:

pip install semantic-kernel[azure]

Ini akan menginstal Semantic Kernel, serta versi tertentu yang diuji dari: azure-ai-inference, , azure-search-documents, azure-coreazure-identity, azure-cosmos dan msgraph-sdk (dan dependensi apa pun dari paket tersebut). Demikian pula ekstra hugging_face akan menginstal transformers dan sentence-transformers.

Paket Java

Untuk Java, Semantic Kernel memiliki paket berikut; semua berada di bawah Id com.microsoft.semantic-kernelgrup , dan dapat diimpor dari maven.

    <dependency>
        <groupId>com.microsoft.semantic-kernel</groupId>
        <artifactId>semantickernel-api</artifactId>
    </dependency>

BOM disediakan yang dapat digunakan untuk menentukan versi semua paket Kernel Semantik.

    <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 – BOM proyek Maven yang dapat digunakan untuk menentukan versi semua paket Kernel Semantik.
  • semantickernel-api – Paket yang mendefinisikan API publik inti untuk Kernel Semantik untuk proyek Maven.
  • semantickernel-aiservices-openai –Menyediakan konektor yang dapat digunakan untuk berinteraksi dengan OPENAI API.

Di bawah ini adalah contoh XML POM untuk proyek sederhana yang menggunakan OpenAI.

<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>

Fitur yang tersedia di setiap SDK

Tabel berikut ini memperlihatkan fitur mana yang tersedia dalam setiap bahasa. Simbol πŸ”„ menunjukkan bahwa fitur diimplementasikan sebagian, silakan lihat kolom catatan terkait untuk detail selengkapnya. Simbol ❌ menunjukkan bahwa fitur belum tersedia dalam bahasa tersebut; jika Anda ingin melihat fitur yang diimplementasikan dalam bahasa, pertimbangkan untuk berkontribusi pada proyek atau membuka masalah.

Kemampuan inti

Layanan C# Python Java Catatan
Permintaan βœ… βœ… βœ… Untuk melihat daftar lengkap format templat dan serialisasi yang didukung, lihat tabel di bawah ini
Fungsi dan plugin asli βœ… βœ… βœ…
Plugin OpenAPI βœ… βœ… βœ… Java memiliki sampel yang menunjukkan cara memuat plugin OpenAPI
Panggilan fungsi otomatis βœ… βœ… βœ…
Buka log Telemetri βœ… πŸ”„ ❌
Kait dan filter βœ… βœ… βœ…

Format templat perintah

Saat menulis permintaan, Semantic Kernel menyediakan berbagai bahasa templat yang memungkinkan Anda menyematkan variabel dan memanggil fungsi. Tabel berikut ini memperlihatkan bahasa templat mana yang didukung dalam setiap bahasa.

Format C# Python Java Catatan
Bahasa templat Kernel Semantik βœ… βœ… βœ…
Setang βœ… βœ… βœ…
Liquid βœ… ❌ ❌
Jinja2 ❌ βœ… ❌

Format serialisasi perintah

Setelah membuat perintah, Anda dapat membuat serialisasinya sehingga dapat disimpan atau dibagikan di seluruh tim. Tabel berikut ini memperlihatkan format serialisasi mana yang didukung dalam setiap bahasa.

Format C# Python Java Catatan
YAML βœ… βœ… βœ…
Prompty ❌ βœ… ❌

Modalitas Layanan AI

Layanan C# Python Java Catatan
Pembuatan Teks βœ… βœ… βœ… Contoh: Text-Davinci-003
Penyelesaian Obrolan βœ… βœ… βœ… Contoh: GPT4, Chat-GPT
Penyematan Teks (Eksperimental) βœ… βœ… βœ… Contoh: Text-Embeddings-Ada-002
Teks ke Gambar (Eksperimental) βœ… βœ… ❌ Contoh: Dall-E
Gambar ke Teks (Eksperimental) βœ… βœ… ❌ Contoh: Pix2Struct
Teks ke Audio (Eksperimental) βœ… ❌ ❌ Contoh: Teks ke ucapan
Audio ke Teks (Eksperimental) βœ… ❌ ❌ Contoh: Berbisik

Konektor Layanan AI

Titik akhir C# Python Java Catatan
OpenAI βœ… βœ… βœ…
Azure OpenAI βœ… βœ… βœ…
Titik akhir lain yang mendukung API OpenAI βœ… βœ… βœ… Termasuk Ollama, LLM Studio, Azure Model-as-a-service, dll.
Memeluk API Inferensi Wajah πŸ”„ ❌ ❌ Segera hadir di Python, tidak semua skenario dicakup untuk .NET

Konektor Memori (Eksperimental)

Penting

Semua konektor memori yang ada saat ini bersifat eksperimental dan akan digantikan oleh konektor Vector Store. Ini akan memberikan lebih banyak fungsionalitas melalui lapisan abstraksi yang diperbarui.

Konektor Memori C# Python Java Catatan
Pencarian Azure AI βœ… βœ… βœ…
Chroma βœ… βœ… ❌
DuckDB βœ… ❌ ❌
Milvus πŸ”„ βœ… ❌
Pinecone βœ… βœ… ❌
Postgres βœ… βœ… ❌
Qdrant βœ… πŸ”„ ❌
Redis βœ… πŸ”„ ❌
Sqlite βœ… ❌ πŸ”„
Weaviate βœ… βœ… ❌

Konektor Penyimpanan Vektor (Eksperimental)

Penting

Semua konektor Vector Store yang ada saat ini bersifat eksperimental dan sedang menjalani pengembangan aktif untuk meningkatkan pengalaman menggunakannya. Untuk memberikan umpan balik tentang proposal terbaru, silakan merujuk ke ADR Konektor Pencarian dan Memori aktif.

Untuk daftar konektor penyimpanan vektor di luar kotak dan dukungan bahasa untuk masing-masing konektor, lihat konektor out of the box.