微信扫码
添加专属顾问
AgentScope Java 在线训练插件让智能体持续进化,打破传统训练-部署分离的瓶颈,实现 Java 生态下的高效优化。 核心内容: 1. 传统 Agent 优化面临的训练-部署环境分离与 Java 生态支持缺失两大挑战 2. AgentScope Java + Trinity-RFT 在线训练方案的核心优势与特性 3. 如何实现生产环境中的实时数据闭环与持续优化
背景与挑战
Cloud Native
随着大模型能力的成熟,智能体(Agent)正从实验性原型快速走向生产级应用。在客服自动化、运维诊断、数据查询、业务流程编排等场景中,Agent 通过调用工具、规划任务、与用户多轮交互,展现出显著的生产力价值。为适配特定业务需求,开发者普遍基于开源大语言模型(LLM),采用监督微调(SFT)、强化微调(RFT)等技术对 Agent 进行定制化优化,在推理成本、响应延迟与任务成功率之间寻求最佳平衡。
然而,模型一旦部署上线,其能力便趋于静态。若无法持续从真实用户交互中学习,Agent 很难适应业务变化、工具演进或用户行为漂移,长期效果将逐渐退化。
当前 Agent 优化面临两大关键瓶颈:
传统的微调流程高度依赖离线数据集:开发者需先积累大量历史交互日志,再经过人工清洗、标注,并构建静态训练集;同时,为在隔离环境中进行训练,还需额外开发模拟工具链(如 Mock API、虚拟数据库等)来复现线上行为。这一过程不仅周期长、反馈滞后,更关键的是,仿真环境往往难以准确还原生产系统中真实的工具响应、状态流转与边界条件——例如内部 API 的延迟特性、数据库的并发行为或业务系统的上下文依赖。这种“训练-部署”之间的环境差异,容易导致模型在离线评估中表现良好,却在真实场景中出现行为偏差甚至失效。
无论哪种方式,都迫使 Java 开发者额外承担算法理解与分布式训练工程的复杂性,增加开发负担,降低迭代效率,阻碍了训练能力在 Java 生态中的落地与普及。
要实现“Agent 越用越聪明”的自进化目标,必须打通从生产环境到训练系统的全链路数据闭环。理想方案应具备以下特征:
基于此,我们提出面向 Java Agent 的端到端在线训练方案,以 AgentScope Java + Trinity-RFT 为核心,构建一条高效、安全、可落地的持续优化路径。
AgentScope Java × Trinity-RFT 在线训练
Cloud Native
在线训练(Online Training)是一种在生产环境的实时系统中,利用真实用户交互数据持续优化智能体(Agent)行为的训练范式。与传统离线训练——即先收集历史日志、构建静态数据集,再于隔离环境中进行模型微调——不同,在线训练强调与真实工具链(如 API、数据库、业务系统)和用户行为的深度耦合,实现“边运行、边学习、边优化”的闭环。
其核心流程为:系统从线上真实请求中自动筛选高质量样本,由 Agent 使用待训练模型处理这些请求,并直接调用生产环境中的真实工具完成任务;整个交互过程被完整记录,并结合预设规则或用户反馈生成对应的奖励信号;当积累足够数量的带奖励轨迹后,系统自动触发训练,利用这些真实、高保真的数据对模型进行增量优化,从而真正实现“使用即学习,越用越聪明”的自进化能力。
本方案通过在 AgentScope Java 中原生集成在线训练能力,为 Java Agent 开发者提供以下关键价值:
本方案采用解耦式架构,将在线训练流程划分为三个独立组件,支持灵活部署与弹性扩展:
三者通过轻量级协议协同工作:
Agent Runner、Explorer 和 Trainer 可以部署在不同的服务器上。其中 Agent Runner 由用户自行管理,只需要保证网络与 Explorer 互通,无需 GPU 资源。而 Explorer 和 Trainer 需要通过 Trinity-RFT 部署在 GPU 服务器上,且需要保证两者可以访问同一个共享文件系统,以便 Trainer 保存的模型检查点可以被 Explorer 读取。
为保障生产环境稳定性,在线训练当前默认仅支持只读工具调用。若涉及写操作(如创建订单、发送消息),需由开发者通过幂等设计、沙箱机制或人工审核等方式确保重放安全。
此外,当前训练范式原生支持单轮用户-Agnet 交互。对于多轮对话或复杂任务流,需开发者显式建模状态转移或采样策略。
快速开始
Cloud Native
<dependency> <groupId>io.agentscope</groupId> <artifactId>agentscope-extensions-training</artifactId> <version>${agentscope.version}</version></dependency>请求筛选逻辑用于筛选出需要用于训练的请求。
SamplingRateStrategy - 随机采样。所有线上请求按照百分比进行筛选。
TrainingSelectionStrategy strategy = SamplingRateStrategy.of(0.1); // 10%
ExplicitMarkingStrategy - 用户显式标记重要请求。
TrainingSelectionStrategy strategy = ExplicitMarkingStrategy.create();// 在你的应用代码中显示标记请求用于训练TrainingContext.mark("high-quality", "user-feedback");agent.call(msg).block(); // 这个请求会被用于训练您可以参考 SamplingRateStrategy(基于固定采样率的随机筛选)或 ExplicitMarkingStrategy(基于显式标记的主动筛选)的实现方式,自行实现 TrainingSelectionStrategy 接口,并在 shouldSelect 方法中嵌入符合您业务场景的请求筛选逻辑。该方法在每次 Agent 处理用户请求前被调用,您可以基于以下维度动态决定是否将本次交互纳入训练数据集:
通过自定义筛选策略,您可以在控制训练数据规模的同时,显著提升样本的相关性与训练效率,避免将大量低价值或噪声数据引入训练流程。尤其在在线训练资源有限或强调数据隐私的场景下,精细化的筛选机制是保障训练效果与系统稳定性的关键环节。
您可以实现 RewardCalculator 接口,并在 calculate 方法中根据您的业务需求自定义您的奖励计算逻辑。该方法的参数是 Agent,你可以从中获取 Agent 相关的所有信息,例如 Memory、Context 等。通过利用用户输入、Agent 的响应、工具调用序列、工具返回结果等信息,基于实际业务指标(如任务完成度、响应准确性等)动态评估 Agent 行为的质量。
一般而言,奖励值归一化到 0 到 1 之间的浮点数:
典型实现方式包括:
在安装之前,请确保您的系统满足以下要求,推荐使用源码安装:
git clone https://github.com/agentscope-ai/Trinity-RFTcd Trinity-RFTpip install -e ".[dev]"pip install flash-attn==2.8.1
mode: serve # set to 'serve' for online inference serviceproject: test # set your project namename: test # set your experiment namecheckpoint_root_dir: CHECKPOINT_ROOT_DIR # set the root directory for checkpoints, must be an absolute path, and should be on a shared filesystemmodel: model_path: /path/to/your/model # set the path to your base model max_model_len: 8192 max_response_tokens: 2048 temperature: 0.7algorithm: algorithm_type: "ppo" # current version only supports ppo for online training (group is not supported yet)cluster: node_num: 1 gpu_per_node: 4 # suppose you have 4 GPUs on the nodeexplorer: rollout_model: engine_num: 2 tensor_parallel_size: 2 # make sure tensor_parallel_size * engine_num <= node_num * gpu_per_node enable_openai_api: true enable_history: true enable_auto_tool_choice: true tool_call_parser: hermes # reasoning_parser: DeepSeek_r1 # if using Qwen3 series models, uncomment this line dtype: bfloat16 seed: 42 service_status_check_interval: 10 # check new checkpoints and update data every 10 seconds proxy_port: 8010 # set the port for Explorer service# trainer:# save_interval: 1 # save checkpoint every step# ulysses_sequence_parallel_size: 2 # set according to your model and hardwarebuffer: train_batch_size: 16 trainer_input: experience_buffer: name: exp_buffer # table name in the database storage_type: sql # path: your_db_url # if not provided, use a sqlite database in checkpoint_root_dir/project/name/buffersynchronizer: sync_method: checkpoint sync_interval: 1monitor: monitor_type: tensorboard
mode: train # set to 'train' for training serviceproject: test # set your project name, must be the same as in Explorername: test # set your experiment name, must be the same as in Explorercheckpoint_root_dir: CHECKPOINT_ROOT_DIR # set the root directory for checkpoints, must be the same as in Explorermodel: model_path: /path/to/your/model # set the path to your base model, must be the same as in Explorer max_model_len: 8192 # must be the same as in Explorer max_response_tokens: 2048 # must be the same as in Explorer temperature: 0.7 # must be the same as in Exploreralgorithm: algorithm_type: "ppo" # current version only supports ppo for online training (group is not supported yet)cluster: node_num: 1 gpu_per_node: 4 # suppose you have 4 GPUs on the nodebuffer: train_batch_size: 32 # trainer consumes samples per step trainer_input: experience_buffer: name: exp_buffer # table name in the database, must be the same as in Explorer storage_type: sql # path: your_db_url # if not provided, use a sqlite database in checkpoint_root_dir/project/name/buffertrainer: save_interval: 16 # save checkpoint every step ulysses_sequence_parallel_size: 1 # set according to your model and hardware save_hf_checkpoint: always max_checkpoints_to_keep: 5 trainer_config: trainer: balance_batch: false max_actor_ckpt_to_keep: 5 max_critic_ckpt_to_keep: 5synchronizer: sync_method: checkpoint sync_interval: 1 monitor: monitor_type: tensorboard
启动 Explorer 和 Trainer 服务前需要启动 ray 集群。
ray start --head
分别启动 Explorer 与 Trainner 服务。
trinity run --config explorer.yamltrinity run --config trainer.yaml
TrainingRunner trainingRunner = TrainingRunner.builder() .trinityEndpoint(TRINITY_ENDPOINT) //Trinity Explorer服务地址 .modelName(TRAINING_MODEL_NAME)//对应Trinity配置中model_path .selectionStrategy(new CustomStrategy()) .rewardCalculator(new CustomReward()) .commitIntervalSeconds(60*5)//训练数据提交时间间隔 .repeatTime(1)//每一个训练请求被训练次数 .build();trainingRunner.start();
import io.agentscope.core.training.runner.TrainingRunner;import io.agentscope.core.training.strategy.SamplingRateStrategy;// 1. 启动训练 runner(无需 Task ID/Run ID!)TrainingRunner runner = TrainingRunner.builder() .trinityEndpoint("http://trinity-backend:8010") .modelName("/path/to/model") .selectionStrategy(SamplingRateStrategy.of(0.1)) // 10% 采样 .rewardCalculator(new CustomReward()) // 自定义奖励计算逻辑 .commitIntervalSeconds(300) // 每 5 分钟 commit 一次 .build();runner.start();// 2. 正常使用你的 Agent - 完全无感知训练!ReActAgent agent = ReActAgent.builder() .name("Assistant") .sysPrompt("You are a helpful AI assistant. Be friendly and concise.") .model( DashScopeChatModel.builder() .apiKey(apiKey) .modelName("qwen-plus") .stream(true) .formatter(new DashScopeChatFormatter()) .build()) .memory(new InMemoryMemory()) .toolkit(new Toolkit()) .build();// 用户请求正常处理(使用 GPT-4),自动采样10%请求用于训练Msg response = agent.call(Msg.userMsg("搜索 Python 教程")).block();// 3. 训练完成后停止runner.stop();训练效果
Cloud Native
下面的 Demo 中,通过在线训练的方式,使用 PPO 强化学习算法优化 SQL Agent。
用户向 SQL Agent 发送请求,例如:
DB: department_management
Question: List the creation year, name and budget of each department.
Agent 基于自然语言问题和目标数据库的 schema 生成一条 SELECT 语句,并通过execute_query 工具在真实数据库中执行,以验证其可执行性与结果正确性。
若 SQL 执行成功且返回结果符合语义预期,则直接返回;否则,Agent 将结合执行错误信息与数据库 schema 进行迭代修正。
整个过程最多重试 N 轮(如 3 轮),当 SQL 验证通过或达到最大重试次数时,Agent 终止循环,返回当前最优 SQL。
为确保安全性,execute_query 工具严格限制仅允许执行 SELECT 语句,禁止任何数据修改操作,从而有效防止对数据库造成意外破坏。
在该场景下,提升 Qwen2.5-Coder-1.5B-Instruct 的 SQL 生成准确率。
奖励函数关注两个方面:
1)SQL Agent 生成的 SQL 语句是否语法正确且可成功执行?
通过代码实际执行 SQL 语句。
2)SQL Agent 生成的 SQL 语句能够满足用户的需求?
LLM 评判:将用户的问题,数据库表的定义、生成的 SQL 语句、SQL 语句的执行结果在 SyStemPrompt 拼装后,传递给 LLM(qwen-max),让 LLM 判定 SQL 语句是否符合用户意图。
trainingRunner = TrainingRunner.builder() .trinityEndpoint(TRINITY_ENDPOINT) .modelName(TRAINING_MODEL_NAME) .selectionStrategy(SamplingRateStrategy.of(1.0)) .rewardCalculator( new SqlAgentReward()) .commitIntervalSeconds(60*5) # 每五分钟commit一次 .build();
由于数据集的数据可以视为筛选后的优质数据集,因为采用采样方式筛选请求时采样频率为 1.0,所有请求都将被用于训练。
SQL 难度基于三个维度的得分来判定:
由于 SQL 语句有多种等效写法,需要根据实际的数据库执行结果是否准确判定 SQL 语句的正确性。
二元判定准确性:生成 SQL 与 Ground Truth SQL 在目标数据库上执行结果是否一致。
本 Demo 采用 Spider 数据集中的测试集部分进行评估。测试集中共有 1000 条数据,评估脚本会并行发送测试请求,获取 SQL Agent 的真实返回。
训练前 Agent 性能表现
在 FC 上部署 Qwen/Qwen2.5-Coder-1.5B-Instruct 模型,Agent 使用该模型对外提供服务,1000 条测试数据评估指标结果如下:
## Summary- **Total Samples:** 1000- **Execution Accuracy:** 47.60%## Scores by Difficulty| Difficulty | Count | Exec Accuracy | Percentage ||------------|-------|---------------|------------|| easy | 327 | 0.612 | 61.16% || medium | 445 | 0.449 | 44.94% || hard | 140 | 0.357 | 35.71% || extra | 88 | 0.295 | 29.55% || all | 1000 | 0.476 | 47.60% |---
训练后 Agent 性能表现
将训练后的模型通过 NAS 部署至 FC 上,Agent 使用训练后的模型对外提供服务,1000 条测试数据评估指标结果如下:
## Summary- **Total Samples:** 1000- **Success Count:** 1000- **Error Count:** 0- **Success Rate:** 100.00%- **Execution Accuracy:** 65.70% (based on 1000 successful evaluations)## Scores by Difficulty| Difficulty | Count | Exec Accuracy | Percentage ||------------|-------|---------------|------------|| easy | 327 | 0.844 | 84.40% || medium | 445 | 0.616 | 61.57% || hard | 140 | 0.529 | 52.86% || extra | 88 | 0.375 | 37.50% || all | 1000 | 0.657 | 65.70% |---
经过训练后,SQL Agent 在四种不同难度的 SQL 语句下准确率均有提升,easy 难度下准确率提升 23.24%,medium 难度下准确率提升 16.63%,hard 难度下准确率提升 17.15%,extra 难度下准确率提升 7.95%,整体执行准确率提升 18.1%。
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业
2026-07-17
抖音质量效能部不传之秘:用AI精准预估“可能出事”的模块
2026-07-17
Google Colab 谷歌送了你一台「AI 电脑」 你还不知道?
2026-07-16
中国 AI 真正输给美国的,从来不是算力
2026-07-13
淘宝直播数字人 AgenticRL 实践:从 RLVR 到 MultiAgent RL
2026-07-02
AReaL 2.0 正式发布:面向 Agent 应用的 Online RL 微服务架构升级
2026-06-19
从 BERT 标注到 Agent Skill:短文本标签体系的四次“工业革命”
2026-05-14
多轮 Agent 场景下,滴滴的 EAGLE-3 训推加速实践
2026-05-06
谁说 Mac 只能写代码?Google 官宣:M 芯片本地微调 Gemma 4 时代开启!
2026-05-06
2026-05-14
2026-06-19
2026-07-02
2026-07-13
2026-07-17
2026-07-17
2026-07-16
2026-07-17
2026-01-02
2025-11-19
2025-09-25
2025-06-20
2025-06-17
2025-05-21
2025-05-17
欢迎您使用【53AI 官方网站】(以下简称“本网站”或“我们”)。本《会员服务协议》(以下简称“本协议”)是您(以下简称“会员”或“用户”)与【深圳市博思协创网络科技有限公司】之间关于注册、登录及使用本网站会员服务所订立的法律协议。
在您注册或登录前,请务必审慎阅读、充分理解各条款内容,特别是免除或限制责任的条款、知识产权条款、争议解决条款等。此类条款将以加粗形式提示您注意。 当您通过微信公众号授权、手机验证码验证或其他方式成功登录本网站时,即视为您已完全理解并同意接受本协议的全部内容。
一、 定义
本网站:指由【深圳市博思协创网络科技有限公司】运营的,域名为【53ai.com】的网站及相关移动端页面。
会员服务:指本网站向注册会员提供的知识库文章查阅、内容检索及其他相关增值服务。
知识库内容:指本网站发布的包括但不限于文字、图表、数据、研究报告、行业分析等数字化内容资源。
二、 账号注册与登录
登录方式:本网站支持以下登录方式,您可根据实际情况选择:
微信公众号授权登录:您同意将您的微信OpenID信息授权给本网站,用于创建或关联会员账号。
手机验证码登录:您需提供真实有效的手机号码,并通过短信验证码完成身份验证与登录/注册。
账号安全:您的账号仅限您本人使用,禁止赠与、借用、租用、转让或售卖。因您保管不善导致的账号被盗、密码泄露等损失,由您自行承担。
实名认证:根据相关法律法规要求,我们可能要求您在特定功能下完成实名认证。如您拒绝提供,可能无法使用部分或全部服务。
未成年人保护:若您未满18周岁,请在法定监护人的陪同下阅读本协议,并在征得监护人同意后使用本服务。
三、 服务内容与规范
知识库查阅权限:会员登录后,有权按照其会员等级对应的权限范围,在线浏览、检索本网站知识库中的相关文章及内容。
服务变更:我们有权根据业务发展需要,调整、变更或终止部分服务内容,并将以网站公告、公众号消息等方式提前通知。
禁止行为:您在使用服务时不得实施以下行为:
利用技术手段批量爬取、下载、转存知识库内容;
将知识库内容用于商业目的或未经授权地向第三方传播;
干扰本网站正常运行或侵犯其他用户合法权益;
发布违法违规信息或从事违反公序良俗的活动。
四、 知识产权声明
权利归属:本网站知识库中的排版设计、软件代码等内容的知识产权均归【公司全称】或原权利人所有,受《中华人民共和国著作权法》等法律保护。
有限许可:本网站授予会员一项非独占、不可转让、不可转授权的普通许可,仅限于个人学习、研究之目的在线查阅知识库内容。
侵权追责:未经书面许可,任何单位或个人不得以任何形式复制、转载、摘编、镜像、汇编或以其他方式使用上述内容。一经发现,我们保留追究其法律责任的权利。
五、 个人信息保护
我们重视对您个人信息的保护。关于我们如何收集、使用、存储和保护您的个人信息,请单独阅读 《隐私政策》。
您通过微信公众号授权或手机号验证所提供的信息,我们将严格按照《个人信息保护法》的规定处理,仅用于身份识别、服务提供及安全验证等必要用途。
您可以随时通过网站设置或联系客服行使查阅、更正、删除个人信息及撤回授权同意的权利。
六、 免责声明
内容准确性:知识库内容仅供参考,不构成专业建议。我们不对其完整性、准确性、时效性作任何明示或暗示的保证,您应自行判断并承担使用风险。
不可抗力:因自然灾害、政策法规变化、网络故障、第三方平台接口异常(如微信接口维护、运营商短信通道故障)等不可抗力导致的服务中断或延迟,我们不承担违约责任。
第三方链接:本网站可能包含指向第三方网站的链接,该等网站的内容和服务不受我们控制,请您自行甄别风险。
七、 违约责任
如您违反本协议约定,我们有权视情节采取警告、限制功能、暂停服务、注销账号等措施,并保留要求赔偿损失的权利。
如因您的违约行为导致我们遭受行政处罚、第三方索赔或商誉损失,您应承担全部赔偿责任(包括但不限于罚款、赔偿金、律师费、公证费等)。
八、 法律适用与争议解决
本协议的订立、执行和解释均适用中华人民共和国大陆地区法律。
因本协议产生的或与本协议有关的任何争议,双方应友好协商解决;协商不成的,任何一方均可向【公司所在地】有管辖权的人民法院提起诉讼。
九、 其他
本协议构成双方就本服务达成的完整协议,取代此前任何口头或书面约定。
本协议任一条款被认定为无效或不可执行的,不影响其他条款的效力。
我们对本协议享有最终解释权,并在法律允许的范围内保留随时修改的权利。修改后的协议一经公布即生效,继续使用服务即视为同意修订内容。