用途
本技能用于在 Microsoft Foundry 上使用 Microsoft Agent Framework 的 .NET SDK 构建智能体,主要包为 Microsoft.Agents.AI 与 Microsoft.Agents.AI.Foundry。同一个 AIAgent 抽象同时封装两种路径:Foundry Responses API(AIProjectClient.AsAIAgent(...))与持久化的 Foundry Agent 资源(FoundryAgent + AgentAdministrationClient)。
主要能力
- 基础智能体(Responses API 路径):AIProjectClient.AsAIAgent(...) 返回由 Foundry Responses API 支撑的 AIAgent,不在服务上创建持久化智能体资源。
- 函数工具:用 [Description] 装饰静态方法并通过 AIFunctionFactory.Create 包装,智能体在客户端调用。
- 托管工具:在 Foundry 服务上执行,包括 HostedCodeInterpreterTool、HostedFileSearchTool、HostedWebSearchTool、MemorySearchPreviewTool、ResponseTool.CreateMcpTool(...)、OpenAPITool / OpenApiToolDefinition 等。
- 流式响应:RunStreamingAsync 返回 IAsyncEnumerable<AgentResponseUpdate>。
- 多轮会话:AgentSession 通过 response-id 链式关联实现记忆,并支持 SerializeSessionAsync / DeserializeSessionAsync 持久化与恢复。
- 结构化输出:设置 ChatResponseFormat.ForJsonSchema<T>() 并调用 RunAsync<T>(...)。
- 持久化 Foundry Agent:通过 AgentAdministrationClient.CreateAgentVersionAsync 创建带版本记录的智能体,可在门户中查看并跨应用复用。
- MCP 集成:托管 MCP(ResponseTool.CreateMcpTool,需走持久化 CreateAgentVersionAsync 路径)与本地 MCP(McpClient + mcpTools.Cast<AITool>(),可用于无状态 AsAIAgent 重载)。
- Foundry Memory:通过 FoundryMemoryProvider 实现跨会话、跨进程的用户级记忆。
- Agent Skills:.NET SDK 提供 Agent Skills 运行时,可按需渐进式加载模块化能力包。
使用方式
安装(命令保留原文):
dotnet add package Microsoft.Agents.AI --prerelease
dotnet add package Microsoft.Extensions.AI --prerelease
dotnet add package Microsoft.Agents.AI.Foundry --prerelease
dotnet add package Azure.AI.Projects --prerelease
dotnet add package Azure.Identity
dotnet add package ModelContextProtocol --prerelease
前置条件:.NET 10 SDK 或更高版本;具备聊天模型部署的 Microsoft Foundry 项目;Azure CLI 已登录(az login)且拥有 Foundry 项目的 Azure AI Developer 权限;记忆示例需要嵌入部署;Bing 联网搜索需要配置 Bing 连接。
环境变量:
export AZURE_AI_PROJECT_ENDPOINT="https://<account>.services.ai.azure.com/api/projects/<project>"
export AZURE_AI_MODEL_DEPLOYMENT_NAME="gpt-5.4-mini"
export AZURE_AI_EMBEDDING_DEPLOYMENT_NAME="text-embedding-ada-002"
export AZURE_AI_MEMORY_STORE_ID="memory-store-sample"
export BING_CONNECTION_ID="<bing-connection-id>"
认证与生命周期规则:优先使用 DefaultAzureCredential / AzureCliCredential;避免连接字符串与账户密钥;生产环境可用 ManagedIdentityCredential 固定凭据链。对可释放对象(如 McpClient 用 await using)进行释放;AIProjectClient 与 AIAgent 设计为长期存活,不要按请求释放。
适用场景
- 需要以 C#/.NET 在 Microsoft Foundry 上构建无状态或持久化智能体的开发场景。
- 需要函数工具、托管工具(代码解释器、文件搜索、联网搜索)、MCP 工具或 OpenAPI 工具的智能体。
- 需要多轮会话、会话持久化、结构化输出与跨会话记忆的对话应用。
- LAB 3 场景:C# 智能体通过 ASP.NET Core 暴露为 HTTP 接口,供 Python 评测/红队框架打分(AGUI_SERVER_URL=http://127.0.0.1:5100)。
限制
- FoundryEvals 与 Azure AI Evaluation RedTeam 目前是 Python SDK 接口;C# LAB 3 不重建这些评估器,而是将 C# 智能体通过 HTTP 暴露给 Python 评测框架。
- 托管 MCP 返回的值为 ProjectsAgentTool,只能通过持久化 CreateAgentVersionAsync 路径使用,不能传入无状态 AsAIAgent 重载;无状态重载需使用本地 MCP。
- Foundry Memory 的 RBAC 限制:访问记忆后端嵌入部署返回 401,通常表示调用方缺少嵌入数据操作权限,需在 AI 账户与项目范围授予相应角色。
- 部分包与示例使用 --prerelease,未提供稳定版本信息。
- 资料未提供收费、价格与具体平台可用性信息。