重要
适用于 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",
"connectionName": "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
来定义语义搜索输入绑定,该绑定支持以下参数:
参数 | DESCRIPTION |
---|---|
SearchConnectionName | 包含连接字符串值的应用设置或环境变量的名称。 此属性支持绑定表达式。 |
集合 | 要搜索的集合、表或索引的名称。 此属性支持绑定表达式。 |
查询 | 用于搜索的语义查询文本。 此属性支持绑定表达式。 |
EmbeddingsModel |
可选。 要用于嵌入的模型的 ID。 默认值是 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
批注可以定义语义搜索输入绑定,该绑定支持以下参数:
元素 | DESCRIPTION |
---|---|
名字 | 获取或设置输入绑定的名称。 |
searchConnectionName | 包含连接字符串值的应用设置或环境变量的名称。 此属性支持绑定表达式。 |
集合 | 要搜索的集合、表或索引的名称。 此属性支持绑定表达式。 |
查询 | 用于搜索的语义查询文本。 此属性支持绑定表达式。 |
embeddingsModel |
可选。 要用于嵌入的模型的 ID。 默认值是 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
绑定,该绑定支持以下参数:
参数 | DESCRIPTION |
---|---|
arg_name | 表示绑定参数的变量的名称。 |
search_connection_name | 包含连接字符串值的应用设置或环境变量的名称。 此属性支持绑定表达式。 |
集合 | 要搜索的集合、表或索引的名称。 此属性支持绑定表达式。 |
查询 | 用于搜索的语义查询文本。 此属性支持绑定表达式。 |
embeddings_model |
可选。 要用于嵌入的模型的 ID。 默认值是 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 文件中设置的这些配置属性。
资产 | DESCRIPTION |
---|---|
类型 | 必须是 semanticSearch 。 |
方向 | 必须是 in 。 |
名字 | 输入绑定的名称。 |
searchConnectionName | 获取或设置包含连接字符串值的应用设置或环境变量的名称。 此属性支持绑定表达式。 |
集合 | 要搜索的集合、表或索引的名称。 此属性支持绑定表达式。 |
查询 | 用于搜索的语义查询文本。 此属性支持绑定表达式。 |
embeddingsModel |
可选。 要用于嵌入的模型的 ID。 默认值是 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 。 |
配置
绑定支持以下属性,这些属性在代码中定义:
资产 | DESCRIPTION |
---|---|
searchConnectionName | 包含连接字符串值的应用设置或环境变量的名称。 此属性支持绑定表达式。 |
集合 | 要搜索的集合、表或索引的名称。 此属性支持绑定表达式。 |
查询 | 用于搜索的语义查询文本。 此属性支持绑定表达式。 |
embeddingsModel |
可选。 要用于嵌入的模型的 ID。 默认值是 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 。 |
用法
有关完整示例,请参阅示例部分。