Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Semantic Kernel предоставляет множество различных компонентов, которые можно использовать по отдельности или вместе. В этой статье представлен обзор различных компонентов и объясняется связь между ними.
Соединители служб ИИ
Соединители служб ИИ Semantic Kernel предоставляют уровень абстракции, предоставляющий несколько типов служб ИИ от разных поставщиков через общий интерфейс. Поддерживаемые службы включают завершение чата, создание текста, внедрение текста, текст в изображение, изображение в текст, текст в звук и звук в текст.
Когда реализация регистрируется в ядре, службы завершения чата или генерации текста будут использоваться по умолчанию при любых вызовах методов ядра. Ни одна из других поддерживаемых служб не будет использоваться автоматически.
Tip
Дополнительные сведения об использовании служб ИИ см. в статье Adding AI services to Semantic Kernel.
Коннекторы для векторного хранилища (памяти)
Соединители Semantic Kernel Vector Store предоставляют слой абстракции, предоставляющий хранилища векторов от разных поставщиков через общий интерфейс. Ядро не использует автоматически ни одно зарегистрированное хранилище векторов, однако функцию Vector Search можно легко подключить к ядру в виде плагина; в этом случае плагин становится доступен для шаблонов запросов и модели ИИ для завершения чата.
Tip
Дополнительные сведения об использовании соединителей памяти см. в разделе Adding AI services to Semantic Kernel.
Функции и подключаемые модули
Плагины — это именованные контейнеры функций. Каждый может содержать одну или несколько функций. Подключаемые модули можно зарегистрировать в ядре, что позволяет ядру использовать их двумя способами:
- Рекламируйте их в ИИ завершения чата, чтобы ИИ может выбрать их для вызова.
- Сделайте их доступными для вызова из шаблона во время отрисовки шаблона.
Функции можно легко создавать из многих источников, в том числе из машинного кода, спецификаций OpenAPI, ITextSearch реализаций для сценариев RAG, а также из шаблонов запросов.
Tip
Дополнительные сведения о различных источниках подключаемых модулей см. в разделе "Что такое подключаемый модуль?".
Tip
Дополнительные сведения о подключаемых модулях для ИИ завершения чата см. в разделе Вызов функций при завершении чата.
Шаблоны запросов
Шаблоны промптов позволяют разработчику или промпт-инженеру создавать шаблон, который объединяет контекст и инструкции для ИИ с пользовательским вводом и выходными данными функции. Например, шаблон может содержать инструкции для модели ИИ завершения чата и заполнители для ввода пользователей, а также жестко закодированные вызовы подключаемых модулей, которые всегда должны выполняться перед вызовом модели ИИ завершения чата.
Шаблоны запросов можно использовать двумя способами:
- В качестве отправной точки процесса Chat Completion, поручая ядру обработать шаблон и вызвать ИИ-модель Chat Completion, используя полученный результат рендеринга.
- Как функция подключаемого модуля, чтобы ее можно было вызвать так же, как и любую другую функцию.
Когда используется шаблон запроса, он сначала будет отображаться, а также все ссылки на жестко закодированные функции, содержащиеся в нем, будут выполнены. Затем сформированный запрос будет передан модели ИИ для завершения чата. Результат, сгенерированный ИИ, будет возвращён вызывающей стороне. Если шаблон запроса был зарегистрирован как функция плагина, модель ИИ Chat Completion могла выбрать эту функцию для выполнения, и в этом случае вызывающей стороной является Semantic Kernel, действующий от имени модели ИИ.
Использование шаблонов запросов в качестве функций подключаемого модуля таким образом может привести к довольно сложным потокам. Например, рассмотрим сценарий, в котором шаблон промпта A зарегистрирован как плагин.
В то же время другой шаблон B запроса может передаваться в ядро для запуска потока завершения чата.
B может содержать жёстко заданный вызов A.
Это приведет к следующим шагам:
-
Bначинается отрисовка, и выполнение промпта обнаруживает ссылку наA -
Aотрисовывается. - Результат рендеринга
Aпередаётся в модель ИИ для завершения чата. - Результат работы модели ИИ Chat Completion возвращается в
B. - Отрисовка
Bзавершена. - Результат рендеринга
Bпередаётся в ИИ-модель Chat Completion. - Результат работы ИИ-модели Chat Completion возвращается вызывающему объекту.
Кроме того, рассмотрим сценарий, в котором нет жёстко заданного вызова от B к A.
Если вызов функции включен, модель ИИ завершения чата по-прежнему может решить, что A следует вызывать, так как для этого требуются данные или функции, которые A могут предоставлять.
Регистрация шаблонов запросов в качестве функций подключаемого модуля позволяет создавать функциональные возможности, описываемые с помощью человеческого языка вместо фактического кода. Разделение функциональных возможностей на подключаемый модуль, подобное этому, позволяет модели ИИ подумать об этом отдельно от основного потока выполнения и привести к повышению частоты успешности модели ИИ, так как она может сосредоточиться на одной проблеме одновременно.
См. следующую схему простого потока, запускаемого из шаблона запроса.
Tip
Дополнительные сведения о шаблонах запросов см. в статье "Что такое запросы?".
Фильтры
Фильтры предоставляют способ выполнения пользовательских действий до и после определенных событий во время потока завершения чата. К этим событиям относятся:
- До и после вызова функции.
- До и после отрисовки подсказки.
Фильтры должны быть зарегистрированы в ядре для вызова во время потока завершения чата.
Обратите внимание, что, поскольку шаблоны промптов всегда преобразуются в KernelFunctions перед выполнением, для шаблона промпта будут вызываться как фильтры функций, так и фильтры промптов. Поскольку при наличии нескольких фильтров они являются вложенными, фильтры функций выступают как внешние фильтры, а фильтры запросов — как внутренние.
Tip
Дополнительные сведения о фильтрах см. в разделе "Что такое фильтры?".