你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
使用 Visual Studio Code 的 Foundry 工具包 创建、测试和部署 托管的 Foundry Agent 工作流。 该工具包支持通过模板创建代理、使用代理检查器进行本地测试和调试,以支持可视化和跟踪支持,以及从 VS Code 直接部署到 Foundry 代理服务。 托管工作流允许多个代理按顺序协作,每个代理都有自己的模型、工具和说明。
在开始之前,使用扩展 在 Foundry 代理服务中生成代理 。 然后,可以将托管工作流添加到该代理。
本文介绍如何创建工作流项目、在本地运行、可视化执行并将其部署到 Foundry 工作区。
先决条件
- 具有已部署模型或Azure OpenAI 资源的 Foundry 项目。
- 已安装 Foundry Toolkit for Visual Studio Code。
- 已分配 Azure AI 用户和 AcrPull 角色的项目托管标识。 此外,将
acrPull角色分配给计划在其中部署托管代理的 Foundry 项目的托管标识。 - 托管代理支持的区域。
- Python 3.12 或更高版本。
- .NET 9 SDK 或更高版本。
创建托管代理工作流
可以使用 Foundry Toolkit for Visual Studio Code 创建托管代理工作流。 托管代理工作流是由一系列代理组成的工作流程,它们协同工作以完成任务。 工作流中的每个代理都可以有自己的模型、工具和说明。
打开命令面板(Ctrl+Shift+P)。
运行以下命令:
>Microsoft Foundry: Create a New Hosted Agent。选择Microsoft代理框架或 LangGraph 的框架。
选择一个模板,可以是单智能体酒店助手,或者是编写-审阅智能体工作流(多智能体)。
选择编程语言。
选择一个模型,要么是已在项目中部署的模型,要么浏览模型目录。
选择要在其中保存新工作流的文件夹。
你的托管代理项目文件会根据你所选的框架、模板和语言,在所选文件夹中生成,帮助你快速开始。 可以根据需要删除或修改该代码。
安装依赖项
安装托管代理项目所需的依赖项。 依赖项因创建项目时所选的编程语言而异。
创建虚拟环境。
python -m venv .venv激活虚拟环境。
# PowerShell ./.venv/Scripts/Activate.ps1 # Windows cmd .venv\Scripts\activate.bat # Unix/MacOS source .venv/bin/activate安装以下包:
pip install azure-ai-agentserver-agentframework
转到项目目录并运行以下命令以获取所需的 NuGet 包:
dotnet restore
在本地运行托管工作流
示例工作流项目使用必要的环境变量创建一个 .env 文件。 使用 Foundry 凭据创建或更新 .env 文件:
PROJECT_ENDPOINT=https://<your-resource-name>.services.ai.azure.com/api/projects/<your-project-name>
MODEL_DEPLOYMENT_NAME=<your-model-deployment-name>
重要
从不将 .env 文件提交到版本控制。 将其添加到 .gitignore 文件。
对托管代理进行身份验证
托管代理示例使用 DefaultAzureCredential 进行身份验证。 将开发环境配置为通过某个受支持的源提供凭据,例如:
- Azure CLI (
az login) - Visual Studio Code帐户登录
- Visual Studio帐户登录
- 服务主体的环境变量(AZURE_TENANT_ID、AZURE_CLIENT_ID、AZURE_CLIENT_SECRET)
通过在运行示例之前运行 Azure CLI az account show 或 az account get-access-token 命令在本地确认身份验证。
可以在交互式模式或容器模式下运行托管代理。
在代理检查器中运行托管代理
若要在 Visual Studio Code 本地运行托管代理,请选择 F5 密钥。 这会打开代理检查器并执行应用程序。
这将:
-
启动代理服务器:
agentdev的CLI在端口8087上将你的代理封装为HTTP服务器,并在端口5679附加了debugpy。 -
发现代理: UI 从
/agentdev/entities中提取可用的代理/工作流。 -
流式执行: 聊天输入会流向
/v1/responses,并通过 SSE 流传输事件,以实现实时可视化。 - 启用代码导航: 双击工作流节点以在编辑器中打开相应的源文件。
- 启用与本地代理聊天 并查看响应、命中调试断点等。
示例工作流项目使用必要的环境变量创建一个 .env 文件。 使用 Foundry 凭据创建或更新 .env 文件:
根据操作系统设置环境变量:
$env:AZURE_AI_PROJECT_ENDPOINT="https://<your-resource-name>.services.ai.azure.com/api/projects/<your-project-name>" $env:AZURE_AI_MODEL_DEPLOYMENT_NAME="your-deployment-name"
对托管代理进行身份验证
托管代理示例使用 DefaultAzureCredential 进行身份验证。 将开发环境配置为通过某个受支持的源提供凭据,例如:
- Azure CLI (
az login) - Visual Studio Code帐户登录
- Visual Studio帐户登录
- 服务主体的环境变量(AZURE_TENANT_ID、AZURE_CLIENT_ID、AZURE_CLIENT_SECRET)
通过在运行示例之前运行 Azure CLI az account show 或 az account get-access-token 命令在本地确认身份验证。
可以在交互式模式或容器模式下运行托管代理。
在交互式模式下运行托管代理
直接运行托管代理进行开发和测试:
dotnet restore
dotnet build
dotnet run
在容器模式下运行托管代理
提示
在启动容器代理程序之前打开本地开发环境,以确保可视化功能正常工作。
若要在容器模式下运行代理,请执行以下操作:
- 打开Visual Studio Code命令面板并执行
Microsoft Foundry: Open Container Agent Playground Locally命令。 - 使用以下命令初始化容器化托管代理。
dotnet restore dotnet build dotnet run - 通过操场界面向代理提交请求。 例如,输入一个提示,例如:“为新的电动运动型多用途车创建一个标语,该车价格实惠且驾驶乐趣十足。”
- 在操场界面中审核智能体的响应。
可视化托管代理工作流执行
Foundry Toolkit for Visual Studio Code 提供了一个实时执行流程图,显示您的工作流中的代理如何互动协作。 在项目中启用可观测性以使用此可视化效果。
将以下引用添加到 csproj 文件:
<ItemGroup>
<PackageReference Include="OpenTelemetry" Version="1.12.0" />
<PackageReference Include="OpenTelemetry.Exporter.Console" Version="1.12.0" />
<PackageReference Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.12.0" />
<PackageReference Include="System.Diagnostics.DiagnosticSource" Version="9.0.10" />
</ItemGroup>
更新程序以包括以下代码片段:
using System.Diagnostics;
using OpenTelemetry;
using OpenTelemetry.Logs;
using OpenTelemetry.Metrics;
using OpenTelemetry.Resources;
using OpenTelemetry.Trace;
var otlpEndpoint =
Environment.GetEnvironmentVariable("OTLP_ENDPOINT") ?? "http://localhost:4319";
var resourceBuilder = OpenTelemetry
.Resources.ResourceBuilder.CreateDefault()
.AddService("WorkflowSample");
var s_tracerProvider = OpenTelemetry
.Sdk.CreateTracerProviderBuilder()
.SetResourceBuilder(resourceBuilder)
.AddSource("Microsoft.Agents.AI.*") // All agent framework sources
.SetSampler(new AlwaysOnSampler()) // Ensure all traces are sampled
.AddOtlpExporter(options =>
{
options.Endpoint = new Uri(otlpEndpoint);
options.Protocol = OpenTelemetry.Exporter.OtlpExportProtocol.Grpc;
})
.Build();
监视和可视化托管代理工作流
要实时监控和可视化托管代理工作流的执行情况:
打开命令面板(Ctrl+Shift+P)。
运行以下命令:
>Microsoft Foundry: Open Visualizer for Hosted Agents。
VS Code 中将打开一个新选项卡以显示执行图。 可视化在工作流进行时会自动更新,以显示代理及其交互之间的流程。
端口冲突
对于端口冲突,可以通过在 Foundry 插件设置中更改可视化端口来解决。 为此,请执行以下步骤:
- 在 VS Code 的左侧栏中,选择齿轮图标以打开设置菜单。
- 选择
Extensions>Microsoft Foundry Configuration。 - 找到该
Hosted Agent Visualization Port设置并将其更改为可用的端口号。 - 重启 VS Code 以应用更改。
更改代码中的端口
对于任何端口冲突,请通过设置 FOUNDRY_OTLP_PORT 环境变量来更改可视化端口。 相应地更新程序中的 OTLP 终结点。
例如,若要将端口更改为 4318,请使用以下命令:
$env:FOUNDRY_OTLP_PORT="4318"
在程序中,更新 OTLP 终结点以使用新的端口号:
var otlpEndpoint =
Environment.GetEnvironmentVariable("OTLP_ENDPOINT") ?? "http://localhost:4318";
部署托管代理
在本地测试托管代理后,将其部署到 Foundry 工作区,以便其他团队成员和应用程序可以使用它。
重要
请确保提供在 Foundry 工作区中部署托管代理所需的权限,如 先决条件中所述。 可能需要与Azure管理员合作才能获取所需的角色分配。
- 打开Visual Studio Code命令面板并运行
Microsoft Foundry: Deploy Hosted Agent命令。 - 通过选择目标工作区、指定容器代理文件(
container.py以及根据需要定义任何其他部署参数)来配置部署设置。 - 成功部署后,托管代理将显示在 Microsoft Foundry 扩展树视图的
Hosted Agents (Preview)部分中。 - 选择已部署的代理以使用集成操场接口访问详细信息和测试功能。
- 打开Visual Studio Code命令面板并运行
Microsoft Foundry: Deploy Hosted Agent命令。 - 通过选择目标工作区、指定容器代理文件(
<your-project-name>.csproj以及根据需要定义任何其他部署参数)来配置部署设置。 - 成功部署后,托管代理将显示在 Microsoft Foundry 扩展树视图的
Hosted Agents (Preview)部分中。 - 选择已部署的代理以使用集成操场接口访问详细信息和测试功能。