Расширение Azure OpenAI для Функции Azure

Внимание

Расширение Azure OpenAI для Функции Azure в настоящее время находится в предварительной версии.

Расширение Azure OpenAI для функций Azure реализует набор триггеров и привязок, которые позволяют легко интегрировать функции и поведение Azure OpenAI в Модели Foundry в выполнение кода функции.

Функции Azure — это служба вычислений на основе событий, которая предоставляет набор триггеров и привязок для легкого подключения к другим службам Azure.

Интеграция Между Azure OpenAI и Функциями позволяет создавать функции, которые могут:

Действие Тип триггера и привязки
Использование стандартного текстового запроса для завершения содержимого Входная привязка ввода текста OpenAI в Azure OpenAI
Ответ на запрос помощника на вызов функции Триггер помощника по Azure OpenAI
Создание помощника Помощник по Azure OpenAI создает выходную привязку
Сообщение помощника Привязка входных данных помощника по Azure OpenAI
Получение журнала помощников Входная привязка запроса Помощника по Azure OpenAI
Чтение внедренных текста Входная привязка Azure OpenAI для внедрения
Запись в векторную базу данных Выходная привязка хранилища встраивающих модулей Azure OpenAI
Чтение из векторной базы данных Привязка входных данных семантического поиска Azure OpenAI

Установка расширения

Установленный пакет NuGet расширения зависит от режима C# в процессе или изолированном рабочем процессе, который вы используете в приложении-функции:

Добавьте расширение Azure OpenAI в проект, установив пакет NuGet Microsoft.Azure.Functions.Worker.Extensions.OpenAI NuGet, который можно сделать с помощью интерфейса командной строки .NET:

dotnet add package Microsoft.Azure.Functions.Worker.Extensions.OpenAI  --prerelease

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

Установка пакета

Вы можете добавить расширение предпросмотра, добавив или заменив следующий код в вашем host.json файле, который специально предназначен для версии предварительного просмотра пакета 4.x, содержащей расширение OpenAI:

{
  "version": "2.0",
  "extensionBundle": {
    "id": "Microsoft.Azure.Functions.ExtensionBundle.Preview",
    "version": "[4.*, 5.0.0)"
  }
}

В настоящее время Go не поддерживается для этой функции.

Connections

Чтобы использовать расширение связывания Azure OpenAI, необходимо указать соединение с определением модели OpenAI. Установите соединение модели OpenAI в ваших привязках, используя один из следующих подходов:

  • Используйте свойство AIConnectionName привязки (предпочтительнее для Azure OpenAI).
  • Установите AZURE_OPENAI_ENDPOINT и AZURE_OPENAI_KEY в настройках приложения (для Azure OpenAI).
  • Настройте только Open_API_Key в настройках приложения (для https://api.openai.com).

Способ настройки соединения зависит как от API модели, так и от метода аутентификации, что указано в следующей таблице:

API аутентификации/модели Azure OpenAI OpenAI (https://api.openai.com)
Управляемое соединение идентичности AIConnectionName Не поддерживаются
Ссылка на Key Vault AZURE_OPENAI_ENDPOINT
AZURE_OPENAI_KEY
Open_API_Key
Справочник конфигурации приложений AZURE_OPENAI_ENDPOINT
AZURE_OPENAI_KEY
Open_API_Key
Общий секрет AZURE_OPENAI_ENDPOINT
AZURE_OPENAI_KEY
Open_API_Key

Используйте управляемые связи на основе идентичности и свойство AIConnectionName .

Когда вы используете AIConnectionName, значение этой настройки свойств зависит от типа соединения:

  • Управляемое соединение идентичности: свойство AIConnectionName является <CONNECTION_NAME_PREFIX> общим для группы настроек, которые вместе определяют соединение на основе идентичности с Azure OpenAI. Для получения дополнительной информации см. раздел «Определить идентичные связи».
  • Key Vault reference: AIConnectionName Настройка свойств возвращает ссылку Azure Key Vault на место, где централизованно поддерживается ключ API. Для получения дополнительной информации смотрите раздел Define Key Vault connections.
  • Reference App Configuration: AIConnectionName Настройка свойств возвращает ссылку на Конфигурация приложений Azure, которая возвращает ключ API или ссылку на Key Vault. Для получения дополнительной информации см. Конфигурация приложений Azure в статье о соединениях.
  • Ключ API: Настройка свойств разрешается в настройки приложения, AIConnectionName содержащие конечную точку и ключ напрямую. Поскольку общие ключи могут быть скомпрометированы, используйте управляемые идентификационные соединения, когда это возможно. Для получения дополнительной информации см. раздел «Определить соединения».

Чтобы узнать больше о связях соединениях, см. раздел «Управление соединениями в Функции Azure».

Привязки OpenAI включают AIConnectionName свойство, которое можно использовать <ConnectionNamePrefix> для указания группы настроек приложений, определяющих соединение с Azure OpenAI:

Имя настройки Описание
<CONNECTION_NAME_PREFIX>__endpoint Устанавливает URI-конечную точку сервиса Azure OpenAI. Этот параметр всегда требуется.
<CONNECTION_NAME_PREFIX>__clientId Задает определенное удостоверение, назначаемое пользователем, для использования при получении маркера доступа. Требуется, чтобы <CONNECTION_NAME_PREFIX>__credential было задано значением managedidentity. Свойство принимает идентификатор клиента, соответствующий назначаемому пользователем удостоверению, которое назначено приложению. Недопустимо указать идентификатор ресурса и идентификатор клиента. Если не указать это свойство, используется системная идентичность. Это свойство используется по-разному в локальных сценариях разработки, если credential не следует задавать.
<CONNECTION_NAME_PREFIX>__credential Определяет способ получения маркера доступа для подключения. Используется managedidentity для проверки подлинности управляемого удостоверения. Это значение допустимо только в том случае, если управляемое удостоверение доступно в среде размещения.
<CONNECTION_NAME_PREFIX>__managedIdentityResourceId Когда credential установлено в managedidentity, установите это свойство для указания идентификатора ресурса при получении токена. Свойство принимает идентификатор ресурса, соответствующий идентификатору ресурса определяемого пользователем управляемого удостоверения. Недопустимо указать идентификатор ресурса и идентификатор клиента. Если вы не указываете ни то, ни другое, используется системная идентичность. Это свойство используется по-разному в локальных сценариях разработки, если credential не следует задавать.
<CONNECTION_NAME_PREFIX>__key Устанавливает общий секретный ключ, необходимый для доступа к конечной точке сервиса Azure OpenAI, используя аутентификацию по ключу. В качестве лучшей практики безопасности всегда используйте Microsoft Entra ID с управляемыми идентичностями для аутентификации.

Учитывайте эти управляемые настройки соединения идентичности, когда вы устанавливаете AIConnectionName свойство на :myAzureOpenAI

  • myAzureOpenAI__endpoint=https://contoso.openai.azure.com/
  • myAzureOpenAI__credential=managedidentity
  • myAzureOpenAI__clientId=aaaaaaaa-bbbb-cccc-1111-222222222222

Во время выполнения хост интерпретирует эти настройки как единую myAzureOpenAI настановку:

"myAzureOpenAI":
{
    "endpoint": "https://contoso.openai.azure.com/",
    "credential": "managedidentity",
    "clientId": "aaaaaaaa-bbbb-cccc-1111-222222222222"
}

Когда вы используете управляемые идентичности, обязательно добавьте свою личность в роль пользователя Cognitive Services OpenAI .

При локальном запуске добавьте эти настройки в файл проектаlocal.settings.json . Дополнительные сведения см. в статье "Локальная разработка с использованием подключений на основе удостоверений".

Дополнительные сведения см. в разделе Работа с параметрами приложения.