你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
注释
Azure AI 搜索可通过Azure门户、REST API 和Azure SDK获取。 它还支持 Foundry IQ,该知识层将企业内容转换为 Microsoft Foundry 门户中代理的可重用权限感知知识库。
Important
这些特性和功能支持与其他Microsoft 服务和第三方服务的连接。 使用这些服务受其各自的条款的约束,可能会导致数据处理或存储超出Azure符合性边界,以及流入Azure符合性边界的数据。
负责管理数据是否将流出组织的合规性和地理边界以及任何相关影响,以及预配适当的权限、边界和审批。
你负责仔细查看和测试在特定用例上下文中生成的应用程序,并做出所有适当的决策和自定义。 这包括实施自己的负责任的 AI 缓解措施,例如元系统、内容筛选器或其他安全系统,并确保应用程序满足适当的质量、可靠性、安全性和可信度标准。 有关详细信息,请参阅 Azure AI 搜索 透明度说明。
GenAI(生成式人工智能)提示词技能对部署在Azure OpenAI in Foundry Models或Microsoft Foundry中部署的大型语言模型(LLM)执行chat 请求。 利用这项技能创建新的信息,这些信息可以被索引并存储为可搜索内容。
以下是生成式AI提示技能如何帮助你创作内容的一些示例:
- 对图像进行口头处理
- 总结大量文本
- 简化复杂内容
- 做任何你能在提示中表达出来的任务
生成式AI提示技能通常可在2026-04-01 Search Service REST API以及针对该版本的Azure SDK中提供。 该技能支持文本、图像和多模态内容,如带视觉图像的图像和从PDF文件提取的文本。
Tip
这项技能常常会与数据分块技能结合使用。 多模态教程演示了两种不同的数据分块策略进行图像语言化。
支持的模型
可以使用 Foundry 中部署的任何 聊天完成推理模型 ,例如 GPT 模型、DeepSeek-R#、Llama-4-Maverick 和 Cohere-command-r。 针对GPT模型,只支持聊天完成API端点。 使用Azure OpenAI Responses API(URI 中包含
/openai/responses)的终端目前不兼容。对于图像语言化,你用来分析图像的模型决定支持哪些图像格式。
对于GPT-5模型,该
temperature参数的支持方式与以往模型不同。 如果定义了,必须设置为1.0,否则其他值会导致错误。计费是基于你所用模型的定价。
注释
搜索服务通过公共端点连接到你的模型,因此没有区域位置要求。 不过,如果你用的是全Azure方案,应该检查Azure AI 搜索区域和Azure OpenAI模型区域以找到合适的配对,尤其是你有数据驻留要求的话。
先决条件
一个已部署到你的资源或项目 中支持的模型 。
对于Azure OpenAI,从Azure门户的
openai.azure.com页面复制带有域的端点。 用这个端点表示Uri该技能的参数。对于 Foundry,从 Foundry 门户的 模型 页面复制部署的目标 URI。 用这个端点表示
Uri该技能的参数。
认证可以基于密钥,使用来自 Foundry 或 Azure OpenAI 资源的 API 密钥。 不过,我们建议使用分配给角色的 搜索服务托管身份 进行基于角色的访问。
在Azure OpenAI上,将Cognitive Services OpenAI User分配到托管身份。
在 Foundry 上,将 Foundry 用户 分配到托管标识。
Important
最近重命名了 Foundry RBAC 角色。
Foundry User 、Foundry Owner 、Foundry 帐户所有者 ,Foundry Project Manager 以前被命名Azure AI 用户、Azure AI 所有者、Azure AI 帐户所有者和Azure AI Project 管理器。 在重命名推出时,你仍可能会在某些位置看到以前的名称。重命名后,角色 ID 和核心权限保持不变。
@odata.type
#Microsoft.Skills.Custom.ChatCompletionSkill
数据限制
| Limit | 备注 |
|---|---|
maxTokens |
如果省略,默认是 1024 。 最大值取决于模型。 |
| 请求超时 | 修复为30秒。 在选择批量索引模型时,请考虑这一限制,因为推理模型(如 o1 和 o3)可能超过该限制。 |
| 映像 | 支持基于64编码的图片和图片URL。 尺寸限制取决于模型。 |
技能参数
| 财产 | 类型 | 必需 | 备注 |
|---|---|---|---|
uri |
字符串 | 是的 | 已部署模型的终结点。 支持的域名有:
Azure API 管理 终结点也受支持,包括 API 管理自定义域。 有关设置(包括身份验证、RBAC 和可选专用连接)的信息,请参阅 使用 Azure OpenAI 技能和向量器Azure API 管理。 |
apiKey |
字符串 | Cond.* | 型号的秘密密钥。 使用托管身份时请留空。 |
authIdentity |
字符串 | Cond.* | User-assigned managed identity client ID (Azure仅OpenAI使用)。 使用 系统分配 的身份时留空。 |
commonModelParameters |
对象 | 否 | 标准的生成控制,如 temperature、 maxTokens等。 |
extraParameters |
对象 | 否 | 开放字典传递到底层模型API。 |
extraParametersBehavior |
字符串 | 否 |
"pass-through"
|
"drop"
|
"error" (默认 "error")。 |
responseFormat |
对象 | 否 | 控制模型返回的是 文本、自由格式 的JSON对象,还是强类型 JSON模式。
responseFormat 有效载荷示例:{responseFormat: { type: text }}, {responseFormat: { type: json_object }}, {responseFormat: { type: json_schema }}} |
* 必须使用服务中恰好一个apiKey、 authIdentity或服务系统分配的身份。
commonModelParameters 默认值
| 参数 | 默认 |
|---|---|
model |
(部署默认值) |
frequencyPenalty |
0 |
presencePenalty |
0 |
maxTokens |
1024 |
temperature |
0.7 |
seed |
零 |
stop |
零 |
技能输入
| 输入名称 | 类型 | 必需 | 说明 |
|---|---|---|---|
systemMessage |
字符串 | 是的 | 系统层面的指导(例如:“ 你是一个有用的助手。”)。 |
userMessage |
字符串 | 是的 | 用户提示。 |
text |
字符串 | 否 | 附加于(仅文本场景)的可选文本 userMessage 。 |
image |
string(基于64的数据URL) | 否 | 在提示中添加一张图片(仅限多模态模型)。 |
imageDetail |
字符串(low | high | auto) |
否 | Azure OpenAI 多模式模型的保真提示。 |
技能输出
| 输出名称 | 类型 | 说明 |
|---|---|---|
response |
字符串 或 JSON 对象 | 模型输出格式为 responseFormat.type。 |
usageInformation |
JSON 对象 | 代币计数和模型参数的回声。 |
示例定义
仅限文本的摘要
{
"@odata.type": "#Microsoft.Skills.Custom.ChatCompletionSkill",
"name": "Summarizer",
"description": "Summarizes document content.",
"context": "/document",
"inputs": [
{ "name": "text", "source": "/document/content" },
{ "name": "systemMessage", "source": "='You are a concise AI assistant.'" },
{ "name": "userMessage", "source": "='Summarize the following text:'" }
],
"outputs": [ { "name": "response" } ],
"uri": "https://demo.openai.azure.com/openai/deployments/gpt-4o/chat/completions",
"apiKey": "<api-key>",
"commonModelParameters": { "temperature": 0.3 }
}
文本 + 图片描述
{
"@odata.type": "#Microsoft.Skills.Custom.ChatCompletionSkill",
"name": "Image Describer",
"context": "/document/normalized_images/*",
"inputs": [
{ "name": "image", "source": "/document/normalized_images/*/data" },
{ "name": "imageDetail", "source": "=high" },
{ "name": "systemMessage", "source": "='You are a useful AI assistant.'" },
{ "name": "userMessage", "source": "='Describe this image:'" }
],
"outputs": [ { "name": "response" } ],
"uri": "https://demo.openai.azure.com/openai/deployments/gpt-4o/chat/completions",
"authIdentity": "11111111-2222-3333-4444-555555555555",
"responseFormat": { "type": "text" }
}
结构化数值事实查找器
{
"@odata.type": "#Microsoft.Skills.Custom.ChatCompletionSkill",
"name": "NumericalFactFinder",
"context": "/document",
"inputs": [
{ "name": "systemMessage", "source": "='You are an AI assistant that helps people find information.'" },
{ "name": "userMessage", "source": "='Find all the numerical data and put it in the specified fact format.'"},
{ "name": "text", "source": "/document/content" }
],
"outputs": [ { "name": "response" } ],
"uri": "https://demo.openai.azure.com/openai/deployments/gpt-4o/chat/completions",
"apiKey": "<api-key>",
"responseFormat": {
"type": "json_schema",
"jsonSchemaProperties": {
"name": "NumericalFactObj",
"strict": true,
"schema": {
"type": "object",
"properties": "{\"facts\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"number\":{\"type\":\"number\"},\"fact\":{\"type\":\"string\"}},\"required\":[\"number\",\"fact\"]}}}",
"required": [ "facts" ],
"additionalProperties": false
}
}
}
}
采样输出(截断)
{
"response": {
"facts": [
{ "number": 32.0, "fact": "Jordan scored 32 points per game in 1986-87." },
{ "number": 6.0, "fact": "He won 6 NBA championships." }
]
},
"usageInformation": {
"usage": {
"completion_tokens": 203,
"prompt_tokens": 248,
"total_tokens": 451
}
}
}
最佳做法
- 用 文本拆分 技能创建分块长文档,保持在模型的上下文窗口内。
- 对于高流量索引,应专门为该技能部署一个模型,以确保查询时RAG工作负载的令牌配额不受影响。
- 为了最小化延迟,将模型和你的 Azure AI 搜索 服务共置在同一 Azure 区域。
- 配合
responseFormat.json_schema使用,实现可靠的结构化提取和更便捷的索引字段映射。 - 监控代币使用情况,如果索引器超过了你的每分钟代币数(TPM)限制,请提交 配额增加请求 。
错误与警告
| 条件 | Result |
|---|---|
缺失或无效 uri |
Error |
| 未指定认证方法 | Error |
两者兼apiKeyauthIdentity有供应 |
Error |
| 不支持的多模态提示模型 | Error |
| 输入超过模型令牌限制 | Error |
模型返回无效的 JSON json_schema |
警告:返回的原始字符串 response |
托管标识身份验证的安全注意事项
当 GenAI 提示技能使用托管标识身份验证时,Azure AI 搜索获取 Foundry 工具访问群体(https://cognitiveservices.azure.com)的Microsoft Entra访问令牌,并将其包含在发送到指定uri终结点的请求中。 托管标识身份验证适用于设置时authIdentity或同时为apiKeyauthIdentity空且服务使用系统分配的标识。
引用的uri终结点应是你自己的 openAI 或 Foundry 资源Azure。 支持的域名有:
openai.azure.comcognitiveservices.azure.comservices.ai.azure.com
Azure API 管理(APIM)终结点(*.azure-api.net)和前面这些资源的自定义域也受支持。 由于自定义域或 APIM 主机名不能单独从其名称进行验证,因此Azure AI 搜索在配置时通过实时连接检查来验证这些终结点,而不是通过域匹配来验证这些终结点。 你负责配置和维护终结点与其后面的 Azure OpenAI 或 Foundry 资源之间的关系。
注释
为 Foundry 工具访问群体颁发的托管标识令牌对任何 Foundry 工具或Azure OpenAI 资源有效,该标识已授权。 将其发送到不受信任的终结点可能会公开令牌。
建议的安全做法
若要帮助维护安全部署,请遵循以下做法:
- 仅设置为
uri你拥有和信任的终结点。 首选前面列出的 Foundry Tools 域。 如果使用 APIM 或自定义域终结点,请在启用托管标识之前确认它位于自己的资源前面。 受信任的主机名不是所有权证明。 - 将最低特权原则应用于搜索服务使用的托管标识:
- 在 Azure OpenAI 上,仅分配认知服务 OpenAI 用户。
- 在 Foundry 上,仅分配 Foundry 用户。 避免授予更广泛的角色。
- 使用 网络安全外围(NSP) 和专用终结点或 VNet 集成来限制搜索服务可以访问的终结点,以及目标资源接受来自哪些源的请求。
- 如果使用 APIM 或自定义域终结点,请确保网关验证入站请求,并将请求转发到预期后端。 还应定期查看其访问策略。
- 首选托管标识而不是
apiKey。 如果使用apiKey,请安全地存储和旋转它,不要将其嵌入源代码管理中。 服务拒绝同时设置apiKey和authIdentity设置的配置。 - 定期查看技能组定义、托管标识角色分配以及 APIM 和自定义域配置,以确认
uri值、访问控制和标识权限保持最新且合适。 通过建立的变更管理和安全评审流程查看配置更改。 - 监视 Azure OpenAI、Foundry 工具和 Foundry 登录日志、身份验证事件以及访问日志,以获取意外或未经授权的活动。
- 删除不再需要的技能、终结点、角色分配和 API 密钥。
限制对技能集配置的访问
可以创建、修改或运行技能集的用户控制目标终结点(uri)和技能使用的身份验证配置。 由于技能向该终结点发送 Foundry 工具受众的托管标识令牌,因此请在配置已启用托管标识的技能时将这些权限限制为受信任的管理员,并遵循标准变更管理和安全评审过程。
另请参阅
- Azure AI 搜索内置索引器
- 集成向量化
- 如何定义技能组
- 如何用Azure AI模型推理生成聊天完成(Foundry)
结构化输出Azure OpenAI