Входная привязка ввода текста OpenAI для Функций Azure

Это важно

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

Входная привязка ввода текста в Azure OpenAI позволяет перенести API завершения текста результатов в выполнение кода. Вы можете определить привязку для использования обоих предопределенных запросов с параметрами или передать весь запрос.

Сведения о настройке и настройке расширения Azure OpenAI см. в Функции Azure расширения Azure OpenAI. Дополнительные сведения о завершении Azure OpenAI см. в статье Создание или управление текстом.

Замечание

Ссылки и примеры предоставляются только для модели Node.js версии 4.

Замечание

Ссылки и примеры предоставляются только для модели Python версии 2.

Замечание

Хотя поддерживаются обе модели процессов C#, предоставляются только примеры изолированных рабочих моделей .

Пример

Поддержка Go для этого привязки сейчас недоступна.

В этом примере демонстрируется шаблон шаблонов , где функция триггера HTTP принимает name параметр и внедряет его в текстовый запрос, который затем отправляется в API завершения Azure OpenAI расширением. Ответ на запрос возвращается в ответе HTTP.

[Function(nameof(WhoIs))]
public static IActionResult WhoIs(
    [HttpTrigger(AuthorizationLevel.Function, Route = "whois/{name}")] HttpRequestData req,
    [TextCompletionInput("Who is {name}?", ChatModel = "%CHAT_MODEL_DEPLOYMENT_NAME%", AIConnectionName = "AzureOpenAI")] TextCompletionResponse response)
{
    return new OkObjectResult(response.Content);
}

Этот пример принимает запрос в качестве входных данных, отправляет его непосредственно в API завершения и возвращает ответ в качестве выходных данных.

[Function(nameof(GenericCompletion))]
public static IActionResult GenericCompletion(
    [HttpTrigger(AuthorizationLevel.Function, "post")] HttpRequestData req,
    [TextCompletionInput("{Prompt}", ChatModel = "%CHAT_MODEL_DEPLOYMENT_NAME%", AIConnectionName = "AzureOpenAI")] TextCompletionResponse response,
    ILogger log)
{
    string text = response.Content;
    return new OkObjectResult(text);
}

В этом примере демонстрируется шаблон шаблонов , где функция триггера HTTP принимает name параметр и внедряет его в текстовый запрос, который затем отправляется в API завершения Azure OpenAI расширением. Ответ на запрос возвращается в ответе HTTP.

@FunctionName("WhoIs")
public HttpResponseMessage whoIs(
    @HttpTrigger(
        name = "req", 
        methods = {HttpMethod.GET},
        authLevel = AuthorizationLevel.FUNCTION, 
        route = "whois/{name}") 
        HttpRequestMessage<Optional<String>> request,
    @BindingName("name") String name,
    @TextCompletion(prompt = "Who is {name}?", chatModel = "%CHAT_MODEL_DEPLOYMENT_NAME%", name = "response", isReasoningModel = false, aiConnectionName = "AzureOpenAI") TextCompletionResponse response,
    final ExecutionContext context) {
    return request.createResponseBuilder(HttpStatus.OK)
        .header("Content-Type", "application/json")
        .body(response.getContent())
        .build();
}

Этот пример принимает запрос в качестве входных данных, отправляет его непосредственно в API завершения и возвращает ответ в качестве выходных данных.

@FunctionName("GenericCompletion")
public HttpResponseMessage genericCompletion(
    @HttpTrigger(
        name = "req", 
        methods = {HttpMethod.POST},
        authLevel = AuthorizationLevel.FUNCTION) 
        HttpRequestMessage<Optional<String>> request,
    @TextCompletion(prompt = "{prompt}", chatModel = "%CHAT_MODEL_DEPLOYMENT_NAME%", name = "response", isReasoningModel = false, aiConnectionName = "AzureOpenAI") TextCompletionResponse response,
    final ExecutionContext context) {
    return request.createResponseBuilder(HttpStatus.OK)
        .header("Content-Type", "application/json")
        .body(response.getContent())
        .build();
}

В этом примере демонстрируется шаблон шаблонов , где функция триггера HTTP принимает name параметр и внедряет его в текстовый запрос, который затем отправляется в API завершения Azure OpenAI расширением. Ответ на запрос возвращается в ответе HTTP.

const { app, input } = require("@azure/functions");

// This OpenAI completion input requires a {name} binding value.
const openAICompletionInput = input.generic({
    prompt: 'Who is {name}?',
    maxTokens: '100',
    type: 'textCompletion',
    chatModel: '%CHAT_MODEL_DEPLOYMENT_NAME%',
    aiConnectionName: 'AzureOpenAI'
})

app.http('whois', {
    methods: ['GET'],
    route: 'whois/{name}',
    authLevel: 'function',
    extraInputs: [openAICompletionInput],
    handler: async (_request, context) => {
        var response = context.extraInputs.get(openAICompletionInput)
        return { body: response.content.trim() }
    }
});

В этом примере демонстрируется шаблон шаблонов , где функция триггера HTTP принимает name параметр и внедряет его в текстовый запрос, который затем отправляется в API завершения Azure OpenAI расширением. Ответ на запрос возвращается в ответе HTTP.

import { app, input } from "@azure/functions";

// This OpenAI completion input requires a {name} binding value.
const openAICompletionInput = input.generic({
    prompt: 'Who is {name}?',
    maxTokens: '100',
    type: 'textCompletion',
    chatModel: '%CHAT_MODEL_DEPLOYMENT_NAME%',
    aiConnectionName: 'AzureOpenAI'
})

app.http('whois', {
    methods: ['GET'],
    route: 'whois/{name}',
    authLevel: 'function',
    extraInputs: [openAICompletionInput],
    handler: async (_request, context) => {
        var response: any = context.extraInputs.get(openAICompletionInput)
        return { body: response.content.trim() }
    }
});

В этом примере демонстрируется шаблон шаблонов , где функция триггера HTTP принимает name параметр и внедряет его в текстовый запрос, который затем отправляется в API завершения Azure OpenAI расширением. Ответ на запрос возвращается в ответе HTTP.

Ниже приведен файл function.json для TextCompletionResponse:

{
  "bindings": [
    {
      "authLevel": "function",
      "type": "httpTrigger",
      "direction": "in",
      "name": "Request",
      "route": "whois/{name}",
      "methods": [
        "get"
      ]
    },
    {
      "type": "http",
      "direction": "out",
      "name": "Response"
    },
    {
      "type": "textCompletion",
      "direction": "in",
      "name": "TextCompletionResponse",
      "prompt": "Who is {name}?",
      "maxTokens": "100",
      "chatModel": "%CHAT_MODEL_DEPLOYMENT_NAME%",
      "aiConnectionName": "AzureOpenAI"
    }
  ]
}

Дополнительные сведения о свойствах файла function.json см. в разделе "Конфигурация ".

Код просто возвращает текст из API завершения в качестве ответа:

using namespace System.Net

param($Request, $TriggerMetadata, $TextCompletionResponse)

Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
        StatusCode = [HttpStatusCode]::OK
        Body       = $TextCompletionResponse.Content
    })

В этом примере демонстрируется шаблон шаблонов , где функция триггера HTTP принимает name параметр и внедряет его в текстовый запрос, который затем отправляется в API завершения Azure OpenAI расширением. Ответ на запрос возвращается в ответе HTTP.

@app.route(route="whois/{name}", methods=["GET"])
@app.text_completion_input(
    arg_name="response",
    prompt="Who is {name}?",
    max_tokens="100",
    chat_model="%CHAT_MODEL_DEPLOYMENT_NAME%",
    ai_connection_name="AzureOpenAI",
)
def whois(req: func.HttpRequest, response: str) -> func.HttpResponse:
    response_json = json.loads(response)
    return func.HttpResponse(response_json["content"], status_code=200)

Этот пример принимает запрос в качестве входных данных, отправляет его непосредственно в API завершения и возвращает ответ в качестве выходных данных.


@app.route(route="genericcompletion", methods=["POST"])
@app.text_completion_input(
    arg_name="response",
    prompt="{Prompt}",
    chat_model="%CHAT_MODEL_DEPLOYMENT_NAME%",
    ai_connection_name="AzureOpenAI",
)
def genericcompletion(
    req: func.HttpRequest,
    response: str
) -> func.HttpResponse:
    response_json = json.loads(response)
    return func.HttpResponse(response_json["content"], status_code=200)

Атрибуты

Конкретный атрибут, применяемый для определения входной привязки завершения текста, зависит от режима процесса C#.

В изолированной рабочей модели применяется TextCompletionInput для определения входной привязки ввода текста.

Атрибут поддерживает следующие параметры:

Параметр Описание
Подсказка Возвращает или задает запрос на создание завершений, закодированных в виде строки.
AIConnectionName Необязательно. Возвращает или задает имя раздела конфигурации для параметров подключения службы ИИ. Для Azure OpenAI: если указано, найдите значения Endpoint и Key в этом разделе конфигурации. Если этот раздел не указан или раздел не существует, возвращается к переменным среды: AZURE_OPENAI_ENDPOINT и AZURE_OPENAI_KEY. Для проверки подлинности управляемого удостоверения, назначаемого пользователем, это свойство необходимо. Для службы OpenAI (не Azure) задайте переменную среды OPENAI_API_KEY.
ChatModel Необязательно. Возвращает или задает идентификатор модели, используемой в качестве строки, со значением gpt-3.5-turboпо умолчанию.
Температура Необязательно. Возвращает или задает используемую температуру выборки в виде строки между 0 и 2. Более высокие значения (0.8) делают выходные данные более случайными, а более низкие значения, например (0.2), делают выходные данные более ориентированными и детерминированными. Следует использовать либо Temperature или TopP, но не оба.
TopP Необязательно. Возвращает или задает альтернативу выборке с температурой, называемой выборкой ядра в виде строки. В этом методе выборки модель рассматривает результаты маркеров с top_p массой вероятности. Таким образом 0.1 , считаются только маркеры, состоящие из 10 лучших% массы вероятностей. Следует использовать либо Temperature или TopP, но не оба.
MaxTokens Необязательно. Возвращает или задает максимальное количество маркеров для создания в завершении в виде строки со значением по умолчанию 100. Количество маркеров запроса плюс max_tokens не может превышать длину контекста модели. Большинство моделей имеют длину контекста 2048 токенов (за исключением новейших моделей, которые поддерживают 4096).
IsReasoningModel Необязательно. Возвращает или задает значение, указывающее, является ли модель завершения чата моделью причин. Этот параметр является экспериментальным и связан с моделью причин, пока все модели не имеют четности в ожидаемых свойствах с значением falseпо умолчанию.

Аннотации

Заметка TextCompletion позволяет определить входную привязку завершения текста, которая поддерживает следующие параметры:

Элемент Описание
имя Возвращает или задает имя входной привязки.
подсказка Возвращает или задает запрос на создание завершений, закодированных в виде строки.
aiConnectionName Необязательно. Возвращает или задает имя раздела конфигурации для параметров подключения службы ИИ. Для Azure OpenAI: если указано, найдите значения Endpoint и Key в этом разделе конфигурации. Если этот раздел не указан или раздел не существует, возвращается к переменным среды: AZURE_OPENAI_ENDPOINT и AZURE_OPENAI_KEY. Для проверки подлинности управляемого удостоверения, назначаемого пользователем, это свойство необходимо. Для службы OpenAI (не Azure) задайте переменную среды OPENAI_API_KEY.
chatModel Возвращает или задает идентификатор модели, используемой в качестве строки, со значением gpt-3.5-turboпо умолчанию.
температура Необязательно. Возвращает или задает используемую температуру выборки в виде строки между 0 и 2. Более высокие значения (0.8) делают выходные данные более случайными, а более низкие значения, например (0.2), делают выходные данные более ориентированными и детерминированными. Следует использовать либо Temperature или TopP, но не оба.
topP Необязательно. Возвращает или задает альтернативу выборке с температурой, называемой выборкой ядра в виде строки. В этом методе выборки модель рассматривает результаты маркеров с top_p массой вероятности. Таким образом 0.1 , считаются только маркеры, состоящие из 10 лучших% массы вероятностей. Следует использовать либо Temperature или TopP, но не оба.
maxTokens Необязательно. Возвращает или задает максимальное количество маркеров для создания в завершении в виде строки со значением по умолчанию 100. Количество маркеров запроса плюс max_tokens не может превышать длину контекста модели. Большинство моделей имеют длину контекста 2048 токенов (за исключением новейших моделей, которые поддерживают 4096).
isReasoningModel Необязательно. Возвращает или задает значение, указывающее, является ли модель завершения чата моделью причин. Этот параметр является экспериментальным и связан с моделью причин, пока все модели не имеют четности в ожидаемых свойствах с значением falseпо умолчанию.

Декораторы

Во время предварительной версии определите входную привязку как привязку generic_input_binding типа textCompletion, которая поддерживает следующие параметры:

Параметр Описание
arg_name Имя переменной, представляющей параметр привязки.
подсказка Возвращает или задает запрос на создание завершений, закодированных в виде строки.
ai_connection_name Необязательно. Возвращает или задает имя раздела конфигурации для параметров подключения службы ИИ. Для Azure OpenAI: если указано, найдите значения Endpoint и Key в этом разделе конфигурации. Если этот раздел не указан или раздел не существует, возвращается к переменным среды: AZURE_OPENAI_ENDPOINT и AZURE_OPENAI_KEY. Для проверки подлинности управляемого удостоверения, назначаемого пользователем, это свойство необходимо. Для службы OpenAI (не Azure) задайте переменную среды OPENAI_API_KEY.
chat_model Возвращает или задает идентификатор модели, используемой в качестве строки, со значением gpt-3.5-turboпо умолчанию.
температура Необязательно. Возвращает или задает используемую температуру выборки в виде строки между 0 и 2. Более высокие значения (0.8) делают выходные данные более случайными, а более низкие значения, например (0.2), делают выходные данные более ориентированными и детерминированными. Следует использовать либо Temperature или TopP, но не оба.
top_p Необязательно. Возвращает или задает альтернативу выборке с температурой, называемой выборкой ядра в виде строки. В этом методе выборки модель рассматривает результаты маркеров с top_p массой вероятности. Таким образом 0.1 , считаются только маркеры, состоящие из 10 лучших% массы вероятностей. Следует использовать либо Temperature или TopP, но не оба.
max_tokens Необязательно. Возвращает или задает максимальное количество маркеров для создания в завершении в виде строки со значением по умолчанию 100. Количество маркеров запроса плюс max_tokens не может превышать длину контекста модели. Большинство моделей имеют длину контекста 2048 токенов (за исключением новейших моделей, которые поддерживают 4096).
is_reasoning _model Необязательно. Возвращает или задает значение, указывающее, является ли модель завершения чата моделью причин. Этот параметр является экспериментальным и связан с моделью причин, пока все модели не имеют четности в ожидаемых свойствах с значением falseпо умолчанию.

Конфигурация

Привязка поддерживает эти свойства конфигурации, заданные в файле function.json.

Недвижимость Описание
тип Этот параметр должен содержать значение textCompletion.
направление Этот параметр должен содержать значение in.
имя Имя входной привязки.
подсказка Возвращает или задает запрос на создание завершений, закодированных в виде строки.
aiConnectionName Необязательно. Возвращает или задает имя раздела конфигурации для параметров подключения службы ИИ. Для Azure OpenAI: если указано, найдите значения Endpoint и Key в этом разделе конфигурации. Если этот раздел не указан или раздел не существует, возвращается к переменным среды: AZURE_OPENAI_ENDPOINT и AZURE_OPENAI_KEY. Для проверки подлинности управляемого удостоверения, назначаемого пользователем, это свойство необходимо. Для службы OpenAI (не Azure) задайте переменную среды OPENAI_API_KEY.
chatModel Возвращает или задает идентификатор модели, используемой в качестве строки, со значением gpt-3.5-turboпо умолчанию.
температура Необязательно. Возвращает или задает используемую температуру выборки в виде строки между 0 и 2. Более высокие значения (0.8) делают выходные данные более случайными, а более низкие значения, например (0.2), делают выходные данные более ориентированными и детерминированными. Следует использовать либо Temperature или TopP, но не оба.
topP Необязательно. Возвращает или задает альтернативу выборке с температурой, называемой выборкой ядра в виде строки. В этом методе выборки модель рассматривает результаты маркеров с top_p массой вероятности. Таким образом 0.1 , считаются только маркеры, состоящие из 10 лучших% массы вероятностей. Следует использовать либо Temperature или TopP, но не оба.
maxTokens Необязательно. Возвращает или задает максимальное количество маркеров для создания в завершении в виде строки со значением по умолчанию 100. Количество маркеров запроса плюс max_tokens не может превышать длину контекста модели. Большинство моделей имеют длину контекста 2048 токенов (за исключением новейших моделей, которые поддерживают 4096).
isReasoningModel Необязательно. Возвращает или задает значение, указывающее, является ли модель завершения чата моделью причин. Этот параметр является экспериментальным и связан с моделью причин, пока все модели не имеют четности в ожидаемых свойствах с значением falseпо умолчанию.

Конфигурация

Привязка поддерживает эти свойства, определенные в коде:

Недвижимость Описание
подсказка Возвращает или задает запрос на создание завершений, закодированных в виде строки.
aiConnectionName Необязательно. Возвращает или задает имя раздела конфигурации для параметров подключения службы ИИ. Для Azure OpenAI: если указано, найдите значения Endpoint и Key в этом разделе конфигурации. Если этот раздел не указан или раздел не существует, возвращается к переменным среды: AZURE_OPENAI_ENDPOINT и AZURE_OPENAI_KEY. Для проверки подлинности управляемого удостоверения, назначаемого пользователем, это свойство необходимо. Для службы OpenAI (не Azure) задайте переменную среды OPENAI_API_KEY.
chatModel Возвращает или задает идентификатор модели, используемой в качестве строки, со значением gpt-3.5-turboпо умолчанию.
температура Необязательно. Возвращает или задает используемую температуру выборки в виде строки между 0 и 2. Более высокие значения (0.8) делают выходные данные более случайными, а более низкие значения, например (0.2), делают выходные данные более ориентированными и детерминированными. Следует использовать либо Temperature или TopP, но не оба.
topP Необязательно. Возвращает или задает альтернативу выборке с температурой, называемой выборкой ядра в виде строки. В этом методе выборки модель рассматривает результаты маркеров с top_p массой вероятности. Таким образом 0.1 , считаются только маркеры, состоящие из 10 лучших% массы вероятностей. Следует использовать либо Temperature или TopP, но не оба.
maxTokens Необязательно. Возвращает или задает максимальное количество маркеров для создания в завершении в виде строки со значением по умолчанию 100. Количество маркеров запроса плюс max_tokens не может превышать длину контекста модели. Большинство моделей имеют длину контекста 2048 токенов (за исключением новейших моделей, которые поддерживают 4096).
isReasoningModel Необязательно. Возвращает или задает значение, указывающее, является ли модель завершения чата моделью причин. Этот параметр является экспериментальным и связан с моделью причин, пока все модели не имеют четности в ожидаемых свойствах с значением falseпо умолчанию.

Использование

Подробные примеры см. в разделе Примеры.

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 Определяет способ получения маркера access для подключения. Используется 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 . Дополнительные сведения см. в статье "Локальная разработка с использованием подключений на основе удостоверений".

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