共用方式為


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 函式會以指定識別碼建立新的助理聊天機器人。 提示的回應會在 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 函式會以指定識別碼建立新的助理聊天機器人。 提示的回應會在 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 函式會以指定識別碼建立新的助理聊天機器人。 提示的回應會在 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 函式會以指定識別碼建立新的助理聊天機器人。 提示的回應會在 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_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 檔案中設定的下列組態屬性。

屬性 描述
type 必須是 CreateAssistant
direction 必須是 out
name 輸出繫結的名稱。
id 要建立之助理的識別碼。
instructions 選擇性。 提供給助理的遵循指示。

組態

繫結支援您在程式碼中定義的下列屬性:

屬性 說明
id 要建立之助理的識別碼。
instructions 選擇性。 提供給助理的遵循指示。

使用方式

如需完整範例,請參閱範例一節。