你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure OpenAI 助手为 Azure Functions 创建输出绑定

重要

适用于 Azure Functions 的 Azure OpenAI 扩展目前为预览版。

使用 Azure OpenAI 助手创建输出绑定,可以从函数代码执行创建新的助理聊天机器人。

要了解 Azure OpenAI 扩展的设置和配置详细信息,请参阅适用于 Azure Functions 的 Azure OpenAI 扩展。 若要了解有关 Azure OpenAI 助手的详细信息,请参阅 Azure OpenAI 助手 API

注意

仅提供了适用于 Node.js v4 模型的参考和示例。

注意

仅提供了适用于 Python v2 模型的参考和示例。

注意

虽然支持这两个 C# 进程模型,但仅 提供了独立的辅助角色模型 示例。

示例

此示例演示了创建过程,其中 HTTP PUT 函数使用指定的 ID 创建新的助理聊天机器人。 对提示的回复在 HTTP 响应中返回。

/// 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 = 202 },
        ChatBotCreateRequest = new AssistantCreateRequest(assistantId, instructions)
        {
            ChatStorageConnectionSetting = DefaultChatStorageConnectionSetting,
            CollectionName = DefaultCollectionName,
        },

此示例演示了创建过程,其中 HTTP PUT 函数使用指定的 ID 创建新的助理聊天机器人。 对提示的回复在 HTTP 响应中返回。

 * account
 * where chat data will be stored.
 */
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.
 */
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,

示例尚不可用。

此示例演示了创建过程,其中 HTTP PUT 函数使用指定的 ID 创建新的助理聊天机器人。 对提示的回复在 HTTP 响应中返回。

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
        }

此示例演示了创建过程,其中 HTTP PUT 函数使用指定的 ID 创建新的助理聊天机器人。 对提示的回复在 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 函数使用指定的 ID 创建新的助理聊天机器人。 对提示的回复在 HTTP 响应中返回。

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

特性

应用 CreateAssistant 属性来定义助手创建输出绑定,该绑定支持以下参数:

参数 说明
Id 要创建的助理的标识符。
说明 可选。 提供给助手以遵循的说明。

批注

通过 CreateAssistant 批注,可以定义助手创建输出绑定,该绑定支持以下参数:

元素 说明
name 获取或设置输出绑定的名称。
id 要创建的助理的标识符。
instructions 可选。 提供给助手以遵循的说明。

修饰符

在预览期间,将输出绑定定义为 createAssistant 类型的 generic_output_binding 绑定,该绑定支持以下参数:

参数 说明
arg_name 表示绑定参数的变量的名称。
id 要创建的助理的标识符。
instructions 可选。 提供给助手以遵循的说明。

配置

绑定支持在 function.json 文件中设置的这些配置属性。

properties 说明
type 必须是 CreateAssistant
direction 必须是 out
name 输出绑定的名称。
id 要创建的助理的标识符。
instructions 可选。 提供给助手以遵循的说明。

配置

绑定支持以下属性,这些属性在代码中定义:

properties 说明
id 要创建的助理的标识符。
instructions 可选。 提供给助手以遵循的说明。

使用情况

有关完整示例,请参阅示例部分