共用方式為


Azure Functions 的 Azure OpenAI 語意搜尋輸入系結

這很重要

適用於 Azure Functions 的 Azure OpenAI 延伸模組目前為預覽狀態。

Azure OpenAI 語意搜尋輸入系結可讓您在內嵌上使用語意搜尋。

如需 Azure OpenAI 延伸模組的安裝和設定詳細資訊,請參閱適用於 Azure Functions 的 Azure OpenAI 延伸模組。 若要深入了解 Azure AI 搜尋中的語意排名,請參閱 Azure AI 搜尋中的語意排名

備註

參考和範例僅適用於 Node.js v4 模型

備註

參考和範例僅適用於 Python v2 模型

備註

雖然支援這兩個 C# 進程模型,但只會 提供隔離的背景工作模型 範例。

範例

此範例示範如何在檔案上執行語意搜尋。

[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 選擇性。 要用於內嵌之模型的標識碼。 預設值是 text-embedding-3-small。 此屬性支援繫結運算式。
ChatModel 選擇性。 取得或設定要針對聊天回應叫用的大型語言模型名稱。 預設值是 gpt-3.5-turbo。 此屬性支援繫結運算式。
AIConnectionName 選擇性。 取得或設定 AI 服務連線設定的組態區段名稱。 針對 Azure OpenAI:如果指定,請在此組態區段中尋找「端點」和「金鑰」值。 如果未指定或區段不存在,請回復為環境變數:AZURE_OPENAI_ENDPOINT和AZURE_OPENAI_KEY。 針對使用者指派的受控識別驗證,需要此屬性。 針對OpenAI服務 (非 Azure),請設定OPENAI_API_KEY環境變數。
SystemPrompt 選擇性。 取得或設定系統提示,以用於提示大型語言模型。 系統會附加系統提示,並具有擷取結果 Query的知識。 合併的提示會傳送至 OpenAI 聊天 API。 此屬性支援繫結運算式。
MaxKnowledgeCount 選擇性。 取得或設定要插入 至 SystemPrompt的知識項目數目。
IsReasoningModel 選擇性。 取得或設定值,指出聊天完成模型是否為推理模型。 此選項是實驗性的,且與推理模型相關聯,直到所有模型在預期的屬性中具有同位,預設值為 false

附註

SemanticSearchInput 注可讓您定義語意搜尋輸入系結,其支援下列參數:

元素 說明
名字 取得或設定輸入繫結的名稱。
searchConnectionName 包含連接字串值的應用程式設定或環境變數名稱。 此屬性支援繫結運算式。
集合 要搜尋的集合、資料表或索引名稱。 此屬性支援繫結運算式。
查詢 要用於搜尋的語意查詢文字。 此屬性支援繫結運算式。
embeddingsModel 選擇性。 要用於內嵌之模型的標識碼。 預設值是 text-embedding-3-small。 此屬性支援繫結運算式。
chatModel 選擇性。 取得或設定要針對聊天回應叫用的大型語言模型名稱。 預設值是 gpt-3.5-turbo。 此屬性支援繫結運算式。
aiConnectionName 選擇性。 取得或設定 AI 服務連線設定的組態區段名稱。 針對 Azure OpenAI:如果指定,請在此組態區段中尋找「端點」和「金鑰」值。 如果未指定或區段不存在,請回復為環境變數:AZURE_OPENAI_ENDPOINT和AZURE_OPENAI_KEY。 針對使用者指派的受控識別驗證,需要此屬性。 針對OpenAI服務 (非 Azure),請設定OPENAI_API_KEY環境變數。
systemPrompt 選擇性。 取得或設定系統提示,以用於提示大型語言模型。 系統會附加系統提示,並具有擷取結果 Query的知識。 合併的提示會傳送至 OpenAI 聊天 API。 此屬性支援繫結運算式。
maxKnowledgeCount 選擇性。 取得或設定要插入 至 SystemPrompt的知識項目數目。
isReasoningModel 選擇性。 取得或設定值,指出聊天完成模型是否為推理模型。 此選項是實驗性的,且與推理模型相關聯,直到所有模型在預期的屬性中具有同位,預設值為 false

裝飾項目

在預覽期間,將輸入繫結定義為 generic_input_binding 類型的 semanticSearch 繫結,其支援下列參數:

參數 說明
arg_name 代表繫結參數的變數名稱。
search_connection_name 包含連接字串值的應用程式設定或環境變數名稱。 此屬性支援繫結運算式。
集合 要搜尋的集合、資料表或索引名稱。 此屬性支援繫結運算式。
查詢 要用於搜尋的語意查詢文字。 此屬性支援繫結運算式。
embeddings_model 選擇性。 要用於內嵌之模型的標識碼。 預設值是 text-embedding-3-small。 此屬性支援繫結運算式。
chat_model 選擇性。 取得或設定要針對聊天回應叫用的大型語言模型名稱。 預設值是 gpt-3.5-turbo。 此屬性支援繫結運算式。
ai_connection_name 選擇性。 取得或設定 AI 服務連線設定的組態區段名稱。 針對 Azure OpenAI:如果指定,請在此組態區段中尋找「端點」和「金鑰」值。 如果未指定或區段不存在,請回復為環境變數:AZURE_OPENAI_ENDPOINT和AZURE_OPENAI_KEY。 針對使用者指派的受控識別驗證,需要此屬性。 針對OpenAI服務 (非 Azure),請設定OPENAI_API_KEY環境變數。
system_prompt 選擇性。 取得或設定系統提示,以用於提示大型語言模型。 系統會附加系統提示,並具有擷取結果 Query的知識。 合併的提示會傳送至 OpenAI 聊天 API。 此屬性支援繫結運算式。
max_knowledge_count 選擇性。 取得或設定要插入 至 SystemPrompt的知識項目數目。
is_reasoning _model 選擇性。 取得或設定值,指出聊天完成模型是否為推理模型。 此選項是實驗性的,且與推理模型相關聯,直到所有模型在預期的屬性中具有同位,預設值為 false

設定

繫結支援您在 function.json 檔案中設定的下列組態屬性。

房產 說明
類型 必須是 semanticSearch
方向 必須是 in
名字 輸入繫結的名稱。
searchConnectionName 取得或設定包含連接字串值的應用程式設定或環境變數名稱。 此屬性支援繫結運算式。
集合 要搜尋的集合、資料表或索引名稱。 此屬性支援繫結運算式。
查詢 要用於搜尋的語意查詢文字。 此屬性支援繫結運算式。
embeddingsModel 選擇性。 要用於內嵌之模型的標識碼。 預設值是 text-embedding-3-small。 此屬性支援繫結運算式。
chatModel 選擇性。 取得或設定要針對聊天回應叫用的大型語言模型名稱。 預設值是 gpt-3.5-turbo。 此屬性支援繫結運算式。
aiConnectionName 選擇性。 取得或設定 AI 服務連線設定的組態區段名稱。 針對 Azure OpenAI:如果指定,請在此組態區段中尋找「端點」和「金鑰」值。 如果未指定或區段不存在,請回復為環境變數:AZURE_OPENAI_ENDPOINT和AZURE_OPENAI_KEY。 針對使用者指派的受控識別驗證,需要此屬性。 針對OpenAI服務 (非 Azure),請設定OPENAI_API_KEY環境變數。
systemPrompt 選擇性。 取得或設定系統提示,以用於提示大型語言模型。 系統會附加系統提示,並具有擷取結果 Query的知識。 合併的提示會傳送至 OpenAI 聊天 API。 此屬性支援繫結運算式。
maxKnowledgeCount 選擇性。 取得或設定要插入 至 SystemPrompt的知識項目數目。
isReasoningModel 選擇性。 取得或設定值,指出聊天完成模型是否為推理模型。 此選項是實驗性的,且與推理模型相關聯,直到所有模型在預期的屬性中具有同位,預設值為 false

設定

繫結支援您在程式碼中定義的下列屬性:

房產 說明
searchConnectionName 包含連接字串值的應用程式設定或環境變數名稱。 此屬性支援繫結運算式。
集合 要搜尋的集合、資料表或索引名稱。 此屬性支援繫結運算式。
查詢 要用於搜尋的語意查詢文字。 此屬性支援繫結運算式。
embeddingsModel 選擇性。 要用於內嵌之模型的標識碼。 預設值是 text-embedding-3-small。 此屬性支援繫結運算式。
chatModel 選擇性。 取得或設定要針對聊天回應叫用的大型語言模型名稱。 預設值是 gpt-3.5-turbo。 此屬性支援繫結運算式。
aiConnectionName 選擇性。 取得或設定 AI 服務連線設定的組態區段名稱。 針對 Azure OpenAI:如果指定,請在此組態區段中尋找「端點」和「金鑰」值。 如果未指定或區段不存在,請回復為環境變數:AZURE_OPENAI_ENDPOINT和AZURE_OPENAI_KEY。 針對使用者指派的受控識別驗證,需要此屬性。 針對OpenAI服務 (非 Azure),請設定OPENAI_API_KEY環境變數。
systemPrompt 選擇性。 取得或設定系統提示,以用於提示大型語言模型。 系統會附加系統提示,並具有擷取結果 Query的知識。 合併的提示會傳送至 OpenAI 聊天 API。 此屬性支援繫結運算式。
maxKnowledgeCount 選擇性。 取得或設定要插入 至 SystemPrompt的知識項目數目。
isReasoningModel 選擇性。 取得或設定值,指出聊天完成模型是否為推理模型。 此選項是實驗性的,且與推理模型相關聯,直到所有模型在預期的屬性中具有同位,預設值為 false

用法

如需完整範例,請參閱範例一節。