主题
08 · 02.dotnet-agent-framework-workflow-ghmodel-sequential
原课程补充材料
根据对应简体中文译本整理。原代码片段未进行云端验证。
⏩ 使用 Azure OpenAI (Responses API)进行顺序 Agent 工作流(.NET)
📋 高级顺序处理教程
本笔记本演示了如何使用 .NET 的 Microsoft Agent Framework 和 Azure OpenAI(Responses API)实现 顺序工作流模式 。你将学习如何构建复杂的逐步处理流水线,Agent 按特定顺序执行,每个阶段基于前一阶段的结果展开。
🎯 学习目标
🔄 顺序处理架构
- 线性工作流设计 :创建具有清晰依赖关系的逐步处理流水线
- 状态管理 :维护跨顺序工作流阶段的上下文和数据流
- Azure OpenAI(Responses API) :在多阶段 .NET 工作流中利用 Azure OpenAI 模型
- 企业流水线模式 :构建可用于生产的顺序处理系统
🏗️ 高级顺序模式
- 阶段门控处理 :在工作流阶段间实现验证检查点
- 上下文保留 :维护所有阶段的状态和累积知识
- 错误传播 :优雅地处理顺序处理链中的失败
- 性能优化 :高效的顺序执行,开销最小化
🏢 企业顺序应用
- 文档处理流水线 :多阶段文档分析、转换和验证
- 质量保证工作流 :顺序审核、验证和审批流程
- 内容生产流水线 :调研 → 写作 → 编辑 → 审核 → 发布
- 业务流程自动化 :具有明确阶段依赖关系的多步骤业务工作流
⚙️ 前置条件与设置
📦 必备 NuGet 包
.NET 顺序工作流所需的核心包:
xml
<PackageReference Include="Microsoft.Extensions.AI" Version="10.*" />
<PackageReference Include="Azure.AI.OpenAI" Version="2.*" />
<PackageReference Include="Azure.Identity" Version="1.15.0" />
<PackageReference Include="System.Linq.Async" Version="6.0.3" />🔑 Azure OpenAI 配置
环境设置(.env 文件):
text
AZURE_OPENAI_ENDPOINT=https://<your-resource>.openai.azure.com
AZURE_OPENAI_DEPLOYMENT=gpt-5-mini配置管理:
csharp
// Load environment variables securely
Env.Load("../../../.env");
var azureEndpoint = Environment.GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT");
var deployment = Environment.GetEnvironmentVariable("AZURE_OPENAI_DEPLOYMENT");🏗️ 顺序工作流架构
查看 Mermaid 源码
graph TD
A[Initial Input] --> B[Stage 1: 分析代理]
B --> C[检查点 1]
C --> D[Stage 2: 处理代理]
D --> E[检查点 2]
E --> F[Stage 3: 验证代理]
F --> G[最终输出]
H[状态上下文] --> B
H --> D
H --> F
I[Azure OpenAI(响应 API)] --> B
I --> D
I --> F
关键组件:
- 顺序 Agent :为每个处理阶段提供专门 Agent
- 状态上下文 :维护跨阶段的累积数据和决策
- 检查点 :阶段间的验证点,确保质量和一致性
- Azure OpenAI 客户端 :所有工作流阶段一致访问 AI 模型
🎨 顺序工作流设计模式
📝 文档处理流水线
Raw Document → Content Extraction → Analysis → Validation → Structured Output🎯 内容创作工作流
Brief/Requirements → Research → Content Creation → Review → Final Polish🔍 质量保证流水线
Initial Review → Technical Validation → Compliance Check → Final Approval💼 商业智能工作流
Data Collection → Processing → Analysis → Report Generation → Distribution🏢 企业顺序优势
🎯 可靠性与质量
- 确定性处理 :通过结构化阶段实现一致且可重复的结果
- 质量关卡 :验证检查点确保各阶段质量
- 错误隔离 :一阶段的问题不传播至后续阶段
- 审计跟踪 :完整跟踪每个阶段的决策和转换
📈 可扩展性与性能
- 模块化设计 :各阶段可独立优化
- 资源管理 :跨阶段高效分配 AI 模型资源
- 状态优化 :各阶段间最小化状态传递以优化性能
- 并行阶段组 :允许多个顺序工作流并行运行
🔒 安全性与合规性
- 阶段级安全 :不同处理阶段应用不同安全策略
- 数据验证 :确保每个检查点数据完整和合规
- 访问控制 :对不同工作流阶段实施细粒度权限
- 法规合规 :通过结构化处理满足法规要求
📊 监控与分析
- 阶段级指标 :监控每个工作流阶段性能
- 瓶颈识别 :识别并优化缓慢阶段
- 质量指标 :跟踪每阶段的质量和成功率
- 流程优化 :基于阶段级分析不断改进
让我们一起构建稳健的顺序 AI 处理流水线!🚀
💻 运行代码
完整实现见 02.dotnet-agent-framework-workflow-ghmodel-sequential.cs。该文件展示了一个 三阶段家具分析工作流 :
- 阶段 1 - 销售 Agent :分析家具图片并提供购买建议
- 阶段 2 - 价格 Agent :提供详细价格细目和预算选项
- 阶段 3 - 报价 Agent :生成专业的 Markdown 格式报价文档
🏗️ 工作流架构
Image Input → Sales Analysis → Price Estimation → Quote Generation → Final Output每个 Agent:
- 接收前一阶段的输出作为上下文
- 利用专业知识构建前期分析结果
- 通过状态管理保持工作流连续性
🚀 运行示例
前置条件:
- 将家具图片放在
../imgs/home.png(或更新imgPath变量) - 配置
.env文件,包含 Azure OpenAI 端点和部署信息,然后执行az login登录
bash
# 使脚本可执行(Unix/Linux/macOS)
chmod +x 02.dotnet-agent-framework-workflow-ghmodel-sequential.cs
# 运行顺序工作流
./02.dotnet-agent-framework-workflow-ghmodel-sequential.cs或在 Windows:
powershell
dotnet run 02.dotnet-agent-framework-workflow-ghmodel-sequential.cs📝 预期输出
工作流将:
- 销售 Agent :从图片识别家具项目并提供建议
- 价格 Agent :增加详细定价分析,包含预算级别和购物建议
- 报价 Agent :生成包含所有信息综合的格式化报价文档
最终输出将是基于图片分析的全面、专业家具报价单。
🔧 自定义选项
修改 Agent 行为:
csharp
// Adjust agent instructions to change their focus
const string SalesAgentInstructions = "Your custom instructions...";更改顺序流程:
csharp
// Add or reorder workflow stages
var workflow = new WorkflowBuilder(salesagent)
.AddEdge(salesagent, priceagent)
.AddEdge(priceagent, quoteagent)
.AddEdge(quoteagent, newAgent) // Add another stage
.Build();使用不同输入:
csharp
// Process text instead of images
ChatMessage userMessage = new ChatMessage(ChatRole.User, [
new TextContent("Analyze pricing for a modern living room set")
]);🎯 真实应用场景
该顺序模式适用于:
- 电子商务 :产品分析 → 定价 → 报价生成
- 房地产 :物业分析 → 估价 → 上架创建
- 保险 :理赔分析 → 评估 → 报价生成
- 内容创作 :调研 → 写作 → 编辑 → 发布
🔍 理解状态流
顺序中每个 Agent 接收:
- 原始输入 :初始用户消息(图片+文本)
- 前序 Agent 输出 :会话历史中所有先前 Agent 响应
- 累积上下文 :贯穿工作流的完整状态维护
这使得多阶段复杂处理成为可能,每个 Agent 基于全部前序阶段的综合上下文进行构建。