news 2026/4/16 8:47:30

自定义 Agent Executor:为 Agent 穿上“业务战甲

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
自定义 Agent Executor:为 Agent 穿上“业务战甲

一句话简介

本文将教你构建自定义Executor,不仅能管理 Agent 的对话生命周期,还能集成结构化输出、路由分发和自定义事件,打造真正的智能业务单元。


🎯 为什么需要自定义 Agent Executor?

虽然WorkflowBuilder可以直接添加AIAgent,但在复杂的业务场景下,我们往往需要更多控制权。

需求场景

直接使用 Agent

自定义 Agent Executor

对话历史

❌ 单次调用无记忆

✅ 管理AgentThread保持上下文

多重输入

❌ 仅支持单一文本

✅ 通过路由处理多种消息类型

输出控制

❌ 自由文本

✅ 强制 JSON 结构化输出

业务逻辑

❌ 纯 LLM 生成

✅ 嵌入评分、循环、熔断逻辑

核心理念:将 Agent 封装在 Executor 内部,让 LLM 的智能与代码的确定性完美融合。


💻 核心实现三部曲

1. 结构化输出与状态管理

首先,定义强类型的数据模型,并在 Executor 中持有 Agent 和对话线程。

// 定义数据模型 publicclassSloganResult { publicstring Slogan { get; set; } } // 自定义 Executor publicclassWriterExecutor : Executor { privatereadonly AIAgent _agent; privatereadonly AgentThread _thread; // ✅ 保持对话记忆 public WriterExecutor(AIAgent agent) : base("Writer") { _agent = agent; _thread = new AgentThread(); // 每个实例拥有独立线程 } }

2. 配置多路路由 (RouteBuilder)

一个智能节点往往需要处理多种类型的输入。例如:初次生成任务(string)和后续修改意见(Feedback)。

protected override RouteBuilder ConfigureRoutes(RouteBuilder builder) => builder // 处理初始需求 .AddHandler<string, SloganResult>(HandleInitialTaskAsync) // 处理反馈意见 .AddHandler<FeedbackResult, SloganResult>(HandleFeedbackAsync);

3. 实现业务逻辑 Handlers

在 Handler 中调用 Agent,利用结构化输出能力,并将结果转化为强类型对象。

private async ValueTask<SloganResult> HandleInitialTaskAsync( string task, IWorkflowContext context, CancellationToken ct) { // 1. 添加用户消息到线程 await _thread.AddUserMessageAsync($"任务:{task}"); // 2. 调用 Agent 并强制 JSON 输出 var response = await _agent.RunAsync(_thread, new AgentOptions { ResponseFormat = typeof(SloganResult) }, ct); // 3. 反序列化 var result = JsonSerializer.Deserialize<SloganResult>(response.Content); // 4.发布业务事件 await context.AddEventAsync(new SloganGeneratedEvent(result), ct); return result; }

🏢 典型场景:循环优化工作流

利用自定义 Executor,我们可以实现经典的Generator-Critic(生成-评价)循环模式。

关键点:

  • CriticExecutor:负责打分并提出修改意见。

  • 循环机制FeedbackResult被路由回WriterExecutor

  • 记忆增强:Writer 的_thread保存了之前的尝试,能理解“请根据这个意见修改”的指令。


🎯 总结

自定义 Agent Executor 是构建高级 Agentic Workflow 的基石。

  • 封装性:将 Prompt、配置和逻辑封装在一个类中。

  • 记忆力:通过AgentThread实现多轮对话状态管理。

  • 灵活性:多路由机制让节点能响应不同的“刺激”。

下一步,掌握了这些积木,你就可以搭建能够自主迭代、自我修正的复杂 AI 系统了。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 8:41:13

2025年AI图像处理趋势:cv_unet开源抠图模型+弹性GPU部署指南

2025年AI图像处理趋势&#xff1a;cv_unet开源抠图模型弹性GPU部署指南 1. 为什么抠图正在成为AI图像处理的“隐形基础设施” 你有没有遇到过这些场景&#xff1a; 电商运营凌晨三点还在手动PS商品图&#xff0c;换十次背景只为测试哪款更吸睛&#xff1b;设计师收到客户发来…

作者头像 李华
网站建设 2026/4/16 8:47:30

JVM内存模型与管理面试题详解

一、JVM内存结构核心问题 1. 请详细描述JVM内存结构的各个区域及其作用 问题分析角度&#xff1a; 考察对JVM运行时数据区的整体认知考察内存区域的生命周期理解考察线程共享与私有的区分能力 详细解答&#xff1a; JVM运行时数据区主要分为以下几个区域&#xff1a; 1.1…

作者头像 李华
网站建设 2026/4/15 11:26:52

灰色按钮加强版

链接&#xff1a;https://pan.quark.cn/s/89fddd1af65a灰色按钮能够突破灰色按钮权限&#xff0c;电脑上有许多按钮都是灰色不能够按的&#xff0c;使用了这款软件就变成可以按的啦&#xff0c;欢迎各位前来下载使用&#xff01;使用说明把“按钮使能和”按钮可见“两个选项勾上…

作者头像 李华
网站建设 2026/4/14 19:13:02

华为OD机考双机位C卷- 分月饼 (Java Python JS C++ C )

最新华为上机考试 真题目录:点击查看目录 华为OD面试真题精选:点击立即查看 华为OD机考双机位C卷- 题目描述 中秋节,公司分月饼,m 个员工,买了 n 个月饼,m ≤ n,每个员工至少分 1 个月饼,但可以分多个, 单人分到最多月饼的个数是 Max1 ,单人分到第二多月饼个数是…

作者头像 李华