你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
“使用必应搜索查找事实依据”使 Azure AI 代理能够在生成响应时纳入实时公共 Web 数据。 你需要创建一个“使用必应搜索查找事实依据”资源,然后将此资源连接到 Azure AI 代理。 当用户发送查询时,Azure AI 代理将决定是否应利用“使用必应搜索查找事实依据”。 如果决定利用,它将利用必应来搜索公共 Web 数据并返回相关块。 最后,Azure AI 代理将使用返回的块来生成响应。
你可以提出问题,例如“今天的头条新闻是什么”或“美国零售行业最近有什么更新?”,这些都需要实时公共数据。
开发人员和最终用户无权访问从“使用必应搜索查找事实依据”返回的原始内容。 不过,模型响应包括带有用于生成响应的网站链接的引文,以及用于搜索的必应查询的链接。 可以通过访问创建的线程中的数据来检索 模型响应 。 根据“使用必应搜索查找事实依据”的使用和显示要求,这两个“参考项”必须以 Microsoft 提供的确切形式保留和显示。 有关详细信息,请参阅如何显示“使用必应搜索查找事实依据”结果部分。
重要
- 使用“使用必应搜索查找事实依据”可能会产生费用。 有关详细信息,请参阅定价页面。
- 通过使用代码优先体验(例如 Azure CLI)创建并使用与 Bing 搜索相关的资源,或通过部署模板进行部署,即表示您同意受 https://www.microsoft.com/en-us/bing/apis/grounding-legal 上的条款约束,并遵守这些条款,这些条款可能会不时更新。
- 使用“使用必应搜索进行基础设置”时,客户数据将传输到 Azure 合规性边界之外,以进行必应搜索服务提供的基础设置。 “使用必应搜索进行基础设置”不受相同的数据处理条款(包括处理位置)的约束,并且没有与 Azure AI Foundry 代理服务相同的合规性标准和认证,如使用必应搜索进行基础设置使用条款中所述。 你有责任评估在你的代理中使用“使用必应搜索进行基础设置”是否满足你的需求和要求。
“使用必应搜索查找事实依据”工作原理
用户查询是最终用户发送给代理的消息,例如“我今天应该带伞吗?我在西雅图。”指令是开发人员可以提供的系统消息,用于分享上下文,并向 AI 模型提供有关如何使用各种工具或行为的说明。
当用户发送查询时,客户的 AI 模型部署会首先处理该查询(使用提供的指令),然后执行必应搜索查询(这对开发人员可见)。 “使用必应查找事实依据”会将相关的搜索结果返回到客户的模型部署,然后生成最终输出。
注释
将 Grounding 与必应搜索结合使用时,仅将必应搜索查询、工具参数和资源密钥发送到必应,并且不包含特定于最终用户的信息。 资源密钥发送到必应仅出于计费和速率限制目的。
授权将在“使用必应搜索进行基础设置”服务和 Azure AI Foundry 代理服务之间发生。 会将出于事实依据的目的生成和发送到必应的任何必应搜索查询与资源密钥一起传输到“使用必应搜索查找事实依据”服务的 Azure 合规性边界之外。 “使用必应搜索进行基础设置”受必应的条款约束,并且没有与 Azure AI Foundry 代理服务相同的合规性标准和认证,如使用必应搜索进行基础设置使用条款中所述。 你有责任评估在你的代理中使用“使用必应搜索查找事实依据”是否满足你的需求和要求。
支持的功能和已知问题
- 使用必应搜索工具进行上下文关联的目的是从网络检索实时信息,而不是特定的 Web 域。
- 不建议汇总整个网页。
- 在一次运行中,AI 模型将评估工具输出,并可能决定再次调用该工具以获取更多信息和上下文。 AI 模型还可以决定使用哪个部分的工具输出来生成响应。
- Azure AI 代理服务将返回生成的 AI 模型响应 作为输出,因此端到端延迟将影响 LLM 的预处理/后期处理。
- 使用必应搜索工具进行上下文关联不会将工具输出返回给开发人员和最终用户。
使用支持
Azure AI Foundry 支持 | Python SDK | C# SDK | JavaScript SDK | REST API | 基本代理设置 | 标准代理设置 |
---|---|---|---|---|---|---|
✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
设置
注释
- “使用必应搜索进行基础设置”服务与 Azure AI Foundry 代理服务支持的所有 Azure OpenAI 模型配合使用,
gpt-4o-mini, 2024-07-18
除外。
按照快速入门中的步骤创建 Azure AI 代理。
创建“使用必应搜索查找事实依据”资源。 你需要在订阅或资源组中具有
owner
或contributor
角色才能创建它。- 可以在 Azure 门户中创建一个,然后在创建窗体中选择不同的字段。 确保在 Azure AI 代理、AI 项目和其他资源所在的同一资源组中创建这项“使用必应搜索查找事实依据”资源。
Azure 门户中 Bing 资源选择的屏幕截图。
- 还可以通过代码优先体验创建一个。 如果是这样,需要将必应搜索注册为 Azure 资源提供程序。 必须具有为资源提供程序执行
/register/action
操作的权限。 此权限包含在“参与者”和“所有者”角色中。
az provider register --namespace 'Microsoft.Bing'
创建“使用必应搜索查找事实依据”资源后,可以在 Azure 门户中找到它。 导航到已在其中创建了该资源的资源组,搜索你已创建的“使用必应搜索查找事实依据”资源。
可选参数
使用 Bing 搜索工具为代理添加 Grounding 时,您可以传递以下参数。 这些参数会影响“使用必应搜索进行基础设置”工具的输出,并且 AI 模型可能不会完全使用所有输出。 有关 API 版本支持以及如何传递这些参数的信息,请参阅 代码示例 。
名称 | 价值 | 类型 | 必选 |
---|---|---|---|
count |
响应中要返回的搜索结果数。 默认值为 5,最大值为 50。 传递的实际数字可能小于请求数。 多个页面可以在结果中包含一些重叠。 此参数仅影响网页结果。 AI 模型可能不使用必应返回的所有搜索结果。 | UnsignedShort |
否 |
freshness |
按以下不区分大小写的年龄值筛选搜索结果: 日:返回必应在过去 24 小时内发现的网页。 周:返回必应在过去 7 天内发现的网页。 月:返回必应在过去 30 天内发现的网页。 若要获取必应在特定时间范围内发现的文章,请以以下形式指定日期范围: YYYY-MM-DD..YYYY-MM-DD 。 例如,freshness=2019-02-01..2019-05-30 。 若要将结果限制为单个日期,请将此参数设置为特定日期。 例如,freshness=2019-02-04 。 |
字符串 | 否 |
market |
结果来源的市场。 通常, mkt 是用户发出请求的国家/地区。 但是,如果用户不在必应提供结果的国家/地区,则可能是不同的国家/地区。 市场必须采用以下形式: <language>-<country/region> 例如,en-US 。 字符串不区分大小写。 有关可能的市场值的列表,请参阅 “市场代码”。 如果已知,建议始终指定市场。 指定市场有助于必应路由请求,并返回适当且最优的响应。 如果指定市场代码中未列出的市场,必应会根据可能会更改的内部映射使用最适合的市场代码。 |
字符串 | 否 |
set_lang |
可用于用户界面字符串的语言。 可以使用 2 个字母或 4 个字母代码指定语言。 首选使用 4 个字母代码。 有关支持的语言代码的列表,请参阅必应支持的语言。 如果 setlang 包含有效的 2 字母非特定区域性代码 (fr ) 或有效的 4 字母特定区域性代码 (fr-ca ),必应会加载本地化字符串。 例如,对于 fr-ca ,必应会加载 fr 非特定区域性代码字符串。如果 setlang 无效(例如 zh )或者必应不支持该语言(例如 af , af-na ),必应默认为 en (英语)。若要指定 2 个字母代码,请将此参数设置为 ISO 639-1 语言代码。 若要指定 4 个字母的代码,请使用格式 <language>-<country/region> ,其中 <language> 为 ISO 639-1 语言代码(中性区域性),<country/region> 为 ISO 3166 国家/地区代码(特定区域性)。 例如,可以使用 en-US 表示美国英语。虽然是可选的,但应始终指定语言。 通常,将 setLang 设置为与 mkt 指定的相同语言,除非用户希望界面语言显示为其他语言。 |
字符串 | 否 |
如何显示“使用必应搜索查找事实依据”结果
根据“使用必应搜索查找事实依据”的使用条款及使用和显示要求,你需要在自定义界面中显示网站 URL 和必应搜索查询 URL。 可以通过 API 响应中的 annotations
参数查找网站 URL,通过 runstep
详细信息查找必应搜索查询 URL。 若要呈现网页,我们建议你将必应搜索查询 URL 的终结点替换为 www.bing.com
,你的必应搜索查询 URL 将类似于“https://www.bing.com/search?q={search query}”
run_steps = project_client.agents.list_run_steps(run_id=run.id, thread_id=thread.id)
run_steps_data = run_steps['data']
print(f"Last run step detail: {run_steps_data}")
后续步骤
请查看 代码示例 ,以编程方式使用 Bing 的 Grounding 工具。