重要
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)。 |
使用方法
完全な例については、セクションの例を参照してください。