共用方式為


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

重要

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

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

如需 Azure OpenAI 延伸模組的安裝和設定詳細資訊,請參閱適用於 Azure Functions 的 Azure OpenAI 延伸模組。 若要深入了解 Azure OpenAI 助理,請參閱 Azure OpenAI 助理 API

注意

參考和範例僅適用於 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 IActionResult PostUserQuery(
    [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "assistants/{assistantId}")] HttpRequestData req,
    string assistantId,
    [AssistantPostInput("{assistantId}", "{Query.message}", ChatModel = "%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.");
}

此範例示範了建立程序,其中 HTTP POST 函式會將使用者提示傳送給助理聊天機器人。 對提示的回應會在 HTTP 回應中傳回。

/*
 * HTTP POST function that sends user prompts to the assistant chat bot.
 */ 
@FunctionName("PostUserResponse")
public HttpResponseMessage postUserResponse(
    @HttpTrigger(
        name = "req",
        methods = {HttpMethod.POST}, 
        authLevel = AuthorizationLevel.ANONYMOUS,
        route = "assistants/{assistantId}") 
        HttpRequestMessage<Optional<String>> request,
    @BindingName("assistantId") String assistantId,        
    @AssistantPost(name="newMessages", id = "{assistantId}", chatModel = "%CHAT_MODEL_DEPLOYMENT_NAME%", userMessage = "{Query.message}", chatStorageConnectionSetting = DEFAULT_CHATSTORAGE, collectionName = DEFAULT_COLLECTION) AssistantState state,
    final ExecutionContext context) {
        
        List<AssistantMessage> recentMessages = state.getRecentMessages();
        String response = recentMessages.isEmpty() ? "No response returned." : recentMessages.get(recentMessages.size() - 1).getContent();
        
        return request.createResponseBuilder(HttpStatus.OK)
            .header("Content-Type", "application/json")
            .body(response)
            .build();
}

此範例示範了建立程序,其中 HTTP POST 函式會將使用者提示傳送給助理聊天機器人。 對提示的回應會在 HTTP 回應中傳回。

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

const assistantPostInput = input.generic({
    type: 'assistantPost',
    id: '{assistantId}',
    chatModel: '%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 = context.extraInputs.get(assistantPostInput)
        const content = chatState.recentMessages[0].content
        return {
            status: 200,
            body: content,
            headers: {
                'Content-Type': 'text/plain'
            }
        };
    }
})
import { HttpRequest, InvocationContext, app, input, output } from "@azure/functions"

const assistantPostInput = input.generic({
    type: 'assistantPost',
    id: '{assistantId}',
    chatModel: '%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)
        const content = chatState.recentMessages[0].content
        return {
            status: 200,
            body: content,
            headers: {
                'Content-Type': 'text/plain'
            }
        };
    }
})

此範例示範了建立程序,其中 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}",
      "chatModel": "%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 回應中傳回。

@apis.function_name("PostUserQuery")
@apis.route(route="assistants/{assistantId}", methods=["POST"])
@apis.assistant_post_input(
    arg_name="state",
    id="{assistantId}",
    user_message="{Query.message}",
    chat_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)

    # Extract the content of the recentMessage
    recent_message_content = data["recentMessages"][0]["content"]
    return func.HttpResponse(
        recent_message_content, status_code=200, mimetype="text/plain"
    )

屬性

套用 PostUserQuery 屬性來定義助理發佈輸入繫結,其支援下列參數:

參數 描述
標識碼 要更新之助理的識別碼。
UserMessage 取得或設定聊天完成模型的使用者訊息,編碼為字串。
AIConnectionName 選擇性。 取得或設定 AI 服務連線設定的組態區段名稱。 針對 Azure OpenAI:如果指定,請在此組態區段中尋找「端點」和「金鑰」值。 如果未指定或區段不存在,請回復為環境變數:AZURE_OPENAI_ENDPOINT和AZURE_OPENAI_KEY。 針對使用者指派的受控識別驗證,需要此屬性。 針對OpenAI服務 (非 Azure),請設定OPENAI_API_KEY環境變數。
ChatModel 選擇性。 取得或設定要當做字串使用的模型識別碼,預設值為 gpt-3.5-turbo
溫度 選擇性。 取得或設定要使用的取樣溫度,做為 和0之間的2字串。 較高的值 (0.8) 會使輸出更具隨機性,而較低的值,例如 (0.2) 讓輸出更具焦點且具決定性。 您應該使用 或 Temperature,但不應該同時使用TopP兩者。
TopP 選擇性。 取得或設定以溫度作為字串進行取樣的替代方法,稱為核取樣。 在此取樣方法中,模型會考慮具有 top_p 機率品質的令牌結果。 因此 0.1 ,表示只會考慮包含前10個% 機率質量的標記。 您應該使用 或 Temperature,但不應該同時使用TopP兩者。
MaxTokens 選擇性。 取得或設定完成時要產生的令牌數目上限,做為預設值為的 100字串。 提示的權杖計數加上 max_tokens 不能超過模型的內容長度。 大部分模型的內容長度為 2,048 個標記(但支援 4096 的最新模型除外)。
IsReasoningModel 選擇性。 取得或設定值,指出聊天完成模型是否為推理模型。 此選項是實驗性的,且與推理模型相關聯,直到所有模型在預期的屬性中具有同位,預設值為 false

註釋

PostUserQuery 註釋可讓您定義助理發佈輸入繫結,其支援下列參數:

元素 描述
名字 輸出繫結的名稱。
識別碼 要更新之助理的識別碼。
userMessage 取得或設定聊天完成模型的使用者訊息,編碼為字串。
aiConnectionName 選擇性。 取得或設定 AI 服務連線設定的組態區段名稱。 針對 Azure OpenAI:如果指定,請在此組態區段中尋找「端點」和「金鑰」值。 如果未指定或區段不存在,請回復為環境變數:AZURE_OPENAI_ENDPOINT和AZURE_OPENAI_KEY。 針對使用者指派的受控識別驗證,需要此屬性。 針對OpenAI服務 (非 Azure),請設定OPENAI_API_KEY環境變數。
chatModel 取得或設定要當做字串使用的模型識別碼,預設值為 gpt-3.5-turbo
溫度 選擇性。 取得或設定要使用的取樣溫度,做為 和0之間的2字串。 較高的值 (0.8) 會使輸出更具隨機性,而較低的值,例如 (0.2) 讓輸出更具焦點且具決定性。 您應該使用 或 Temperature,但不應該同時使用TopP兩者。
topP 選擇性。 取得或設定以溫度作為字串進行取樣的替代方法,稱為核取樣。 在此取樣方法中,模型會考慮具有 top_p 機率品質的令牌結果。 因此 0.1 ,表示只會考慮包含前10個% 機率質量的標記。 您應該使用 或 Temperature,但不應該同時使用TopP兩者。
maxTokens 選擇性。 取得或設定完成時要產生的令牌數目上限,做為預設值為的 100字串。 提示的權杖計數加上 max_tokens 不能超過模型的內容長度。 大部分模型的內容長度為 2,048 個標記(但支援 4096 的最新模型除外)。
isReasoningModel 選擇性。 取得或設定值,指出聊天完成模型是否為推理模型。 此選項是實驗性的,且與推理模型相關聯,直到所有模型在預期的屬性中具有同位,預設值為 false

裝飾項目

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

參數 描述
arg_name 代表繫結參數的變數名稱。
識別碼 要更新之助理的識別碼。
user_message 取得或設定聊天完成模型的使用者訊息,編碼為字串。
ai_connection_name 選擇性。 取得或設定 AI 服務連線設定的組態區段名稱。 針對 Azure OpenAI:如果指定,請在此組態區段中尋找「端點」和「金鑰」值。 如果未指定或區段不存在,請回復為環境變數:AZURE_OPENAI_ENDPOINT和AZURE_OPENAI_KEY。 針對使用者指派的受控識別驗證,需要此屬性。 針對OpenAI服務 (非 Azure),請設定OPENAI_API_KEY環境變數。
chat_model 取得或設定要當做字串使用的模型識別碼,預設值為 gpt-3.5-turbo
溫度 選擇性。 取得或設定要使用的取樣溫度,做為 和0之間的2字串。 較高的值 (0.8) 會使輸出更具隨機性,而較低的值,例如 (0.2) 讓輸出更具焦點且具決定性。 您應該使用 或 Temperature,但不應該同時使用TopP兩者。
top_p 選擇性。 取得或設定以溫度作為字串進行取樣的替代方法,稱為核取樣。 在此取樣方法中,模型會考慮具有 top_p 機率品質的令牌結果。 因此 0.1 ,表示只會考慮包含前10個% 機率質量的標記。 您應該使用 或 Temperature,但不應該同時使用TopP兩者。
max_tokens 選擇性。 取得或設定完成時要產生的令牌數目上限,做為預設值為的 100字串。 提示的權杖計數加上 max_tokens 不能超過模型的內容長度。 大部分模型的內容長度為 2,048 個標記(但支援 4096 的最新模型除外)。
is_reasoning _model 選擇性。 取得或設定值,指出聊天完成模型是否為推理模型。 此選項是實驗性的,且與推理模型相關聯,直到所有模型在預期的屬性中具有同位,預設值為 false

組態

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

屬性 描述
類型 必須是 PostUserQuery
方向 必須是 out
名字 輸出繫結的名稱。
識別碼 要更新之助理的識別碼。
userMessage 取得或設定聊天完成模型的使用者訊息,編碼為字串。
aiConnectionName 選擇性。 取得或設定 AI 服務連線設定的組態區段名稱。 針對 Azure OpenAI:如果指定,請在此組態區段中尋找「端點」和「金鑰」值。 如果未指定或區段不存在,請回復為環境變數:AZURE_OPENAI_ENDPOINT和AZURE_OPENAI_KEY。 針對使用者指派的受控識別驗證,需要此屬性。 針對OpenAI服務 (非 Azure),請設定OPENAI_API_KEY環境變數。
chatModel 取得或設定要當做字串使用的模型識別碼,預設值為 gpt-3.5-turbo
溫度 選擇性。 取得或設定要使用的取樣溫度,做為 和0之間的2字串。 較高的值 (0.8) 會使輸出更具隨機性,而較低的值,例如 (0.2) 讓輸出更具焦點且具決定性。 您應該使用 或 Temperature,但不應該同時使用TopP兩者。
topP 選擇性。 取得或設定以溫度作為字串進行取樣的替代方法,稱為核取樣。 在此取樣方法中,模型會考慮具有 top_p 機率品質的令牌結果。 因此 0.1 ,表示只會考慮包含前10個% 機率質量的標記。 您應該使用 或 Temperature,但不應該同時使用TopP兩者。
maxTokens 選擇性。 取得或設定完成時要產生的令牌數目上限,做為預設值為的 100字串。 提示的權杖計數加上 max_tokens 不能超過模型的內容長度。 大部分模型的內容長度為 2,048 個標記(但支援 4096 的最新模型除外)。
isReasoningModel 選擇性。 取得或設定值,指出聊天完成模型是否為推理模型。 此選項是實驗性的,且與推理模型相關聯,直到所有模型在預期的屬性中具有同位,預設值為 false

組態

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

屬性 描述
識別碼 要更新之助理的識別碼。
userMessage 取得或設定聊天完成模型的使用者訊息,編碼為字串。
aiConnectionName 選擇性。 取得或設定 AI 服務連線設定的組態區段名稱。 針對 Azure OpenAI:如果指定,請在此組態區段中尋找「端點」和「金鑰」值。 如果未指定或區段不存在,請回復為環境變數:AZURE_OPENAI_ENDPOINT和AZURE_OPENAI_KEY。 針對使用者指派的受控識別驗證,需要此屬性。 針對OpenAI服務 (非 Azure),請設定OPENAI_API_KEY環境變數。
chatModel 取得或設定要當做字串使用的模型識別碼,預設值為 gpt-3.5-turbo
溫度 選擇性。 取得或設定要使用的取樣溫度,做為 和0之間的2字串。 較高的值 (0.8) 會使輸出更具隨機性,而較低的值,例如 (0.2) 讓輸出更具焦點且具決定性。 您應該使用 或 Temperature,但不應該同時使用TopP兩者。
topP 選擇性。 取得或設定以溫度作為字串進行取樣的替代方法,稱為核取樣。 在此取樣方法中,模型會考慮具有 top_p 機率品質的令牌結果。 因此 0.1 ,表示只會考慮包含前10個% 機率質量的標記。 您應該使用 或 Temperature,但不應該同時使用TopP兩者。
maxTokens 選擇性。 取得或設定完成時要產生的令牌數目上限,做為預設值為的 100字串。 提示的權杖計數加上 max_tokens 不能超過模型的內容長度。 大部分模型的內容長度為 2,048 個標記(但支援 4096 的最新模型除外)。
isReasoningModel 選擇性。 取得或設定值,指出聊天完成模型是否為推理模型。 此選項是實驗性的,且與推理模型相關聯,直到所有模型在預期的屬性中具有同位,預設值為 false

使用方式

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