Поддерживаемые языки семантического ядра
Планы семантического ядра для предоставления поддержки следующим языкам:
- 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-core
azure-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 соединителя поиска и памяти .
Список соединителей хранилища векторов и поддержка языка для каждого из них см . в списке соединителей.