次の方法で共有


Azure Functions 用の Azure OpenAI アシスタント クエリ入力バインド

重要

Azure Functions 用の Azure OpenAI 拡張機能は現在、プレビュー段階です。

Azure OpenAI アシスタント クエリ入力バインドを使用すると、Assistants API クエリをコード実行に統合できます。

Azure OpenAI 拡張機能のセットアップと構成の詳細については、「Azure Functions 用の Azure OpenAI 拡張機能」を参照してください。 Azure OpenAI アシスタントの詳細については、「Azure OpenAI Assistants API」を参照してください。

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

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

両方の C# プロセス モデルがサポートされていますが、 isolated worker モデル 例のみが提供されます。

この例では、アシスタント チャット ボットの会話履歴に対するクエリを実行する HTTP GET 関数の作成プロセスを示します。 プロンプトに対する応答は HTTP 応答で返されます。

/// <summary>
/// HTTP GET function that queries the conversation history of the assistant chat bot.
/// </summary>
[Function(nameof(GetChatState))]
public static IActionResult GetChatState(
   [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "assistants/{assistantId}")] HttpRequestData req,
   string assistantId,
   [AssistantQueryInput("{assistantId}", TimestampUtc = "{Query.timestampUTC}", ChatStorageConnectionSetting = DefaultChatStorageConnectionSetting, CollectionName = DefaultCollectionName)] AssistantState state)
{
    return new OkObjectResult(state);
}

この例では、アシスタント チャット ボットの会話履歴に対するクエリを実行する HTTP GET 関数の作成プロセスを示します。 プロンプトに対する応答は HTTP 応答で返されます。

/*
 * HTTP GET function that queries the conversation history of the assistant chat bot.
 */   
@FunctionName("GetChatState")
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 GET 関数の作成プロセスを示します。 プロンプトに対する応答は HTTP 応答で返されます。

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

const chatBotQueryInput = input.generic({
    type: 'assistantQuery',
    id: '{assistantId}',
    timestampUtc: '{Query.timestampUTC}',
    chatStorageConnectionSetting: CHAT_STORAGE_CONNECTION_SETTING,
    collectionName: COLLECTION_NAME
})
app.http('GetChatState', {
    methods: ['GET'],
    route: 'assistants/{assistantId}',
    authLevel: 'anonymous',
    extraInputs: [chatBotQueryInput],
    handler: async (_, context) => {
        const state = context.extraInputs.get(chatBotQueryInput)
        return { status: 200, jsonBody: state }
    }
})

この例では、アシスタント チャット ボットの会話履歴に対するクエリを実行する HTTP GET 関数の作成プロセスを示します。 プロンプトに対する応答は HTTP 応答で返されます。

import { HttpRequest, InvocationContext, app, input, output } from "@azure/functions"

const chatBotQueryInput = input.generic({
    type: 'assistantQuery',
    id: '{assistantId}',
    timestampUtc: '{Query.timestampUTC}',
    chatStorageConnectionSetting: CHAT_STORAGE_CONNECTION_SETTING,
    collectionName: COLLECTION_NAME
})
app.http('GetChatState', {
    methods: ['GET'],
    route: 'assistants/{assistantId}',
    authLevel: 'anonymous',
    extraInputs: [chatBotQueryInput],
    handler: async (_, context) => {
        const state: any = context.extraInputs.get(chatBotQueryInput)
        return { status: 200, jsonBody: state }
    }
})

この例では、アシスタント チャット ボットの会話履歴に対するクエリを実行する HTTP GET 関数の作成プロセスを示します。 プロンプトに対する応答は HTTP 応答で返されます。

チャット状態を取得するための function.json ファイルを次に示します。

{
  "bindings": [
    {
      "authLevel": "function",
      "type": "httpTrigger",
      "direction": "in",
      "name": "Request",
      "route": "assistants/{assistantId}",
      "methods": [
        "get"
      ]
    },
    {
      "type": "http",
      "direction": "out",
      "name": "Response"
    },
    {
      "name": "State",
      "type": "assistantQuery",
      "direction": "in",
      "dataType": "string",
      "id": "{assistantId}",
      "timestampUtc": "{Query.timestampUTC}",
      "chatStorageConnectionSetting": "AzureWebJobsStorage",
      "collectionName": "ChatState"
    }
  ]
}

function.json ファイルのプロパティについて詳しくは、「構成」セクションをご覧ください。

using namespace System.Net

param($Request, $TriggerMetadata, $State)

Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
    StatusCode = [HttpStatusCode]::OK
    Body       = $State
    Headers    = @{
        "Content-Type" = "application/json"
    }
})

この例では、アシスタント チャット ボットの会話履歴に対するクエリを実行する HTTP GET 関数の作成プロセスを示します。 プロンプトに対する応答は HTTP 応答で返されます。

@apis.function_name("GetChatState")
@apis.route(route="assistants/{assistantId}", methods=["GET"])
@apis.assistant_query_input(
    arg_name="state",
    id="{assistantId}",
    timestamp_utc="{Query.timestampUTC}",
    chat_storage_connection_setting=DEFAULT_CHAT_STORAGE_SETTING,
    collection_name=DEFAULT_CHAT_COLLECTION_NAME,
)
def get_chat_state(req: func.HttpRequest, state: str) -> func.HttpResponse:
    return func.HttpResponse(state, status_code=200, mimetype="application/json")

属性

AssistantQuery 属性を適用して、これらのパラメーターをサポートするアシスタント クエリ入力バインドを定義します。

パラメーター 内容
身分証明書 クエリを実行するアシスタントの ID を取得します。
タイムスタンプUTC 省略可。 取得するチャット履歴内の最も古いメッセージのタイムスタンプを取得または設定します。 タイムスタンプは ISO 8601 形式である必要があります (例: 2023-08-01T00:00:00Z)。

注釈

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

要素 内容
名前 入力バインドの名前を取得または設定します。
ID クエリを実行するアシスタントの ID を取得します。
タイムスタンプUTC 省略可。 取得するチャット履歴内の最も古いメッセージのタイムスタンプを取得または設定します。 タイムスタンプは ISO 8601 形式である必要があります (例: 2023-08-01T00:00:00Z)。

デコレーター

プレビュー中に、入力バインドを次のパラメーターをサポートする generic_input_binding 型の assistantQuery バインドとして定義します。

パラメーター 内容
arg_name バインド パラメーターを表す変数の名前。
ID クエリを実行するアシスタントの ID を取得します。
time_stamp_utc 省略可。 取得するチャット履歴内の最も古いメッセージのタイムスタンプを取得または設定します。 タイムスタンプは ISO 8601 形式である必要があります (例: 2023-08-01T00:00:00Z)。

構成

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

プロパティ 内容
タイプ assistantQueryである必要があります。
方向 inである必要があります。
名前 入力バインドの名前。
ID クエリを実行するアシスタントの ID を取得します。
タイムスタンプUTC 省略可。 取得するチャット履歴内の最も古いメッセージのタイムスタンプを取得または設定します。 タイムスタンプは ISO 8601 形式である必要があります (例: 2023-08-01T00:00:00Z)。

構成

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

プロパティ 内容
ID クエリを実行するアシスタントの ID を取得します。
タイムスタンプUTC 省略可。 取得するチャット履歴内の最も古いメッセージのタイムスタンプを取得または設定します。 タイムスタンプは ISO 8601 形式である必要があります (例: 2023-08-01T00:00:00Z)。

使用方法

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