Azure AI Foundry MAF RAG MCP代理
无服务器Python Azure Function应用程序,公开了由Microsoft代理框架(MAF)和Azure AI搜索支持的MCP工具和HTTP端点,用于检索增强生成(RAG)。
建筑
下图显示了端到端的参考架构。用户与 M365副驾驶,由a配置 副驾驶管理员 通过 副驾驶工作室 浮出水面 代理。代理与 API MCP/HTTP上的层,反过来调用 Azure AI Foundry (AI代理/AOAI/GPT-4o)用于推理和生成。API还直接向 Azure人工智能搜索源于M365 Copilot的源文件存储为 内容,已编入Azure AI搜索。AI Foundry驱动了填充搜索索引的矢量化管道,实现了检索增强生成(RAG)。
flowchart LR
Users(["Users"])
CopilotAdmin(["Copilot Admin"])
M365["M365 Copilot"]
CopilotStudio["Copilot Studio"]
Agent["Agent"]
API["API"]
AIFoundry["AI Foundry\n(AI Agents / AOAI / GPT-4o)"]
AISearch["Azure AI Search"]
Content["Content"]
Users --> M365
CopilotAdmin CopilotStudio
CopilotStudio --> Agent
M365 Agent
Agent |"MCP/HTTP"| API
API AIFoundry
API -->|"Search Query"| AISearch
Content -->|"Index"| AISearch
M365 -->|"Source File"| Content
AIFoundry -->|"Vectorization"| AISearch特性
- MAF驱动的MCP工具:
getTagLine和getContractAnalysis工具通过Azure AI项目/代理框架执行。 - HTTP API:
- GET /api/rag-query?question=... 展示了基于Azure AI搜索的RAG。 - GET /api/contract-analysis?contractName=... 通过HTTP调用合同分析代理。
- 首先管理身份:用途
DefaultAzureCredential,因此它可以在本地与Azure CLI身份验证和Azure中的托管身份一起使用。
需求
- Azure命令行界面 (通过以下方式登录
az login地方发展) - MCP检查器实用程序
- Azure订阅:
- Azure AI Foundry项目(采用GPT风格部署) - 已启用Microsoft代理框架 - Azure AI搜索服务和包含合同文档的索引
Python依赖关系
在中声明的包裹 requirements.txt:
azure-functions>=1.24.0azure-ai-projectsazure-identityagent-frameworkazure-search-documents>=11.6.0
通过以下方式在本地安装:
python -m venv .venv
.venv\Scripts\Activate.ps1
pip install -r requirements.txt配置
填充 local.settings.json (本地使用)或Azure功能应用程序 配置 与:
AZURE_AI_PROJECT_ENDPOINT–AI项目端点URLAZURE_AI_MODEL_DEPLOYMENT_NAME–部署ID(例如。gpt-4o)CONTRACT_ANALYSIS_AGENT_ID–用于合同分析的预先创建的代理IDAZURE_SEARCH_ENDPOINT–搜索服务端点AZURE_SEARCH_INDEX_NAME–索引名称AZURE_SEARCH_SEMANTIC_CONFIG–语义配置(可选)AZURE_SEARCH_CONTENT_FIELD–包含段落文本的字段(默认值content)AZURE_SEARCH_TOP_K–要获取的段落数(默认值3)
确保执行标识具有数据平面角色:
Search Index Data Reader关于搜索服务AI Developer(或同等)人工智能项目
本地开发
启动Azure Functions主机:
func start本地运行时的HTTP调用示例:
curl "http://localhost:7071/api/rag-query?question=Summarize%20our%20contract" \
--header "Content-Type: application/json"
curl "http://localhost:7071/api/contract-analysis?contractName=Contract123"部署
- 使用Functions v4和Python 3.10在Windows/Linux上创建或重用Python函数应用程序。
- 配置上述环境变量。
- 从此仓库部署:
func azure functionapp publish --python如果使用Azure DevOps或GitHub Actions,请运行 pip install -r requirements.txt 然后 func azure functionapp publish (或 az functionapp deployment source config-zip)在您的CI管道中。
MCP检查员
MCP Inspector帮助在本地练习MCP工具。运行通过 npx (按需下载):
npx @modelcontextprotocol/inspector --endpoint http://localhost:7071/api选择 getTagLine 或 getContractAnalysis 工具并提供有效载荷JSON以验证响应。
故障排除
- 禁止/凭据错误 –验证
az login本地或分配Function App的托管身份Search Index Data Reader和AI Developer角色。 - 未返回任何文件 –确认搜索索引字段名称与中的值匹配
AZURE_SEARCH_CONTENT_FIELD并且填充索引。 - 代理创建失败 –确保AI项目包含活动的MAF部署,并且允许您的身份创建代理。
