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


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

Внимание

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

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

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

Примечание.

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

Примечание.

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

Примечание.

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

Пример

В этом примере демонстрируется шаблон шаблонов , где функция триггера 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}?", Model = "%CHAT_MODEL_DEPLOYMENT_NAME%")] TextCompletionResponse response)
{
    return new OkObjectResult(response.Content);
}

/// <summary>

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

        [HttpTrigger(AuthorizationLevel.Function, "post")] HttpRequestData req,
        [TextCompletionInput("{Prompt}", Model = "%CHAT_MODEL_DEPLOYMENT_NAME%")] 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.ANONYMOUS, 
        route = "whois/{name}") 
        HttpRequestMessage<Optional<String>> request,
    @BindingName("name") String name,
    @TextCompletion(prompt = "Who is {name}?", model = "%CHAT_MODEL_DEPLOYMENT_NAME%", name = "response") 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.ANONYMOUS) 
        HttpRequestMessage<Optional<String>> request,
    @TextCompletion(prompt = "{prompt}", model = "%CHAT_MODEL_DEPLOYMENT_NAME%", name = "response") 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',
    model: '%CHAT_MODEL_DEPLOYMENT_NAME%'
})

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',
    model: '%CHAT_MODEL_DEPLOYMENT_NAME%'
})

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",
      "model": "%CHAT_MODEL_DEPLOYMENT_NAME%"
    }
  ]
}

Дополнительные сведения о свойствах файла 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", model = "%CHAT_MODEL_DEPLOYMENT_NAME%")
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}", model = "%CHAT_MODEL_DEPLOYMENT_NAME%")
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 для определения входной привязки ввода текста.

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

Параметр Описание
Prompt Возвращает или задает запрос на создание завершений, закодированных в виде строки.
Модель Возвращает или задает идентификатор модели, используемой в качестве строки, со значением 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).

Заметки

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

Элемент Description
name Возвращает или задает имя входной привязки.
prompt Возвращает или задает запрос на создание завершений, закодированных в виде строки.
model Возвращает или задает идентификатор модели, используемой в качестве строки, со значением gpt-3.5-turboпо умолчанию.
temperature Необязательно. Возвращает или задает используемую температуру выборки в виде строки между 0 и 2. Более высокие значения (0.8) делают выходные данные более случайными, а более низкие значения, например (0.2), делают выходные данные более ориентированными и детерминированными. Следует использовать либо Temperature или TopP, но не оба.
topP Необязательно. Возвращает или задает альтернативу выборке с температурой, называемой выборкой ядра в виде строки. В этом методе выборки модель рассматривает результаты маркеров с top_p массой вероятности. Таким образом 0.1 , считаются только маркеры, состоящие из верхней массы вероятности 10 %. Следует использовать либо Temperature или TopP, но не оба.
maxTokens Необязательно. Возвращает или задает максимальное количество маркеров для создания в завершении в виде строки со значением по умолчанию 100. Количество маркеров запроса плюс max_tokens не может превышать длину контекста модели. Большинство моделей имеют длину контекста 2048 токенов (за исключением новейших моделей, которые поддерживают 4096).

Декораторы

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

Параметр Описание
arg_name Имя переменной, представляющей параметр привязки.
prompt Возвращает или задает запрос на создание завершений, закодированных в виде строки.
model Возвращает или задает идентификатор модели, используемой в качестве строки, со значением gpt-3.5-turboпо умолчанию.
temperature Необязательно. Возвращает или задает используемую температуру выборки в виде строки между 0 и 2. Более высокие значения (0.8) делают выходные данные более случайными, а более низкие значения, например (0.2), делают выходные данные более ориентированными и детерминированными. Следует использовать либо Temperature или TopP, но не оба.
top_p Необязательно. Возвращает или задает альтернативу выборке с температурой, называемой выборкой ядра в виде строки. В этом методе выборки модель рассматривает результаты маркеров с top_p массой вероятности. Таким образом 0.1 , считаются только маркеры, состоящие из верхней массы вероятности 10 %. Следует использовать либо Temperature или TopP, но не оба.
max_tokens Необязательно. Возвращает или задает максимальное количество маркеров для создания в завершении в виде строки со значением по умолчанию 100. Количество маркеров запроса плюс max_tokens не может превышать длину контекста модели. Большинство моделей имеют длину контекста 2048 токенов (за исключением новейших моделей, которые поддерживают 4096).

Настройка

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

Свойство Описание
type Этот параметр должен содержать значение textCompletion.
direction Этот параметр должен содержать значение in.
name Имя входной привязки.
prompt Возвращает или задает запрос на создание завершений, закодированных в виде строки.
model Возвращает или задает идентификатор модели, используемой в качестве строки, со значением gpt-3.5-turboпо умолчанию.
temperature Необязательно. Возвращает или задает используемую температуру выборки в виде строки между 0 и 2. Более высокие значения (0.8) делают выходные данные более случайными, а более низкие значения, например (0.2), делают выходные данные более ориентированными и детерминированными. Следует использовать либо Temperature или TopP, но не оба.
topP Необязательно. Возвращает или задает альтернативу выборке с температурой, называемой выборкой ядра в виде строки. В этом методе выборки модель рассматривает результаты маркеров с top_p массой вероятности. Таким образом 0.1 , считаются только маркеры, состоящие из верхней массы вероятности 10 %. Следует использовать либо Temperature или TopP, но не оба.
maxTokens Необязательно. Возвращает или задает максимальное количество маркеров для создания в завершении в виде строки со значением по умолчанию 100. Количество маркеров запроса плюс max_tokens не может превышать длину контекста модели. Большинство моделей имеют длину контекста 2048 токенов (за исключением новейших моделей, которые поддерживают 4096).

Настройка

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

Свойство Description
prompt Возвращает или задает запрос на создание завершений, закодированных в виде строки.
model Возвращает или задает идентификатор модели, используемой в качестве строки, со значением gpt-3.5-turboпо умолчанию.
temperature Необязательно. Возвращает или задает используемую температуру выборки в виде строки между 0 и 2. Более высокие значения (0.8) делают выходные данные более случайными, а более низкие значения, например (0.2), делают выходные данные более ориентированными и детерминированными. Следует использовать либо Temperature или TopP, но не оба.
topP Необязательно. Возвращает или задает альтернативу выборке с температурой, называемой выборкой ядра в виде строки. В этом методе выборки модель рассматривает результаты маркеров с top_p массой вероятности. Таким образом 0.1 , считаются только маркеры, состоящие из верхней массы вероятности 10 %. Следует использовать либо Temperature или TopP, но не оба.
maxTokens Необязательно. Возвращает или задает максимальное количество маркеров для создания в завершении в виде строки со значением по умолчанию 100. Количество маркеров запроса плюс max_tokens не может превышать длину контекста модели. Большинство моделей имеют длину контекста 2048 токенов (за исключением новейших моделей, которые поддерживают 4096).

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

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