01 · 演示目标与范围
本环境面向 OPPO 印度售后客服团队,演示从用户提问、Foundry IQ 查询规划、知识检索、证据核验到最终答复的完整流程。所有知识内容来自微软官方公开资料,不含 OPPO 产品手册、保修条款、用户账户或订单。因此对 OPPO 产品保修、维修报价、预约等问题,应建议人工处理,不能凭空生成政策或声称已经创建工单。
前端支持 English、中文和 हिन्दी 答复。页面展示用户问题、可观察的检索活动、来源片段、引用链接、证据摘要和最终答案。服务活动不是模型内部思维链;证据摘要是对支持结论的资料说明。系统没有冒充内部思维过程。
02 · 架构与选型
Microsoft Learn 文档离线抓取并分段,形成 Search 索引;Foundry IQ 知识源引用该索引,知识库调用 Foundry 模型规划子查询。Web 后端通过知识库 retrieve API 获得资料与活动,再调用 Foundry 模型生成带引用的答案。这是官方支持的自定义应用接入方式,不依赖 Foundry Agent Service 托管会话。
打开完整交互架构图 ↗。附带 architecture.html 可离线打开,支持主题切换、缩放与导出。
| 组件 | 实际部署 | 职责 |
|---|---|---|
| VM | 现有 szct-korea-01 · Korea Central | Nginx、Web、FastAPI;使用现有系统托管身份 |
| Search | srch-lip777-f697e914 · East US · Basic | 1 分区 / 1 副本;新建独立资源;启用系统托管身份 |
| Foundry | peng-azfoundry-eastus2 · East US 2 | 复用现有账户;新增 lip777-gpt-5-mini 部署 |
| 模型 | gpt-5-mini / 2025-08-07 / GlobalStandard | 规划 + 最终答案;30 RPM / 30K TPM 配额;按实际 token 计费 |
| 索引 | microsoft-faq / faq-semantic | 文本关键词检索 + semantic reranking;未部署向量 embedding 模型 |
| 知识源 / 知识库 | microsoft-faq-source / oppo-support-demo | 真实 Foundry IQ 对象;low 规划 + extractiveData |
| API 版本 | 2026-08-01-preview | 查询规划属于预览能力;2026-04-01 GA 支持范围不同 |
选择 Basic 是因为 Search 到模型的托管身份访问要求 Basic 或以上。1 副本适合演示,不满足生产高可用要求。本次 East US 2 Search 创建失败(容量不足),改在 East US 创建;VM、Search、模型跨区域运行,会增加延迟。GlobalStandard 模型也不保证印度数据驻留。这里只处理公开资料与受控示例,正式接入印度客户数据前需重新设计区域和网络。
03 · 托管身份与访问链路
| 调用方 | 目标 | 角色 / 范围 |
|---|---|---|
| VM 系统托管身份 | Search | Search Index Data Reader,仅此 Search 资源 |
| VM 系统托管身份 | Foundry | Cognitive Services OpenAI User,仅复用的 Foundry 账户 |
| Search 系统托管身份 | Foundry | Cognitive Services User,仅复用的 Foundry 账户 |
| 部署操作员 | Search | Search Service Contributor + Search Index Data Contributor,仅此 Search |
运行时代码显式使用 ManagedIdentityCredential,没有 Azure CLI 用户身份回退,也没有 API Key。Search 已设置 disableLocalAuth=true。VM 通过 IMDS 获取短期令牌;Search 通过自己的托管身份调用模型。令牌 audience 分别为 Search 与 Cognitive Services。
credential = ManagedIdentityCredential()
search_token = credential.get_token("https://search.azure.com/.default")
model_token = credential.get_token("https://cognitiveservices.azure.com/.default")本次查询发现 VM 原有订阅级 Foundry User 和 Storage Blob Data Contributor 授权;本任务未扩大或修改这些既有授权。应用仅调用固定的演示资源。生产上线应审核 VM 身份的整体权限,不能仅依赖应用中写死的端点。
该演示公网访客没有 Entra 登录。服务身份鉴权不等于终端用户 ACL 验证;知识源为公开资料。本次没有演示 SharePoint、OneLake 的用户权限透传。
04 · Azure 部署过程与实际命令
用户在任务正文中明确授权按需创建最小规格资源,无需另行确认。部署按独立资源命名,保留了失败和调整记录。以下是实际执行的完整 Azure CLI 命令及返回状态;不包含令牌、密钥或连接字符串。
2026-11-08T08:34:08 · az group create -n rg-lip777-foundry-iq -l eastus2 · exit 0
az group create -n rg-lip777-foundry-iq -l eastus2 --tags issue=LIP-777 purpose=oppo-demo -o json操作成功。资源配置详情见本节及附带审计记录。
2026-11-08T08:34:11 · az search service create -g rg-lip777-foundry-iq -n srch-lip777-f697e914 · exit 1
az search service create -g rg-lip777-foundry-iq -n srch-lip777-f697e914 --sku basic -l eastus2 --partition-count 1 --replica-count 1 --identity-type SystemAssigned --disable-local-auth true --semantic-search free --tags issue=LIP-777 purpose=oppo-demo -o jsonERROR: (InsufficientResourcesAvailable) The region 'eastus2' is currently out of the resources required to provision new services. Try creating the service in another region. RequestId: f6cb8bd5-b34a-4b25-b038-c4a7aa2b5b0d Code: InsufficientResourcesAvailable Message: The region 'eastus2' is currently out of the resources required to provision new services. Try creating the service in another region. RequestId: f6cb8bd5-b34a-4b25-b038-c4a7aa2b5b0d
2026-11-08T08:34:31 · az role assignment create · exit 0
az role assignment create --assignee-object-id 9c537c3c-9595-496c-8a2f-a16f0cb9ce79 --assignee-principal-type ServicePrincipal --role 'Cognitive Services OpenAI User' --scope /subscriptions/f697e914-f091-4f00-a091-a77ae4c0a6c1/resourceGroups/peng-foundry/providers/Microsoft.CognitiveServices/accounts/peng-azfoundry-eastus2 -o json操作成功。资源配置详情见本节及附带审计记录。
2026-11-08T08:35:14 · az cognitiveservices account deployment create -g peng-foundry -n peng-azfoundry-eastus2 · exit 0
az cognitiveservices account deployment create -g peng-foundry -n peng-azfoundry-eastus2 --deployment-name lip777-gpt-5-mini --model-name gpt-5-mini --model-version 2025-08-07 --model-format OpenAI --sku-name GlobalStandard --sku-capacity 1 -o json操作成功。资源配置详情见本节及附带审计记录。
2026-11-08T08:35:46 · az cognitiveservices account deployment create -g peng-foundry -n peng-azfoundry-eastus2 · exit 0
az cognitiveservices account deployment create -g peng-foundry -n peng-azfoundry-eastus2 --deployment-name lip777-gpt-5-mini --model-name gpt-5-mini --model-version 2025-08-07 --model-format OpenAI --sku-name GlobalStandard --sku-capacity 30 -o json操作成功。资源配置详情见本节及附带审计记录。
2026-11-08T08:37:07 · az role assignment create · exit 0
az role assignment create --assignee-object-id fc4cdfba-6de8-4707-bd66-c505d13f4f07 --assignee-principal-type ServicePrincipal --role 'Cognitive Services User' --scope /subscriptions/f697e914-f091-4f00-a091-a77ae4c0a6c1/resourceGroups/peng-foundry/providers/Microsoft.CognitiveServices/accounts/peng-azfoundry-eastus2 -o json操作成功。资源配置详情见本节及附带审计记录。
2026-11-08T08:37:10 · az role assignment create · exit 0
az role assignment create --assignee-object-id 9c537c3c-9595-496c-8a2f-a16f0cb9ce79 --assignee-principal-type ServicePrincipal --role 'Search Index Data Reader' --scope /subscriptions/f697e914-f091-4f00-a091-a77ae4c0a6c1/resourceGroups/rg-lip777-foundry-iq/providers/Microsoft.Search/searchServices/srch-lip777-f697e914 -o json操作成功。资源配置详情见本节及附带审计记录。
2026-11-08T08:37:38 · az role assignment create · exit 0
az role assignment create --assignee-object-id 707b10f8-b414-4c3a-b90b-c2665198b716 --assignee-principal-type User --role 'Search Service Contributor' --scope /subscriptions/f697e914-f091-4f00-a091-a77ae4c0a6c1/resourceGroups/rg-lip777-foundry-iq/providers/Microsoft.Search/searchServices/srch-lip777-f697e914 -o json操作成功。资源配置详情见本节及附带审计记录。
2026-11-08T08:37:41 · az role assignment create · exit 0
az role assignment create --assignee-object-id 707b10f8-b414-4c3a-b90b-c2665198b716 --assignee-principal-type User --role 'Search Index Data Contributor' --scope /subscriptions/f697e914-f091-4f00-a091-a77ae4c0a6c1/resourceGroups/rg-lip777-foundry-iq/providers/Microsoft.Search/searchServices/srch-lip777-f697e914 -o json操作成功。资源配置详情见本节及附带审计记录。
2026-11-08T08:40:57 · az rest · exit 0
az rest --method patch --url 'https://management.azure.com/subscriptions/f697e914-f091-4f00-a091-a77ae4c0a6c1/resourceGroups/rg-lip777-foundry-iq/providers/Microsoft.Search/searchServices/srch-lip777-f697e914?api-version=2026-03-01-preview' --body '{"properties":{"knowledgeRetrieval":"standard"}}' -o json操作成功。资源配置详情见本节及附带审计记录。
2026-11-08T08:44:07 · az search service create -g rg-lip777-foundry-iq -n srch-lip777-f697e914 · exit 0
az search service create -g rg-lip777-foundry-iq -n srch-lip777-f697e914 --sku basic -l eastus --partition-count 1 --replica-count 1 --identity-type SystemAssigned --disable-local-auth true --semantic-search free --tags issue=LIP-777 purpose=oppo-demo -o json操作成功。资源配置详情见本节及附带审计记录。
2026-11-08T08:47:17 · az search service show -g rg-lip777-foundry-iq -n srch-lip777-f697e914 -o json · exit 0
az search service show -g rg-lip777-foundry-iq -n srch-lip777-f697e914 -o json操作成功。资源配置详情见本节及附带审计记录。
2026-11-08T08:50:26 · az rest · exit 0
az rest --method get --url 'https://management.azure.com/subscriptions/f697e914-f091-4f00-a091-a77ae4c0a6c1/resourceGroups/rg-lip777-foundry-iq/providers/Microsoft.Search/searchServices/srch-lip777-f697e914?api-version=2026-03-01-preview' --query '{status:properties.status,knowledgeRetrieval:properties.knowledgeRetrieval,semanticSearch:properties.semanticSearch,disableLocalAuth:properties.disableLocalAuth,replicas:properties.replicaCount,partitions:properties.partitionCount,sku:sku.name}' -o json操作成功。资源配置详情见本节及附带审计记录。
附带的 evidence/azure-operations.jsonl 保存完整返回体;资源清单、模型配额和 role assignment ID 可用于审计。Search 创建在预配阶段仍未就绪时,数据面请求可能失败,属于实测过程而不是最终运行状态。
05 · 知识材料、抓取、分段与索引
使用官方 FAQ 的当前规范 URL;旧 Azure AI Foundry/OpenAI FAQ 链接现已重定向到 Foundry classic。部分试探路径返回 404,未入库。抓取后按标题分段,去除导航和页面提示;单片段约 3,200 字符,保留标题、原 URL 和锚点。ID 使用 URL + 标题 + 片段序号的 SHA-256 截断,便于重复运行合并更新。
| 官方材料 | 片段数 | 抓取时间 UTC |
|---|---|---|
| Foundry Agent Service FAQ | 35 | 2026-11-08T08:37:02 |
| Microsoft Foundry classic FAQ | 14 | 2026-11-08T08:37:02 |
| Azure OpenAI FAQ | 29 | 2026-11-08T08:37:02 |
| What is Foundry IQ? | 8 | 2026-11-08T08:37:02 |
| Foundry Models data privacy | 15 | 2026-11-08T08:37:02 |
Foundry Agent Service FAQ
SHA-256: 671b44bc68897470d51bc7615ef91073c33e50e817f63c4660fa5bdb1c375ac0
Microsoft Foundry classic FAQ
SHA-256: a8e85b2039fb41aca238854bde23e7cb728627ebbb647fad360207f482f42276
Azure OpenAI FAQ
SHA-256: f8d5dd7f274bf12cb12a8aaf67308195cd554ebda3f783e0c828e90a2a4ebcbc
What is Foundry IQ?
SHA-256: dc1d91ddbfcdce8c369b51ab34446402b10555a9d1bf07f8766b902b9c5da83a
Foundry Models data privacy
SHA-256: 217c15c2198ca800be60c01151d827105fd158b4a4f1f995b6f754d56540444d
数据结构为 id / title / content / url / product。title 和 content 可搜索;URL 可返回;semantic configuration 使用 title 作为标题字段、content 作为正文。通过 mergeOrUpload 推送 101 个片段,并核查每条上传结果。此演示使用已有索引型知识源,分段由本地抓取脚本执行,不声称使用 Blob 自动分段或向量化。
python ingest.py
python cloud_setup.py刷新前先审查官方来源变更,再重新抓取并执行入库。mergeOrUpload 不自动清理已下线章节,删除过期片段需单独实施并校验知识库回答。通过 sources.json 保存抓取时间与页面哈希;可比较哈希决定是否需要重建。
06 · Foundry IQ 对象与检索请求
索引准备完成后,建立 knowledge source 和 knowledge base。知识库明确限制为微软资料,提示将多语言问题转为英文检索词,并对多主题问题寻找各项证据。保存的对象定义和数据面返回码来自真实请求。
PUT /indexes/microsoft-faq · HTTP 201
{
"name": "microsoft-faq",
"fields": [
{
"name": "id",
"type": "Edm.String",
"key": true,
"filterable": true
},
{
"name": "title",
"type": "Edm.String",
"searchable": true,
"retrievable": true
},
{
"name": "content",
"type": "Edm.String",
"searchable": true,
"retrievable": true
},
{
"name": "url",
"type": "Edm.String",
"retrievable": true
},
{
"name": "product",
"type": "Edm.String",
"filterable": true,
"retrievable": true
}
],
"semantic": {
"defaultConfiguration": "faq-semantic",
"configurations": [
{
"name": "faq-semantic",
"prioritizedFields": {
"titleField": {
"fieldName": "title"
},
"prioritizedContentFields": [
{
"fieldName": "content"
}
]
}
}
]
}
}PUT /knowledgesources/microsoft-faq-source · HTTP 201
{
"name": "microsoft-faq-source",
"kind": "searchIndex",
"description": "Official Microsoft FAQs and Foundry IQ documentation. Public demo corpus only.",
"searchIndexParameters": {
"searchIndexName": "microsoft-faq",
"semanticConfigurationName": "faq-semantic",
"sourceDataFields": [
{
"name": "id"
},
{
"name": "title"
},
{
"name": "content"
},
{
"name": "url"
}
]
}
}PUT /knowledgebases/oppo-support-demo · HTTP 201
{
"name": "oppo-support-demo",
"description": "OPPO India customer service demonstration using Microsoft official FAQs; contains no OPPO product policies.",
"knowledgeSources": [
{
"name": "microsoft-faq-source"
}
],
"models": [
{
"kind": "azureOpenAI",
"azureOpenAIParameters": {
"resourceUri": "https://peng-azfoundry-eastus2.openai.azure.com",
"deploymentId": "lip777-gpt-5-mini",
"modelName": "gpt-5-mini"
}
}
],
"retrievalInstructions": "Translate questions to English search queries as needed. Search only the Microsoft official documentation. For questions involving multiple topics, retrieve evidence for each topic. The corpus contains no OPPO product warranty or repair policies.",
"outputMode": "extractiveData",
"retrievalReasoningEffort": {
"kind": "low"
}
}POST /knowledgebases/oppo-support-demo/retrieve?api-version=2026-08-01-preview
{
"messages": [{"role":"user","content":[{"type":"text","text":"What is Foundry IQ?"}]}],
"retrievalReasoningEffort": {"kind":"low"},
"outputMode":"extractiveData",
"includeActivity":true,
"knowledgeSourceParams":[{
"knowledgeSourceName":"microsoft-faq-source",
"kind":"searchIndex",
"includeReferences":true,
"includeReferenceSourceData":true,
"rerankerThreshold":1.8
}],
"maxRuntimeInSeconds":60,
"maxOutputSize":5000
}activity 来自 Azure 返回,用于展示查询规划、实际子查询、检索耗时和 token 使用。references 包含 ref ID、源数据和相关性得分。后端只接受 learn.microsoft.com 来源,再将最多 10 个证据片段交给最终答复模型。
07 · 从证据到客服答复
- 接收问题,验证 3–600 字符和回答语言,执行公网请求限额。
- VM 托管身份调用 Foundry IQ;知识库按 low effort 使用 gpt-5-mini 规划检索。
- Azure AI Search 检索微软文档并返回引用、资料片段和活动。
- 模型只依据证据输出 JSON:answer、grounded、handoff、citation_ids、evidence_summary。
- 应用校验引用 ID 存在、grounded / handoff 标志一致;证据不足或引用不合规时回退到人工处理建议。
- 前端展示问题、答复、引用、检索活动和证据摘要;服务端只记录状态、耗时及 token 元数据。
提示明确将用户问题和检索文档当作不可信数据,不能覆盖系统指令;不能编造维修预约、退款、工单或政策。程序的引用存在性检查不能证明每句话都被证据支持,因此仍需人工评估准确率和提示注入抵抗能力。
当前每个问题独立处理,不维护多轮对话,不连接 CRM、订单、真实工单和维修服务;“人工转接”是明确提示人工接手,不是自动派发真实客服工单。
08 · 培训演练:建议 30 分钟
| 时间 | 练习 | 观察要点 |
|---|---|---|
| 0–5 分钟 | 架构图与身份链路 | 区分 Foundry IQ 知识层、Search 索引、Foundry 模型和 Web 应用 |
| 5–10 分钟 | Does Microsoft use our customer data to train AI models? | 答复引用 FAQ;点开源文核验,不夸大数据不保存 |
| 10–15 分钟 | What is the difference between basic and standard setup in Foundry Agent Service, and where is agent data stored? | 多个主题的子查询、不同 source excerpts |
| 15–20 分钟 | 中文 / हिन्दी 数据隐私问题 | 语言切换、检索查询转换、来源仍是官方英文文档 |
| 20–25 分钟 | How does Foundry IQ retrieve enterprise knowledge and provide citations? | 查询规划、reranking、引用与证据摘要 |
| 25–30 分钟 | OPPO Find X8 India warranty / repair booking | 证据不足提示;没有实际保修政策或真实维修预约 |
演示前打开健康端点并执行一个简单问题。点击场景只填入问题,按 Find a grounded answer 发起真实调用。一次请求可能需要几十秒;Azure 容量忙时页面显示明确错误,不展示伪造离线答案。
09 · 实测验证记录
以下结果来自部署完成后的真实 HTTPS 或本机受控 API 调用。完整测试请求、响应和 service activity 保存在附带的 evidence/verification.json。示例数据为公开问题,没有实际客户资料。
实测发现 Azure 内容过滤会拦截提示注入请求,现已将这种情况明确返回 HTTP 422,并在网页显示拒绝提示;不生成答复或执行动作。首次浏览器连续提问触发了 429,证明每 IP 限流有效;完成修正后再次验证浏览器正常提问成功。初期预配连接超时及上述过程记录保留在审计附件。
| 测试 | 结果 | 耗时 / 引用 |
|---|---|---|
| 英文 · 数据隐私 | PASS | 10255 ms / 4 citations |
| 英文 · 多主题检索 | PASS | HTTP 200 / 6039 ms / 3 citations |
| 中文 · 数据生命周期 | PASS | HTTP 200 / 7656 ms / 5 citations |
| 印地语 · 数据隐私 | PASS | HTTP 200 / 8052 ms / 4 citations |
| OPPO 保修 · 人工接手 | PASS | HTTP 200 / 5957 ms / 0 citations |
| 提示注入 · 不虚构政策 | PASS | HTTP 422 · Azure 内容过滤拦截,未生成答复或执行动作 |
| HTTPS / | PASS | HTTP 200 |
| HTTPS /training.html | PASS | HTTP 200 |
| HTTPS /architecture.html | PASS | HTTP 200 |
| HTTPS /api/health | PASS | HTTP 200 |
| HTTPS /static/sources.json | PASS | HTTP 200 |
| HTTP → HTTPS | PASS | HTTP 301 |
| 输入长度校验 | PASS | HTTP 422 |
| 跨站调用拒绝 | PASS | HTTP 403 |
| 审计文件不公开 | PASS | HTTP 404 |
| 浏览器 · Desktop home | PASS | 1440 / no page errors |
| 浏览器 · Browser live question | PASS | / 200 |
| 浏览器 · Responsive home | PASS | 390 / no page errors |
| 浏览器 · Responsive home | PASS | 768 / no page errors |
| 浏览器 · Responsive home | PASS | 1920 / no page errors |
| 浏览器 · Training manual | PASS | / PASS |
英文 · 数据隐私 · 示例答复
Microsoft does not use customers’ data to train its foundation models without permission. For Azure Foundry / Models sold by Azure (including Azure OpenAI), prompts, completions, embeddings, and training data: are not available to other customers or to OpenAI/third-party providers; are not used to improve those providers’ models or services; and are not used to train generative AI foundation models without your explicit permission or instruction. Azure OpenAI likewise doesn’t use customer data to retrain models. (Some service features do store customer data for the service to operate—stored data is kept in the customer’s tenant geography, encrypted at rest, and can be deleted by the customer; stored data can be used for customer-requested fine-tuning or for abuse monitoring as described.)
[0] Foundry Agent Service FAQ — Does Microsoft use my data for training models?
[1] Foundry Models data privacy — Foundry Models data privacy
[2] Microsoft Foundry classic FAQ — Do you use my company data to train any of the models?
[3] Foundry Models data privacy — Data storage for Models sold by Azure features
英文 · 多主题检索 · 示例答复
Basic setup stores agent state in Microsoft-managed resources; standard setup stores agent data (threads, files, and vector stores) in your Azure resources that you declare through capability settings. In basic setup data is kept in a secure, Microsoft-managed storage account that's logically separated. In standard setup you store data in your own Azure resources: Azure Storage for files and attachments, Azure Cosmos DB for threads and conversation history, and Azure AI Search for vector stores. Foundry Agent Service endpoints are regional and data is stored in the same region as the endpoint. [0][2][4]
[0] Foundry Agent Service FAQ — What's the difference between basic setup and standard setup?
[2] Foundry Agent Service FAQ — Where is this data stored?
[4] Foundry Agent Service FAQ — Where is data stored geographically?
中文 · 数据生命周期 · 示例答复
根据微软文档:
- Foundry Agent Service 会保存两类数据:有状态实体(例如对话和响应)以及上传的文件和向量存储(用于设置或生成响应)[4]。
- 此类数据会一直保留,除非你显式删除。你可以通过 API 或 SDK 删除线程、文件或向量存储来删除代理数据[1]。
- 微软/Foundry 不会将你的数据用于训练通用基础模型。客户的提示、生成内容、嵌入和用于微调的训练数据:不会被其他客户访问,也不会提供给模型供应商用于改进其模型;在未经你明确允许或指示的情况下,不会用于训练任何生成式基础模型。用于微调的模型和数据仅供该客户使用,且可被客户删除[3][6][7]。
请参阅相关文档以了解加密、地理位置和可选的客户管理密钥等详细存储条件[6]。
[1] Foundry Agent Service FAQ — How long is this data stored?
[3] Foundry Models data privacy — Foundry Models data privacy
[6] Foundry Models data privacy — Data storage for Models sold by Azure features
[7] Foundry Models data privacy — What data does Foundry process to provide Models sold by Azure?
[4] Foundry Agent Service FAQ — Do you store any data used in the Foundry Agent Service API?
印地语 · 数据隐私 · 示例答复
Microsoft के दस्तावेज़ों के अनुसार, Models sold by Azure (जैसे Foundry/Azure OpenAI सेवाएँ) ग्राहक द्वारा दी गई इनपुट (प्रॉम्प्ट), आउटपुट (कम्प्लीशन्स), एम्बेडिंग्स और ट्रेनिंग डेटा को अन्य ग्राहकों या मॉडल प्रदाताओं (जैसे OpenAI) के साथ साझा नहीं करता, और इन्हें बिना आपके स्पष्ट अनुमति या निर्देश के जेनरेटिव फाउंडेशन मॉडलों को प्रशिक्षित करने के लिए उपयोग नहीं किया जाता। इसके अलावा Microsoft कहता है कि वह ग्राहक डेटा का उपयोग मॉनिटरिंग और दुरुपयोग-निवारण के लिए कर सकता है; दुरुपयोग मॉनिटरिंग के दौरान नमूनों की स्वचालित और—आवश्यक होने पर—मानव समीक्षा की जा सकती है (यह समीक्षा सीमित परिस्थितियों में और नियंत्रित पहुँच के साथ होती है)। (यदि ग्राहक ने फ़ाइन-ट्यूनिंग के लिए डेटा अपलोड किया तो वही फाइन-ट्यून किए गए मॉडल केवल उस ग्राहक के लिए उपलब्ध रहते हैं और बिना अनुमति फाउंडेशन मॉडल के प्रशिक्षण में उपयोग नहीं होते.)
[0] Foundry Models data privacy — Foundry Models data privacy
[4] Foundry Agent Service FAQ — Does Microsoft use my data for training models?
[9] Foundry Models data privacy — Data storage for Models sold by Azure features
OPPO 保修 · 人工接手 · 示例答复
The Microsoft knowledge base does not provide sufficient evidence to answer this question. Please refer it to a human support agent; no support ticket has been created.
浏览器 · Browser live question · 示例答复
Foundry IQ uses an agentic retrieval pipeline to get permission-aware enterprise knowledge and return answers with citations. You create a knowledge base that references knowledge sources (indexed or remote) such as Azure Blob, SharePoint, OneLake, or the web. When an agent queries the knowledge base, Foundry IQ: (1) uses agentic retrieval to decompose complex queries into subqueries, run parallel searches (keyword, vector, or hybrid) across the configured sources, and semantically rerank and aggregate results; (2) can run extractive retrieval so agents can reason over raw content and trace answers to source documents; and (3) enforces end-to-end permissions by synchronizing and honoring source ACLs and running queries under the caller’s Microsoft Entra identity so only authorized content is returned. You can connect a Foundry IQ knowledge base to a Copilot Studio (GitHub Copilot harness) agent to get grounded answers with source citations.
[0] What is Foundry IQ? — What is Foundry IQ?
[2] What is Foundry IQ? — Capabilities
[3] What is Foundry IQ? — Workflow
架构图通过 archify showcase 全部 9 项制品检查,组合检查 0 错误、0 警告。制品 SHA-256:fe24707b1609dd13a8fe586c318ff0ecad6d8b00f858a77e5df9576dd24db59e。自动浏览器检查通过 1440×900、1600×1000、1920×1080、2048×1320 四个尺寸,无页面溢出,并完成两种主题截图;已人工视觉查看浅色与深色截图。网站检查包含 390px 手机、768px 平板、1440px 和 1920px 桌面,以及实际点击提问和来源展示。
本地部署 Noto Sans Devanagari 字体,以支持印地语显示;附带 OFL 字体许可。浏览器实测包含问答内容显示、真实子查询、引用链接与脚本错误检查,截图保存在 evidence/。
10 · HTTPS、进程与运维
仅新增 webiq 域名独立 Nginx vhost,后端绑定 127.0.0.1:18081。HTTP 转 HTTPS;80 端口保留 ACME webroot。Let’s Encrypt 证书由 Certbot 签发,有效期至 2027-02-06;证书私钥只保存在 VM 的受限目录,不进入项目或培训附件。
sudo certbot certonly --webroot -w /var/www/webiq-acme \
-d webiq.pengshenzhen.online --non-interactive --agree-tos \
--register-unsafely-without-email
sudo nginx -t
sudo systemctl reload nginx
sudo systemctl enable --now foundry-iq-demoCertbot 已有续期定时器;本演示还安装 Nginx deploy hook,以便续期成功后 nginx -t 并 reload,让服务加载新证书。未配置证书邮件通知,运维应监控到期日和续期日志。
| 操作 | 命令 / 位置 |
|---|---|
| 健康检查 | curl https://webiq.pengshenzhen.online/api/health |
| 服务状态 | sudo systemctl status foundry-iq-demo |
| 服务日志 | sudo journalctl -u foundry-iq-demo -n 100 --no-pager |
| Nginx 日志 | /var/log/nginx/webiq-error.log / webiq-access.log |
| 重启 / 停止 | sudo systemctl restart foundry-iq-demo / sudo systemctl stop foundry-iq-demo |
| 代码 / 服务定义 | /opt/foundry-iq-demo / /etc/systemd/system/foundry-iq-demo.service |
| 调用计数持久化 | /var/lib/foundry-iq-demo/usage.sqlite,按 UTC 日重置 |
| 证书定时器 | sudo systemctl list-timers certbot.timer |
| 手动检查证书 | sudo certbot certificates |
systemd 已设置开机启动、异常重启、NoNewPrivileges、ProtectSystem=strict、ProtectHome=true。服务生命周期由操作系统管理,结束本次任务后继续运行;VM 停机或 Azure 服务故障仍会使网站不可用。
11 · 成本、限流、清理与故障排查
新建 Search Basic 1 Search Unit 按服务存续时间持续收费,即使没有提问也产生费用;模型 GlobalStandard 为按调用 token 付费,30K TPM 是速率配额,不是预付吞吐实例。已复用 VM 和 Foundry 账户,没有新增 VM、存储账户、embedding 模型或托管 Agent 运行时。
2026-11-08 查询 Azure Retail Prices API:East US、Azure AI Search、Basic Unit、Consumption、USD,公示价为 0.101 美元 / 小时,约 2.424 美元 / 天、73.73 美元 / 730 小时月。此估算仅 Search 基础实例,不包含模型、agentic retrieval、超额 semantic ranker、跨区流量或税费;订阅折扣和实际账单可能不同。原始价格记录见 evidence/prices.json。
Search semanticSearch=free 使用免费 semantic ranker 配额;knowledgeRetrieval=standard 独立启用 agentic retrieval 计费。检索、reranking、模型 token 的价格和免费额度依区域及最新规则而变,应通过 Azure 实际账单核对,不能将 free semanticSearch 理解为 Foundry IQ 全部免费。
公网演示限制每 IP 每分钟 5 次、最多 2 个并发问题、全站每日 200 次(UTC)。失败尝试也计入每日限额。限流控制调用量,不能取代 Azure Budget 或保证固定美元上限。每日计数持久化,重启不重置。日志不保存用户问题和模型答复,但 Nginx 访问日志包含 IP、路径与时间。
| 现象 | 处理 |
|---|---|
| HTTP 429 | 等待 1 分钟;核查模型 TPM / RPM、IP 限流和 UTC 当日总量 |
| HTTP 502 | 查看服务 request_id 和上游错误码;检查 RBAC、生效延迟、模型部署和 Search 配额 |
| 创建 Search 容量不足 | 选择支持 agentic retrieval 的其他区域;本次已从 East US 2 改 East US |
| Search 403 | 检查 Search Index Data Reader、Search→Foundry Cognitive Services User 与令牌 audience |
| 答案证据不足 | 核查语料来源、chunk、查询 activity;不要去掉证据不足保护强制答复 |
| TLS 续期失败 | 检查域名 A 记录、80 端口 ACME 路径、certbot.timer 与日志 |
| 服务不能启动 | 检查 systemd 工作目录、Python 环境和文件可读性;不要让服务依赖任务工作目录 |
停用与清理需要运维操作。停止 Web 服务不会停止 Search 计费。下列删除命令只作为培训示例,没有在部署中执行。删除独立 RG 将删除知识库和索引;复用的 Foundry 账户与 VM 必须保留。
sudo systemctl disable --now foundry-iq-demo
# 经负责人确认后,删除独立 Search 资源组:
az group delete -n rg-lip777-foundry-iq --yes
# 仅删除本任务新建的模型部署,保留共享账户:
az cognitiveservices account deployment delete -g peng-foundry \
-n peng-azfoundry-eastus2 --deployment-name lip777-gpt-5-mini
# 根据附带 role assignment ID,仅移除本任务添加到共享 Foundry 上的角色。
# 检查新增 Nginx 站点、systemd unit、证书和 /opt 目录再逐项清理。正式上线需要导入经批准的 OPPO 印度政策资料、版本管理与有效期,设计用户鉴权与 ACL、合适的数据驻留区域、Private Link、多副本和备份、人工接管系统、质量评测与审计。上述是迁移设计项,本次演示没有声称完成生产合规部署。
12 · 官方参考与交付清单
- What is Foundry IQ?
- Create a knowledge base
- Create a search index knowledge source
- Query a knowledge base
- API migration and billing consent
- Azure AI Search pricing
- Azure OpenAI pricing
交付包括在线演示、本 HTML 手册、离线交互架构图、源代码与配置、公开知识源 manifest、Azure / Search 操作审计和实测记录。私有 evidence 目录不通过站点对外发布;附件中含资源名称和授权审计信息,应作为内部培训资料管理。无 API Key、令牌或证书私钥。
架构图使用 archify 技能生成,资料核对使用 microsoft-webiq-search 技能;Web IQ 查询返回 HTTP 401 / AuthInvalidApiKey,随后直接读取微软官方公开页面完成核对,无需该搜索服务参与网站运行。