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


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

Внимание

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

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

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

Примечание.

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

Примечание.

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

Примечание.

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

Пример

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

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

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

/*
 * HTTP GET function that queries the conversation history of the assistant chat bot.
 */   
@FunctionName("GetChatState")
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 GET, которая запрашивает журнал бесед помощника чат-бота. Ответ на запрос возвращается в ответе HTTP.

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

const chatBotQueryInput = input.generic({
    type: 'assistantQuery',
    id: '{assistantId}',
    timestampUtc: '{Query.timestampUTC}',
    chatStorageConnectionSetting: CHAT_STORAGE_CONNECTION_SETTING,
    collectionName: COLLECTION_NAME
})
app.http('GetChatState', {
    methods: ['GET'],
    route: 'assistants/{assistantId}',
    authLevel: 'anonymous',
    extraInputs: [chatBotQueryInput],
    handler: async (_, context) => {
        const state = context.extraInputs.get(chatBotQueryInput)
        return { status: 200, jsonBody: state }
    }
})

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

import { HttpRequest, InvocationContext, app, input, output } from "@azure/functions"

const chatBotQueryInput = input.generic({
    type: 'assistantQuery',
    id: '{assistantId}',
    timestampUtc: '{Query.timestampUTC}',
    chatStorageConnectionSetting: CHAT_STORAGE_CONNECTION_SETTING,
    collectionName: COLLECTION_NAME
})
app.http('GetChatState', {
    methods: ['GET'],
    route: 'assistants/{assistantId}',
    authLevel: 'anonymous',
    extraInputs: [chatBotQueryInput],
    handler: async (_, context) => {
        const state: any = context.extraInputs.get(chatBotQueryInput)
        return { status: 200, jsonBody: state }
    }
})

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

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

{
  "bindings": [
    {
      "authLevel": "function",
      "type": "httpTrigger",
      "direction": "in",
      "name": "Request",
      "route": "assistants/{assistantId}",
      "methods": [
        "get"
      ]
    },
    {
      "type": "http",
      "direction": "out",
      "name": "Response"
    },
    {
      "name": "State",
      "type": "assistantQuery",
      "direction": "in",
      "dataType": "string",
      "id": "{assistantId}",
      "timestampUtc": "{Query.timestampUTC}",
      "chatStorageConnectionSetting": "AzureWebJobsStorage",
      "collectionName": "ChatState"
    }
  ]
}

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

using namespace System.Net

param($Request, $TriggerMetadata, $State)

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

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

@apis.function_name("GetChatState")
@apis.route(route="assistants/{assistantId}", methods=["GET"])
@apis.assistant_query_input(
    arg_name="state",
    id="{assistantId}",
    timestamp_utc="{Query.timestampUTC}",
    chat_storage_connection_setting=DEFAULT_CHAT_STORAGE_SETTING,
    collection_name=DEFAULT_CHAT_COLLECTION_NAME,
)
def get_chat_state(req: func.HttpRequest, state: str) -> func.HttpResponse:
    return func.HttpResponse(state, status_code=200, mimetype="application/json")

Атрибуты

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

Параметр Описание
Идентификатор Возвращает идентификатор помощника для запроса.
TimeStampUtc (Временная метка) Необязательно. Возвращает или задает метку времени самого раннего сообщения в журнале чата для получения. Метка времени должна быть в формате ISO 8601 , например 2023-08-01T00:00:00Z.

Заметки

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

Элемент Описание
имя Возвращает или задает имя входной привязки.
идентификатор Возвращает идентификатор помощника для запроса.
timeStampUtc Необязательно. Возвращает или задает метку времени самого раннего сообщения в журнале чата для получения. Метка времени должна быть в формате ISO 8601 , например 2023-08-01T00:00:00Z.

Декораторы

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

Параметр Описание
arg_name Имя переменной, представляющей параметр привязки.
идентификатор Возвращает идентификатор помощника для запроса.
time_stamp_utc Необязательно. Возвращает или задает метку времени самого раннего сообщения в журнале чата для получения. Метка времени должна быть в формате ISO 8601 , например 2023-08-01T00:00:00Z.

Настройка

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

Свойство Описание
тип Этот параметр должен содержать значение assistantQuery.
направление Этот параметр должен содержать значение in.
имя Имя входной привязки.
идентификатор Возвращает идентификатор помощника для запроса.
timeStampUtc Необязательно. Возвращает или задает метку времени самого раннего сообщения в журнале чата для получения. Метка времени должна быть в формате ISO 8601 , например 2023-08-01T00:00:00Z.

Настройка

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

Свойство Описание
идентификатор Возвращает идентификатор помощника для запроса.
timeStampUtc Необязательно. Возвращает или задает метку времени самого раннего сообщения в журнале чата для получения. Метка времени должна быть в формате ISO 8601 , например 2023-08-01T00:00:00Z.

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

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