Поделиться через


Поддерживаемые языки семантического ядра

Планы семантического ядра для предоставления поддержки следующим языкам:

  • C#
  • Python
  • Java

Хотя общая архитектура ядра согласована на всех языках, мы убедились, что пакет SDK для каждого языка соответствует общим парадигмам и стилям на каждом языке, чтобы сделать его собственным и простым в использовании.

Доступные пакеты SDK

Пакеты C#

В C#существует несколько пакетов, которые помогут вам импортировать только необходимые функции для проекта. В следующей таблице показаны доступные пакеты в C#.

Имя пакета Description
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 Соединитель для моделей Мистраль ИИ
Microsoft.SemanticKernel.Plugins.OpenApi (Экспериментальный) Включает загрузку подключаемых модулей из спецификаций OpenAPI
Microsoft.SemanticKernel.PromptTemplates.Handlebars Включает использование шаблонов Handlebars для запросов
Microsoft.SemanticKernel.Yaml Предоставляет поддержку сериализации запросов с помощью файлов YAML
Microsoft.SemanticKernel.Prompty Предоставляет поддержку сериализации запросов с помощью файлов с запросами
Microsoft.SemanticKernel.Agents.Abstractions Предоставляет абстракции для создания агентов
Microsoft.SemanticKernel.Agents.OpenAI Предоставляет поддержку агентов API Помощника

Существуют другие пакеты (например, соединители памяти), но они по-прежнему экспериментальны и пока не рекомендуется для использования в рабочей среде.

Чтобы установить любой из этих пакетов, можно использовать следующую команду:

dotnet add package <package-name>

Пакеты Python

В Python есть один пакет, включающий все, что необходимо приступить к работе с семантической ядром. Чтобы установить пакет, можно использовать следующую команду:

pip install semantic-kernel

В PyPI под Provides-Extra дополнительными дополнительными дополнительными компонентами также перечислены и при использовании, которые будут устанавливать пакеты, необходимые для использования с этим соединителем или службой, можно установить их с синтаксисом квадратной скобки для примера:

pip install semantic-kernel[azure]

При этом будут установлены семантические ядра, а также определенные тестируемые версии: azure-ai-inference, azure-search-documents, azure-cosmos azure-coreazure-identityи (и msgraph-sdk все зависимости этих пакетов). Аналогичным образом будет установлен transformers и sentence-transformersдополнительныйhugging_face.

Пакеты Java

Для Java семантический ядро содержит следующие пакеты; все находятся под идентификатором 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 — BOM проекта Maven, который можно использовать для определения версий всех пакетов семантического ядра.
  • semantickernel-api — пакет, определяющий основной общедоступный API для семантического ядра для проекта Maven.
  • semantickernel-aiservices-openai — предоставляет соединитель, который можно использовать для взаимодействия с API OpenAI.

Ниже приведен пример XML POM для простого проекта, использующего 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>

Доступные функции в каждом пакете SDK

В следующих таблицах показано, какие функции доступны на каждом языке. Символ 🔄 указывает, что функция частично реализована, см. соответствующий столбец заметок для получения дополнительных сведений. Символ ❌ указывает, что функция еще не доступна на этом языке. Если вы хотите увидеть функцию, реализованную на языке, попробуйте внести свой вклад в проект или открыть проблему.

Основные возможности

Службы C# Python Java Примечания.
Запросы Полный список поддерживаемых форматов шаблонов и сериализации см. в таблицах ниже.
Собственные функции и подключаемые модули
Подключаемые модули OpenAPI Java содержит пример, демонстрирующий загрузку подключаемых модулей OpenAPI
Автоматический вызов функции
Открытие журналов телеметрии 🔄
Перехватчики и фильтры

Форматы шаблонов запроса

При создании запросов семантический ядро предоставляет различные языки шаблонов, которые позволяют внедрять переменные и вызывать функции. В следующей таблице показано, какие языки шаблонов поддерживаются на каждом языке.

Список типов C# Python Java Примечания.
Язык шаблона семантического ядра
Рули
Liquid
Jinja2

Форматы сериализации запроса

После создания запроса его можно сериализовать таким образом, чтобы его можно было хранить или совместно использовать между командами. В следующей таблице показано, какие форматы сериализации поддерживаются на каждом языке.

Список типов C# Python Java Примечания.
YAML
Запрос

Модальности служб ИИ

Службы C# Python Java Примечания.
Создание текста Пример: Text-Davinci-003
Завершение чата Пример: GPT4, Chat-GPT
Внедрение текста (экспериментальный) Пример: Text-Embeddings-Ada-002
Текст на изображение (экспериментальный) Пример: Dall-E
Изображение в текст (экспериментальный) Пример: Pix2Struct
Текст на звук (экспериментальный) Пример: преобразование текста в речь
Звук в текст (экспериментальный) Пример: Whisper

Соединители служб ИИ

Конечные точки C# Python Java Примечания.
OpenAI
Azure OpenAI
Другие конечные точки, которые поддерживают API OpenAI Включает Ollama, LLM Studio, Azure Model-as-service и т. д.
API вывода лиц 🔄 В ближайшее время в Python рассматриваются не все сценарии для .NET.

Соединители памяти (экспериментальные)

Внимание

Все существующие соединители памяти в настоящее время экспериментальны и будут заменены соединителями Vector Store. Они обеспечивают более функциональные возможности с помощью обновленного уровня абстракции.

Соединители памяти C# Python Java Примечания.
Поиск с использованием ИИ Azure
Цветность
DuckDB
Милвус 🔄
Pinecone
Postgres
Qdrant 🔄
Redis 🔄
Sqlite 🔄
Weaviate

Соединители хранилища векторов (экспериментальные)

Внимание

Все существующие соединители Vector Store в настоящее время экспериментальны и проходят активную разработку для улучшения возможностей их использования. Чтобы предоставить отзыв о последнем предложении, обратитесь к активным adR соединителя поиска и памяти .

Список соединителей хранилища векторов и поддержка языка для каждого из них см . в списке соединителей.