共用方式為


適用於 Azure Functions 的 Azure OpenAI 助理發佈輸入繫結

重要

適用於 Azure Functions 的 Azure OpenAI 延伸模組目前為預覽狀態。

Azure OpenAI 助理發佈輸入繫結可讓您將提示傳送給助理聊天機器人。

如需 Azure OpenAI 延伸模組的安裝和設定詳細資訊,請參閱適用於 Azure Functions 的 Azure OpenAI 延伸模組。 若要深入瞭解 Azure OpenAI 助理,請參閱 [Azure OpenAI Assistants API](.。/ai-services/openai/

注意

參考和範例僅適用於 Node.js v4 模型

注意

參考和範例僅適用於 Python v2 模型

注意

雖然支援這兩個 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 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)

此範例示範了建立程序,其中 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 註釋可讓您定義助理發佈輸入繫結,其支援下列參數:

元素 描述
name 輸出繫結的名稱。
id 要更新之助理的識別碼。
model 要使用的 OpenAI 聊天模型名稱。 對於 Azure OpenAI,此值是模型部署的名稱。

裝飾項目

在預覽期間,將輸出繫結定義為 postUserQuery 類型的 generic_output_binding 繫結,其支援下列參數:

參數 描述
arg_name 代表繫結參數的變數名稱。
id 要更新之助理的識別碼。
model 要使用的 OpenAI 聊天模型名稱。 對於 Azure OpenAI,此值是模型部署的名稱。

組態

繫結支援您在 function.json 檔案中設定的下列組態屬性。

屬性 描述
type 必須是 PostUserQuery
direction 必須是 out
name 輸出繫結的名稱。
id 要更新之助理的識別碼。
model 要使用的 OpenAI 聊天模型名稱。 對於 Azure OpenAI,此值是模型部署的名稱。

組態

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

屬性 說明
id 要更新之助理的識別碼。
model 要使用的 OpenAI 聊天模型名稱。 對於 Azure OpenAI,此值是模型部署的名稱。

使用方式

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