Von Bedeutung
現在、Azure Functions 用の Azure OpenAI 拡張機能はプレビュー段階です。
Azure OpenAI セマンティック検索入力バインドを使用すると、埋め込みでセマンティック検索を使用できます。
Azure OpenAI 拡張機能のセットアップと構成の詳細については、「Azure Functions 用の Azure OpenAI 拡張機能」を参照してください。 Azure AI 検索でのセマンティック ランク付けの詳細については、「Azure AI Search でのセマンティック ランク付け」を参照してください。
注
リファレンスと例は、Node.js v4 モデルに対してのみ提供されています。
注
リファレンスと例は、Python v2 モデルに対してのみ提供されます。
注
両方の C# プロセス モデルがサポートされていますが、 isolated worker モデル 例のみが提供されます。
例
この例では、ファイルに対してセマンティック検索を実行する方法を示します。
[Function("PromptFile")]
public static IActionResult PromptFile(
[HttpTrigger(AuthorizationLevel.Function, "post")] SemanticSearchRequest unused,
[SemanticSearchInput("AISearchEndpoint", "openai-index", Query = "{prompt}", ChatModel = "%CHAT_MODEL_DEPLOYMENT_NAME%", EmbeddingsModel = "%EMBEDDING_MODEL_DEPLOYMENT_NAME%")] SemanticSearchContext result)
{
return new ContentResult { Content = result.Response, ContentType = "text/plain" };
}
この例では、ファイルに対してセマンティック検索を実行する方法を示します。
@FunctionName("PromptFile")
public HttpResponseMessage promptFile(
@HttpTrigger(
name = "req",
methods = {HttpMethod.POST},
authLevel = AuthorizationLevel.ANONYMOUS)
HttpRequestMessage<SemanticSearchRequest> request,
@SemanticSearch(name = "search", searchConnectionName = "AISearchEndpoint", collection = "openai-index", query = "{prompt}", chatModel = "%CHAT_MODEL_DEPLOYMENT_NAME%", embeddingsModel = "%EMBEDDING_MODEL_DEPLOYMENT_NAME%", isReasoningModel = false ) String semanticSearchContext,
final ExecutionContext context) {
String response = new JSONObject(semanticSearchContext).getString("Response");
return request.createResponseBuilder(HttpStatus.OK)
.header("Content-Type", "application/json")
.body(response)
.build();
}
public class SemanticSearchRequest {
public String prompt;
public String getPrompt() {
return prompt;
}
public void setPrompt(String prompt) {
this.prompt = prompt;
}
}
この例では、ファイルに対してセマンティック検索を実行する方法を示します。
const semanticSearchInput = input.generic({
type: "semanticSearch",
connectionName: "AISearchEndpoint",
collection: "openai-index",
query: "{prompt}",
chatModel: "%CHAT_MODEL_DEPLOYMENT_NAME%",
embeddingsModel: "%EMBEDDING_MODEL_DEPLOYMENT_NAME%"
});
app.http('PromptFile', {
methods: ['POST'],
authLevel: 'function',
extraInputs: [semanticSearchInput],
handler: async (_request, context) => {
var responseBody = context.extraInputs.get(semanticSearchInput)
return { status: 200, body: responseBody.Response.trim() }
}
});
const semanticSearchInput = input.generic({
type: "semanticSearch",
connectionName: "AISearchEndpoint",
collection: "openai-index",
query: "{prompt}",
chatModel: "%CHAT_MODEL_DEPLOYMENT_NAME%",
embeddingsModel: "%EMBEDDING_MODEL_DEPLOYMENT_NAME%"
});
app.http('PromptFile', {
methods: ['POST'],
authLevel: 'function',
extraInputs: [semanticSearchInput],
handler: async (_request, context) => {
var responseBody: any = context.extraInputs.get(semanticSearchInput)
return { status: 200, body: responseBody.Response.trim() }
}
});
この例では、ファイルに対してセマンティック検索を実行する方法を示します。
ファイルを求める function.json ファイルを次に示します。
{
"bindings": [
{
"authLevel": "function",
"type": "httpTrigger",
"direction": "in",
"name": "Request",
"methods": [
"post"
]
},
{
"type": "http",
"direction": "out",
"name": "Response"
},
{
"name": "SemanticSearchInput",
"type": "semanticSearch",
"direction": "in",
"searchConnectionName": "AISearchEndpoint",
"collection": "openai-index",
"query": "{prompt}",
"chatModel": "%CHAT_MODEL_DEPLOYMENT_NAME%",
"embeddingsModel": "%EMBEDDING_MODEL_DEPLOYMENT_NAME%"
}
]
}
function.json ファイルのプロパティについて詳しくは、「構成」セクションをご覧ください。
using namespace System.Net
param($Request, $TriggerMetadata, $SemanticSearchInput)
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
StatusCode = [HttpStatusCode]::OK
Body = $SemanticSearchInput.Response
})
この例では、ファイルに対してセマンティック検索を実行する方法を示します。
@app.function_name("PromptFile")
@app.route(methods=["POST"])
@app.semantic_search_input(
arg_name="result",
search_connection_name="AISearchEndpoint",
collection="openai-index",
query="{prompt}",
embeddings_model="%EMBEDDING_MODEL_DEPLOYMENT_NAME%",
chat_model="%CHAT_MODEL_DEPLOYMENT_NAME%",
)
def prompt_file(req: func.HttpRequest, result: str) -> func.HttpResponse:
result_json = json.loads(result)
response_json = {
"content": result_json.get("Response"),
"content_type": "text/plain",
}
return func.HttpResponse(
json.dumps(response_json), status_code=200, mimetype="application/json"
)
属性
SemanticSearchInput
属性を適用して、次のパラメーターをサポートするセマンティック検索入力バインドを定義します。
パラメーター | 説明 |
---|---|
SearchConnectionName | 接続文字列の値を含むアプリ設定または環境変数の名前。 このプロパティは、バインド式をサポートしています。 |
コレクション | 検索するコレクション、テーブル、またはインデックスの名前。 このプロパティは、バインド式をサポートしています。 |
クエリ | 検索に使用するセマンティック クエリ テキスト。 このプロパティは、バインド式をサポートしています。 |
EmbeddingsModel |
オプション。 埋め込み用に使用するモデルの ID。 既定値は text-embedding-3-small です。 このプロパティは、バインド式をサポートしています。 |
ChatModel |
オプション。 チャット応答用に呼び出す大きな言語モデルの名前を取得または設定します。 既定値は gpt-3.5-turbo です。 このプロパティは、バインド式をサポートしています。 |
AIConnectionName | オプション。 AI サービス接続設定の構成セクションの名前を取得または設定します。 Azure OpenAI の場合: 指定した場合は、この構成セクションで "Endpoint" と "Key" の値を探します。 指定されていない場合、またはセクションが存在しない場合は、環境変数 (AZURE_OPENAI_ENDPOINTとAZURE_OPENAI_KEY) にフォールバックします。 ユーザー割り当てマネージド ID 認証の場合、このプロパティは必須です。 OpenAI サービス (Azure 以外) の場合は、OPENAI_API_KEY環境変数を設定します。 |
SystemPrompt |
オプション。 大規模な言語モデルのプロンプトに使用するシステム プロンプトを取得または設定します。 システム プロンプトには、 Query の結果としてフェッチされるナレッジが追加されます。 結合されたプロンプトが OpenAI チャット API に送信されます。 このプロパティは、バインド式をサポートしています。 |
MaxKnowledgeCount |
オプション。
SystemPrompt に挿入するナレッジ項目の数を取得または設定します。 |
IsReasoningModel |
オプション。 チャット完了モデルが推論モデルであるかどうかを示す値を取得または設定します。 このオプションは試験段階であり、すべてのモデルが予期されるプロパティにパリティを持ち、既定値が false になるまで推論モデルに関連付けられます。 |
注釈
SemanticSearchInput
注釈を使用すると、次のパラメーターをサポートするセマンティック検索入力バインドを定義できます。
要素 | 説明 |
---|---|
名前 | 入力バインドの名前を取得または設定します。 |
searchConnectionName | 接続文字列の値を含むアプリ設定または環境変数の名前。 このプロパティは、バインド式をサポートしています。 |
コレクション | 検索するコレクション、テーブル、またはインデックスの名前。 このプロパティは、バインド式をサポートしています。 |
クエリ | 検索に使用するセマンティック クエリ テキスト。 このプロパティは、バインド式をサポートしています。 |
embeddingsModel |
オプション。 埋め込み用に使用するモデルの ID。 既定値は text-embedding-3-small です。 このプロパティは、バインド式をサポートしています。 |
chatModel |
オプション。 チャット応答用に呼び出す大きな言語モデルの名前を取得または設定します。 既定値は gpt-3.5-turbo です。 このプロパティは、バインド式をサポートしています。 |
aiConnectionName | オプション。 AI サービス接続設定の構成セクションの名前を取得または設定します。 Azure OpenAI の場合: 指定した場合は、この構成セクションで "Endpoint" と "Key" の値を探します。 指定されていない場合、またはセクションが存在しない場合は、環境変数 (AZURE_OPENAI_ENDPOINTとAZURE_OPENAI_KEY) にフォールバックします。 ユーザー割り当てマネージド ID 認証の場合、このプロパティは必須です。 OpenAI サービス (Azure 以外) の場合は、OPENAI_API_KEY環境変数を設定します。 |
systemPrompt |
オプション。 大規模な言語モデルのプロンプトに使用するシステム プロンプトを取得または設定します。 システム プロンプトには、 Query の結果としてフェッチされるナレッジが追加されます。 結合されたプロンプトが OpenAI チャット API に送信されます。 このプロパティは、バインド式をサポートしています。 |
maxKnowledgeCount |
オプション。
SystemPrompt に挿入するナレッジ項目の数を取得または設定します。 |
isReasoningModel |
オプション。 チャット完了モデルが推論モデルであるかどうかを示す値を取得または設定します。 このオプションは試験段階であり、すべてのモデルが予期されるプロパティにパリティを持ち、既定値が false になるまで推論モデルに関連付けられます。 |
デコレータ
プレビュー中に、入力バインドを次のパラメーターをサポートする generic_input_binding
型の semanticSearch
バインドとして定義します。
パラメーター | 説明 |
---|---|
arg_name | バインド パラメーターを表す変数の名前。 |
search_connection_name | 接続文字列の値を含むアプリ設定または環境変数の名前。 このプロパティは、バインド式をサポートしています。 |
コレクション | 検索するコレクション、テーブル、またはインデックスの名前。 このプロパティは、バインド式をサポートしています。 |
クエリ | 検索に使用するセマンティック クエリ テキスト。 このプロパティは、バインド式をサポートしています。 |
embeddings_model |
オプション。 埋め込み用に使用するモデルの ID。 既定値は text-embedding-3-small です。 このプロパティは、バインド式をサポートしています。 |
chat_model |
オプション。 チャット応答用に呼び出す大きな言語モデルの名前を取得または設定します。 既定値は gpt-3.5-turbo です。 このプロパティは、バインド式をサポートしています。 |
ai_connection_name | オプション。 AI サービス接続設定の構成セクションの名前を取得または設定します。 Azure OpenAI の場合: 指定した場合は、この構成セクションで "Endpoint" と "Key" の値を探します。 指定されていない場合、またはセクションが存在しない場合は、環境変数 (AZURE_OPENAI_ENDPOINTとAZURE_OPENAI_KEY) にフォールバックします。 ユーザー割り当てマネージド ID 認証の場合、このプロパティは必須です。 OpenAI サービス (Azure 以外) の場合は、OPENAI_API_KEY環境変数を設定します。 |
system_prompt |
オプション。 大規模な言語モデルのプロンプトに使用するシステム プロンプトを取得または設定します。 システム プロンプトには、 Query の結果としてフェッチされるナレッジが追加されます。 結合されたプロンプトが OpenAI チャット API に送信されます。 このプロパティは、バインド式をサポートしています。 |
max_knowledge_count |
オプション。
SystemPrompt に挿入するナレッジ項目の数を取得または設定します。 |
is_reasoning _model |
オプション。 チャット完了モデルが推論モデルであるかどうかを示す値を取得または設定します。 このオプションは試験段階であり、すべてのモデルが予期されるプロパティにパリティを持ち、既定値が false になるまで推論モデルに関連付けられます。 |
コンフィギュレーション
このバインドでは、function.json ファイルで設定したこれらの構成プロパティをサポートします。
プロパティ | 説明 |
---|---|
タイプ |
semanticSearch である必要があります。 |
方向 |
in である必要があります。 |
名前 | 入力バインドの名前。 |
searchConnectionName | 接続文字列値を含むアプリ設定または環境変数の名前を取得または設定します。 このプロパティは、バインド式をサポートしています。 |
コレクション | 検索するコレクション、テーブル、またはインデックスの名前。 このプロパティは、バインド式をサポートしています。 |
クエリ | 検索に使用するセマンティック クエリ テキスト。 このプロパティは、バインド式をサポートしています。 |
embeddingsModel |
オプション。 埋め込み用に使用するモデルの ID。 既定値は text-embedding-3-small です。 このプロパティは、バインド式をサポートしています。 |
chatModel |
オプション。 チャット応答用に呼び出す大きな言語モデルの名前を取得または設定します。 既定値は gpt-3.5-turbo です。 このプロパティは、バインド式をサポートしています。 |
aiConnectionName | オプション。 AI サービス接続設定の構成セクションの名前を取得または設定します。 Azure OpenAI の場合: 指定した場合は、この構成セクションで "Endpoint" と "Key" の値を探します。 指定されていない場合、またはセクションが存在しない場合は、環境変数 (AZURE_OPENAI_ENDPOINTとAZURE_OPENAI_KEY) にフォールバックします。 ユーザー割り当てマネージド ID 認証の場合、このプロパティは必須です。 OpenAI サービス (Azure 以外) の場合は、OPENAI_API_KEY環境変数を設定します。 |
systemPrompt |
オプション。 大規模な言語モデルのプロンプトに使用するシステム プロンプトを取得または設定します。 システム プロンプトには、 Query の結果としてフェッチされるナレッジが追加されます。 結合されたプロンプトが OpenAI チャット API に送信されます。 このプロパティは、バインド式をサポートしています。 |
maxKnowledgeCount |
オプション。
SystemPrompt に挿入するナレッジ項目の数を取得または設定します。 |
isReasoningModel |
オプション。 チャット完了モデルが推論モデルであるかどうかを示す値を取得または設定します。 このオプションは試験段階であり、すべてのモデルが予期されるプロパティにパリティを持ち、既定値が false になるまで推論モデルに関連付けられます。 |
コンフィギュレーション
このバインドでは、コードで定義されている、これらのプロパティをサポートします。
プロパティ | 説明 |
---|---|
searchConnectionName | 接続文字列の値を含むアプリ設定または環境変数の名前。 このプロパティは、バインド式をサポートしています。 |
コレクション | 検索するコレクション、テーブル、またはインデックスの名前。 このプロパティは、バインド式をサポートしています。 |
クエリ | 検索に使用するセマンティック クエリ テキスト。 このプロパティは、バインド式をサポートしています。 |
embeddingsModel |
オプション。 埋め込み用に使用するモデルの ID。 既定値は text-embedding-3-small です。 このプロパティは、バインド式をサポートしています。 |
chatModel |
オプション。 チャット応答用に呼び出す大きな言語モデルの名前を取得または設定します。 既定値は gpt-3.5-turbo です。 このプロパティは、バインド式をサポートしています。 |
aiConnectionName | オプション。 AI サービス接続設定の構成セクションの名前を取得または設定します。 Azure OpenAI の場合: 指定した場合は、この構成セクションで "Endpoint" と "Key" の値を探します。 指定されていない場合、またはセクションが存在しない場合は、環境変数 (AZURE_OPENAI_ENDPOINTとAZURE_OPENAI_KEY) にフォールバックします。 ユーザー割り当てマネージド ID 認証の場合、このプロパティは必須です。 OpenAI サービス (Azure 以外) の場合は、OPENAI_API_KEY環境変数を設定します。 |
systemPrompt |
オプション。 大規模な言語モデルのプロンプトに使用するシステム プロンプトを取得または設定します。 システム プロンプトには、 Query の結果としてフェッチされるナレッジが追加されます。 結合されたプロンプトが OpenAI チャット API に送信されます。 このプロパティは、バインド式をサポートしています。 |
maxKnowledgeCount |
オプション。
SystemPrompt に挿入するナレッジ項目の数を取得または設定します。 |
isReasoningModel |
オプション。 チャット完了モデルが推論モデルであるかどうかを示す値を取得または設定します。 このオプションは試験段階であり、すべてのモデルが予期されるプロパティにパリティを持ち、既定値が false になるまで推論モデルに関連付けられます。 |
使用方法
完全な例については、セクションの例を参照してください。