次の方法で共有


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/

Note

リファレンスと例は、Node.js v4 モデルに対してのみ提供されています。

Note

リファレンスと例は、Python v2 モデルに対してのみ提供されます。

Note

両方の 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 更新するアシスタントの ID。
モデル 使用する OpenAI チャット モデルの名前。 Azure OpenAI の場合、この値はモデル デプロイの名前です。

注釈

PostUserQuery 注釈を使用すると、これらのパラメーターをサポートするアシスタント ポスト入力バインドを定義できます。

要素 説明
name 出力バインドの名前。
id 更新するアシスタントの ID。
model 使用する OpenAI チャット モデルの名前。 Azure OpenAI の場合、この値はモデル デプロイの名前です。

デコレーター

プレビュー中に、出力バインドをこれらのパラメーターをサポートする postUserQuery 型の generic_output_binding バインドとして定義します。

パラメーター 説明
arg_name バインド パラメーターを表す変数の名前。
id 更新するアシスタントの ID。
model 使用する OpenAI チャット モデルの名前。 Azure OpenAI の場合、この値はモデル デプロイの名前です。

構成

このバインドでは、function.json ファイルで設定したこれらの構成プロパティをサポートします。

プロパティ 説明
type PostUserQueryである必要があります。
direction outである必要があります。
name 出力バインドの名前。
id 更新するアシスタントの ID。
model 使用する OpenAI チャット モデルの名前。 Azure OpenAI の場合、この値はモデル デプロイの名前です。

構成

このバインドでは、コードで定義されている、これらのプロパティをサポートします。

プロパティ 説明
id 更新するアシスタントの ID。
model 使用する OpenAI チャット モデルの名前。 Azure OpenAI の場合、この値はモデル デプロイの名前です。

使用方法

完全な例については、セクションの例を参照してください。