次の方法で共有


Azure Functions の Azure OpenAI セマンティック検索入力バインド

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 になるまで推論モデルに関連付けられます。

使用方法

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