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


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

Внимание

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

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

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

Примечание.

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

Примечание.

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

Примечание.

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

Пример

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

/// <summary>
/// HTTP PUT function that creates a new assistant chat bot with the specified ID.
/// </summary>
[Function(nameof(CreateAssistant))]
public static async Task<CreateChatBotOutput> CreateAssistant(
    [HttpTrigger(AuthorizationLevel.Anonymous, "put", Route = "assistants/{assistantId}")] HttpRequestData req,
    string assistantId)
{
    string instructions =
       """
        Don't make assumptions about what values to plug into functions.
        Ask for clarification if a user request is ambiguous.
        """;

    using StreamReader reader = new(req.Body);

    string request = await reader.ReadToEndAsync();


    return new CreateChatBotOutput
    {
        HttpResponse = new ObjectResult(new { assistantId }) { StatusCode = 201 },
        ChatBotCreateRequest = new AssistantCreateRequest(assistantId, instructions)
        {
            ChatStorageConnectionSetting = DefaultChatStorageConnectionSetting,
            CollectionName = DefaultCollectionName,
        },
    };
}

public class CreateChatBotOutput
{
    [AssistantCreateOutput()]
    public AssistantCreateRequest? ChatBotCreateRequest { get; set; }

    [HttpResult]
    public IActionResult? HttpResponse { get; set; }
}

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

/**
 * The default storage account setting for the table storage account.
 * This constant is used to specify the connection string for the table storage
 * account
 * where chat data will be stored.
 */
final String DEFAULT_CHATSTORAGE = "AzureWebJobsStorage";

/**
 * The default collection name for the table storage account.
 * This constant is used to specify the collection name for the table storage
 * account
 * where chat data will be stored.
 */
final String DEFAULT_COLLECTION = "ChatState";

/*
 * HTTP PUT function that creates a new assistant chat bot with the specified ID.
 */
@FunctionName("CreateAssistant")
public HttpResponseMessage createAssistant(
    @HttpTrigger(
        name = "req", 
        methods = {HttpMethod.PUT}, 
        authLevel = AuthorizationLevel.ANONYMOUS, 
        route = "assistants/{assistantId}") 
        HttpRequestMessage<Optional<String>> request,
    @BindingName("assistantId") String assistantId,
    @AssistantCreate(name = "AssistantCreate") OutputBinding<AssistantCreateRequest> message,
    final ExecutionContext context) {
        context.getLogger().info("Java HTTP trigger processed a request.");
        
        String instructions = "Don't make assumptions about what values to plug into functions.\n" +
                "Ask for clarification if a user request is ambiguous.";

        AssistantCreateRequest assistantCreateRequest = new AssistantCreateRequest(assistantId, instructions);
        assistantCreateRequest.setChatStorageConnectionSetting(DEFAULT_CHATSTORAGE);
        assistantCreateRequest.setCollectionName(DEFAULT_COLLECTION);

        message.setValue(assistantCreateRequest);
        JSONObject response = new JSONObject();
        response.put("assistantId", assistantId);
        
        return request.createResponseBuilder(HttpStatus.CREATED)
            .header("Content-Type", "application/json")
            .body(response.toString())
            .build();    
}

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

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

const CHAT_STORAGE_CONNECTION_SETTING = "AzureWebJobsStorage";
const COLLECTION_NAME = "ChatState";

const chatBotCreateOutput = output.generic({
    type: 'assistantCreate'
})
app.http('CreateAssistant', {
    methods: ['PUT'],
    route: 'assistants/{assistantId}',
    authLevel: 'anonymous',
    extraOutputs: [chatBotCreateOutput],
    handler: async (request, context) => {
        const assistantId = request.params.assistantId
        const instructions =
            `
            Don't make assumptions about what values to plug into functions.
            Ask for clarification if a user request is ambiguous.
            `
        const createRequest = {
            id: assistantId,
            instructions: instructions,
            chatStorageConnectionSetting: CHAT_STORAGE_CONNECTION_SETTING,
            collectionName: COLLECTION_NAME
        }
        context.extraOutputs.set(chatBotCreateOutput, createRequest)
        return { status: 202, jsonBody: { assistantId: assistantId } }
    }
})
import { HttpRequest, InvocationContext, app, input, output } from "@azure/functions"

const CHAT_STORAGE_CONNECTION_SETTING = "AzureWebJobsStorage";
const COLLECTION_NAME = "ChatState";

const chatBotCreateOutput = output.generic({
    type: 'assistantCreate'
})
app.http('CreateAssistant', {
    methods: ['PUT'],
    route: 'assistants/{assistantId}',
    authLevel: 'anonymous',
    extraOutputs: [chatBotCreateOutput],
    handler: async (request: HttpRequest, context: InvocationContext) => {
        const assistantId = request.params.assistantId
        const instructions =
            `
            Don't make assumptions about what values to plug into functions.
            Ask for clarification if a user request is ambiguous.
            `
        const createRequest = {
            id: assistantId,
            instructions: instructions,
            chatStorageConnectionSetting: CHAT_STORAGE_CONNECTION_SETTING,
            collectionName: COLLECTION_NAME
        }
        context.extraOutputs.set(chatBotCreateOutput, createRequest)
        return { status: 202, jsonBody: { assistantId: assistantId } }
    }
})

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

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

{
  "bindings": [
    {
      "authLevel": "function",
      "type": "httpTrigger",
      "direction": "in",
      "name": "Request",
      "route": "assistants/{assistantId}",
      "methods": [
        "put"
      ]
    },
    {
      "type": "http",
      "direction": "out",
      "name": "Response"
    },
    {
      "type": "assistantCreate",
      "direction": "out",
      "dataType": "string",
      "name": "Requests"
    }
  ]
}

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

{{Это происходит из примера комментария кода}}

using namespace System.Net

param($Request, $TriggerMetadata)

$assistantId = $Request.params.assistantId

$instructions = "Don't make assumptions about what values to plug into functions."
$instructions += "\nAsk for clarification if a user request is ambiguous."

$create_request = @{
    "id" = $assistantId
    "instructions" = $instructions
    "chatStorageConnectionSetting" = "AzureWebJobsStorage"
    "collectionName" = "ChatState"
}

Push-OutputBinding -Name Requests -Value (ConvertTo-Json $create_request)

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

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

DEFAULT_CHAT_STORAGE_SETTING = "AzureWebJobsStorage"
DEFAULT_CHAT_COLLECTION_NAME = "ChatState"


@apis.function_name("CreateAssistant")
@apis.route(route="assistants/{assistantId}", methods=["PUT"])
@apis.assistant_create_output(arg_name="requests")
def create_assistant(
    req: func.HttpRequest, requests: func.Out[str]
) -> func.HttpResponse:
    assistantId = req.route_params.get("assistantId")
    instructions = """
            Don't make assumptions about what values to plug into functions.
            Ask for clarification if a user request is ambiguous.
            """
    create_request = {
        "id": assistantId,
        "instructions": instructions,
        "chatStorageConnectionSetting": DEFAULT_CHAT_STORAGE_SETTING,
        "collectionName": DEFAULT_CHAT_COLLECTION_NAME,
    }
    requests.set(json.dumps(create_request))
    response_json = {"assistantId": assistantId}
    return func.HttpResponse(
        json.dumps(response_json), status_code=202, mimetype="application/json"
    )

Атрибуты

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

Параметр Описание
Идентификатор Идентификатор создаваемого помощника.
Инструкции Необязательно. Инструкции, предоставляемые помощнику.
ChatStorageConnectionSetting Необязательно. Имя раздела конфигурации для параметров таблицы для хранилища чата. Значение по умолчанию — AzureWebJobsStorage.
Имя коллекции Необязательно. Имя коллекции таблиц для хранилища чата. Значение по умолчанию — ChatState.

Заметки

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

Элемент Описание
имя Возвращает или задает имя выходной привязки.
идентификатор Идентификатор создаваемого помощника.
инструкции Необязательно. Инструкции, предоставляемые помощнику.
chatStorageConnectionSetting Необязательно. Имя раздела конфигурации для параметров таблицы для хранилища чата. Значение по умолчанию — AzureWebJobsStorage.
collectionName Необязательно. Имя коллекции таблиц для хранилища чата. Значение по умолчанию — ChatState.

Декораторы

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

Параметр Описание
arg_name Имя переменной, представляющей параметр привязки.
идентификатор Идентификатор создаваемого помощника.
инструкции Необязательно. Инструкции, предоставляемые помощнику.
chat_storage_connection_setting Необязательно. Имя раздела конфигурации для параметров таблицы для хранилища чата. Значение по умолчанию — AzureWebJobsStorage.
collection_name Необязательно. Имя коллекции таблиц для хранилища чата. Значение по умолчанию — ChatState.

Настройка

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

Свойство Описание
тип Этот параметр должен содержать значение CreateAssistant.
направление Этот параметр должен содержать значение out.
имя Имя выходной привязки.
идентификатор Идентификатор создаваемого помощника.
инструкции Необязательно. Инструкции, предоставляемые помощнику.
chatStorageConnectionSetting Необязательно. Имя раздела конфигурации для параметров таблицы для хранилища чата. Значение по умолчанию — AzureWebJobsStorage.
collectionName Необязательно. Имя коллекции таблиц для хранилища чата. Значение по умолчанию — ChatState.

Настройка

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

Свойство Описание
идентификатор Идентификатор создаваемого помощника.
инструкции Необязательно. Инструкции, предоставляемые помощнику.
chatStorageConnectionSetting Необязательно. Имя раздела конфигурации для параметров таблицы для хранилища чата. Значение по умолчанию — AzureWebJobsStorage.
collectionName Необязательно. Имя коллекции таблиц для хранилища чата. Значение по умолчанию — ChatState.

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

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