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


Привязка входных данных помощника По Azure OpenAI для Функции Azure

Внимание

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

Помощник по Azure OpenAI после входной привязки позволяет отправлять запросы помощникам ботам чата.

Сведения о настройке и настройке расширения Azure OpenAI см. в Функции Azure расширения Azure OpenAI. Дополнительные сведения о помощниках Azure OpenAI см. в статье [API Помощников По Azure OpenAI](.). /ai-services/openai/

Примечание.

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

Примечание.

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

Примечание.

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

Пример

В этом примере демонстрируется процесс создания, в котором функция HTTP POST, которая отправляет пользователю запросы в помощник чат-бот. Ответ на запрос возвращается в ответе HTTP.

/// <summary>
/// HTTP POST function that sends user prompts to the assistant chat bot.
/// </summary>
[Function(nameof(PostUserQuery))]
public static async Task<IActionResult> PostUserQuery(
    [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "assistants/{assistantId}")] HttpRequestData req,
    string assistantId,
    [AssistantPostInput("{assistantId}", "{Query.message}", Model = "%CHAT_MODEL_DEPLOYMENT_NAME%", ChatStorageConnectionSetting = DefaultChatStorageConnectionSetting, CollectionName = DefaultCollectionName)] AssistantState state)
{
    return new OkObjectResult(state.RecentMessages.Any() ? state.RecentMessages[state.RecentMessages.Count - 1].Content : "No response returned.");
}

/// <summary>
/// HTTP GET function that queries the conversation history of the assistant chat bot.
/// </summary>
[Function(nameof(GetChatState))]
public static async Task<IActionResult> GetChatState(
   [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "assistants/{assistantId}")] HttpRequestData req,
   string assistantId,
   [AssistantQueryInput("{assistantId}", TimestampUtc = "{Query.timestampUTC}", ChatStorageConnectionSetting = DefaultChatStorageConnectionSetting, CollectionName = DefaultCollectionName)] AssistantState state)
{

В этом примере демонстрируется процесс создания, в котором функция HTTP POST, которая отправляет пользователю запросы в помощник чат-бот. Ответ на запрос возвращается в ответе HTTP.

public HttpResponseMessage getChatState(
    @HttpTrigger(
        name = "req",
        methods = {HttpMethod.GET}, 
        authLevel = AuthorizationLevel.ANONYMOUS,
        route = "assistants/{assistantId}") 
        HttpRequestMessage<Optional<String>> request,
    @BindingName("assistantId") String assistantId,        
    @AssistantQuery(name = "AssistantState", id = "{assistantId}", timestampUtc = "{Query.timestampUTC}", chatStorageConnectionSetting = DEFAULT_CHATSTORAGE, collectionName = DEFAULT_COLLECTION) AssistantState state,
    final ExecutionContext context) {
        return request.createResponseBuilder(HttpStatus.OK)
            .header("Content-Type", "application/json")
            .body(state)
            .build();
}

/*
 * HTTP POST function that sends user prompts to the assistant chat bot.
 */ 
@FunctionName("PostUserResponse")
public HttpResponseMessage postUserResponse(

В этом примере демонстрируется процесс создания, в котором функция HTTP POST, которая отправляет пользователю запросы в помощник чат-бот. Ответ на запрос возвращается в ответе HTTP.

const CHAT_STORAGE_CONNECTION_SETTING = "AzureWebJobsStorage";
const COLLECTION_NAME = "ChatState";
const assistantPostInput = input.generic({
    type: 'assistantPost',
    id: '{assistantId}',
    model: '%CHAT_MODEL_DEPLOYMENT_NAME%',
    userMessage: '{Query.message}',
    chatStorageConnectionSetting: CHAT_STORAGE_CONNECTION_SETTING,
    collectionName: COLLECTION_NAME
})
app.http('PostUserResponse', {
    methods: ['POST'],
    route: 'assistants/{assistantId}',
    authLevel: 'anonymous',
    extraInputs: [assistantPostInput],
    handler: async (_, context) => {
        const chatState = context.extraInputs.get(assistantPostInput)
        const content = chatState.recentMessages[0].content
        return {
            status: 200,
            body: content,
            headers: {
                'Content-Type': 'text/plain'
            }
        };
    }
})
const CHAT_STORAGE_CONNECTION_SETTING = "AzureWebJobsStorage";
const COLLECTION_NAME = "ChatState";
const assistantPostInput = input.generic({
    type: 'assistantPost',
    id: '{assistantId}',
    model: '%CHAT_MODEL_DEPLOYMENT_NAME%',
    userMessage: '{Query.message}',
    chatStorageConnectionSetting: CHAT_STORAGE_CONNECTION_SETTING,
    collectionName: COLLECTION_NAME
})
app.http('PostUserResponse', {
    methods: ['POST'],
    route: 'assistants/{assistantId}',
    authLevel: 'anonymous',
    extraInputs: [assistantPostInput],
    handler: async (_, context) => {
        const chatState: any = context.extraInputs.get(assistantPostInput)
        const content = chatState.recentMessages[0].content
        return {
            status: 200,
            body: content,
            headers: {
                'Content-Type': 'text/plain'
            }
        };
    }
})

В этом примере демонстрируется процесс создания, в котором функция HTTP POST, которая отправляет пользователю запросы в помощник чат-бот. Ответ на запрос возвращается в ответе HTTP.

Ниже приведен файл function.json для отправки запроса пользователя:

{
  "bindings": [
    {
      "authLevel": "function",
      "type": "httpTrigger",
      "direction": "in",
      "name": "Request",
      "route": "assistants/{assistantId}",
      "methods": [
        "post"
      ]
    },
    {
      "type": "http",
      "direction": "out",
      "name": "Response"
    },
    {
      "name": "State",
      "type": "assistantPost",
      "direction": "in",
      "dataType": "string",
      "id": "{assistantId}",
      "userMessage": "{Query.message}",
      "model": "%CHAT_MODEL_DEPLOYMENT_NAME%",
      "chatStorageConnectionSetting": "AzureWebJobsStorage",
      "collectionName": "ChatState"
    }
  ]
}

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

using namespace System.Net

param($Request, $TriggerMetadata, $State)

$recent_message_content = "No recent messages!"

if ($State.recentMessages.Count -gt 0) {
    $recent_message_content = $State.recentMessages[0].content
}

Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
    StatusCode = [HttpStatusCode]::OK
    Body       = $recent_message_content
    Headers    = @{
        "Content-Type" = "text/plain"
    }
})

В этом примере демонстрируется процесс создания, в котором функция HTTP POST, которая отправляет пользователю запросы в помощник чат-бот. Ответ на запрос возвращается в ответе HTTP.

    response_json = {"assistantId": assistantId}
    return func.HttpResponse(json.dumps(response_json), status_code=202, mimetype="application/json")


@apis.function_name("PostUserQuery")
@apis.route(route="assistants/{assistantId}", methods=["POST"])
@apis.assistant_post_input(arg_name="state", id="{assistantId}", user_message="{Query.message}", model="%CHAT_MODEL_DEPLOYMENT_NAME%", chat_storage_connection_setting=DEFAULT_CHAT_STORAGE_SETTING, collection_name=DEFAULT_CHAT_COLLECTION_NAME)
def post_user_response(req: func.HttpRequest, state: str) -> func.HttpResponse:
    # Parse the JSON string into a dictionary
    data = json.loads(state)

Атрибуты

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

Параметр Описание
Id Идентификатор помощника для обновления.
Модель Имя модели чата OpenAI, используемой. Для Azure OpenAI это значение является именем развертывания модели.

Заметки

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

Элемент Description
name Имя выходной привязки.
id Идентификатор помощника для обновления.
model Имя модели чата OpenAI, используемой. Для Azure OpenAI это значение является именем развертывания модели.

Декораторы

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

Параметр Описание
arg_name Имя переменной, представляющей параметр привязки.
id Идентификатор помощника для обновления.
model Имя модели чата OpenAI, используемой. Для Azure OpenAI это значение является именем развертывания модели.

Настройка

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

Свойство Описание
type Этот параметр должен содержать значение PostUserQuery.
direction Этот параметр должен содержать значение out.
name Имя выходной привязки.
id Идентификатор помощника для обновления.
model Имя модели чата OpenAI, используемой. Для Azure OpenAI это значение является именем развертывания модели.

Настройка

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

Свойство Description
id Идентификатор помощника для обновления.
model Имя модели чата OpenAI, используемой. Для Azure OpenAI это значение является именем развертывания модели.

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

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