微信扫码
添加专属顾问
我要投稿
还在为AI应用上线就崩而头疼?OpenJudge评测引擎帮你从"凭感觉调优"升级为"量化评估",让AI应用真正具备企业级可靠性。核心内容:1. AI应用从Demo到生产环境面临的典型困境与根本原因2. OpenJudge评测框架的核心功能与三大应用场景3. 解决企业级AI评测深水区的关键技术与创新方案
你的AI应用是不是“一上线就崩”?调优全靠感觉,修复一个 Bug 却引入两个新问题?
很多开发者在从 POC(早期原型)走向真实生产环境时都会遇到这样的困境:在 Demo 中惊艳的 Agent,一旦面对海量用户和复杂业务,就开始“盲人摸象”,只能靠猜测反复修补 Prompt,修复一个问题又祈祷不要触发其他 Bug。
这背后的根本问题是:从“Demo 惊艳”到“企业级可靠”之间存在一道必须跨越的鸿沟。
行业领先者早已意识到:评测驱动迭代是 AI 应用从原型走向生产的关键路径。无论是 Anthropic 构建 Claude Code,还是 Shopify 保障电商交易链路,都验证了同一原则:从依赖主观反馈转向量化评估、从人工抽检转向自动化评测,才能支撑 AI 从 Demo 走向规模化。
项目地址 (GitHub):https://github.com/agentscope-ai/OpenJudge
官方文档:https://agentscope-ai.github.io/OpenJudge/
OpenJudge 正是为此而生的开源自动化评测框架,由通义实验室和阿里云-计算平台事业部共同推出,在企业级场景下进行过打磨和验证,赋能阿里云百炼、人工智能平台PAI、蚂蚁集团等多个业务。
它提供了50+即拿即用且高质量的评测器,多种评测器自定义方法,能够快速对业务目标,以及无缝集成到现有工作流,帮助开发者实现从“凭感觉调优”到“评测驱动迭代”的范式转变。
“
作为开发者,你可以利用 OpenJudge 完成以下核心场景。
1、快速构建多维度评测指标:调用内置50+专业评测器,覆盖从语义相关性到 Agent 核心逻辑的全方位评估。
2、构造业务场景专属评测器:无论是冷启动期的零样本生成,还是成熟期的专属模型训练,都能让评测器深度适配你的业务逻辑。
3、无缝集成现有研发工作流:已完成与 Langfuse、LangSmith、verl、trinity-rft 等框架的深度适配,评测结果可观测,可作为奖励函数支持模型训练,让优化形成闭环。
面对企业级评测的深水区,OpenJudge 深入解决了几个根本性难题:
对于开发者而言,最令人头疼是 “模型看起来在工作,但你不知道它什么时候会出错”。这源于 AI 评测的两个根本盲区:
1、业务需求是“多选题”:用户要的不仅是“答案正确”,还要它相关、真实、安全、有用,不能只靠单一维度评测。
2、决策过程是“黑匣子”:任务失败时,无法诊断:是规划偏了?工具调用错了?还是记忆乱了?
为了打破这种“盲盒状态”,OpenJudge 提供了 50+ 即拿即用的专业评分器,实现了对 Agent 行为全方位可观测:
1、全场景覆盖:内置针对文本质量、代码逻辑、数学推导及多模态(图文对齐)的专项评估器。
2、深度拆解 Agent 行为链:追踪其推理轨迹的逻辑性,检验工具调用的准确率与效率,并评估记忆提取的有效性与自我纠错能力。
为解决此困境,OpenJudge 建立了一套让评测结果 可信、可比、可解释的机制,确保每一次评分都经得起检验,让“评测驱动迭代”真正成为可信赖的工程实践。
1、从“模糊主观”到“结构化准则”:将复杂评估拆解为细粒度、可解释的评分点,通过明确的得分区间和具体加减分项,将感性判断转化为理性逻辑。每次打分都附带详细理由,让你清楚看到判定依据。
2、设立“黄金数据集”上岗考试:每个评测器在正式“上岗”前,必须通过在黄金数据集上的 “对齐性校验” 。只有其评分与高质量人工标注高度一致、准确率达标(平均80%以上)的评测器,才会被投入使用,从源头保障评测的客观与可靠。
预置评测器准确率
每个垂直场景都有其独特的逻辑准则,金融行业重点关注风控合规与事实准确性、医疗领域对事实幻觉零容忍,需要极高的专业严谨性、电商客服要求话术与品牌风格高度一致......通用的评测标准无法覆盖这些垂直领域的特殊要求,导致评测结果与真实业务价值脱节。
OpenJudge 的提供 “三阶进化”适配路径,让评测体系与你的业务共同成长:
1、冷启动:零样本生成,5分钟建立防线
即使在没有标准、没有数据的项目初期,只需输入一段业务场景描述,OpenJudge 即可自动生成专属评测准则,快速将模糊的业务需求转化为可量化的评估指标。
2、有数据后:小样本演进,将专家经验“编码”
当积累少量人工审核数据后,可提供典型正/负样本(Few-Shot)。OpenJudge 能够从中提炼业务特有的评价偏好,实现从“人工抽检”到“全量自动化评测”的跃迁,大幅降低人力成本与标准不一的风险。
3、高要求场景:训练专属评测模型,构筑技术护城河
对于追求极致准确率或处于强监管行业的场景,OpenJudge 支持基于海量行业数据训练专属评测模型。这不仅能让评测识别更细微的错误,其生成的信号还可直接转化为Agent微调的 Reward(奖励)信号,实现业务目标与模型进化的像素级对齐。
OpenJudge 深度融入了 AI 开发的全生命周期,能够无缝对接开发者已有的工具链:
1、主流观测平台即插即用:OpenJudge 已完成对 Langfuse 和 LangSmith 的深度适配。开发者可以直接在这些平台上调用 OpenJudge 的高质量评分器,实现从生产环境监控到自动化评估的无缝衔接。
2、驱动模型训练进化:OpenJudge 已经完成和 verl、trinity-rft 的适配,评测器生成的评估信号将直接转化为模型微调的奖励信号,确保 Agent 的进化方向与业务指标实现像素级对齐。
3、低成本嵌入现有流水线:通过标准化的模块设计,OpenJudge 能够轻松对接企业现有的 CI/CD 流水线或数据处理链路,大幅降低评测体系的建设与维护成本。
为进一步降低开发门槛,我们计划集成 AgentScope 等主流 Agent 开发框架。这将支持开发者在 Agent 的构建阶段即引入评测,实现“边开发、边评测、边优化”的高效循环。
下面我们以电商智能客服 Agent 的订单查询业务为例,演示如何通过评测驱动的方式持续优化 Agent 能力。
场景背景
OpenJudge
某电商公司开发了一个智能客服 Agent,专门处理用户的订单查询需求:
查询物流状态
预计到达时间
处理用户因物流问题产生的焦虑情绪
Agent 可调用的工具⬇️
TOOL_DEFINITIONS = [{"name": "query_order", "description": "查询订单状态和物流信息", "parameters": {"order_id": "str"}},{"name": "query_logistics", "description": "查询详细物流轨迹", "parameters": {"order_id": "str"}},{"name": "estimate_delivery", "description": "预估送达时间", "parameters": {"order_id": "str"}},]
我们的进化路径⬇️
1、标准化筑基:利用 OpenJudge 丰富的预置评测器,快速补齐基础能力短板,让应用达到 80 分。
2、业务化进阶:通过构造场景专属评测器,注入专家经验,打造满分级的垂直领域应用 。
此阶段的目标是快速定位 Prompt 缺陷与工具调用逻辑的硬伤
评测方案包括两部分:
1、评测维度:一个合格的订单助手必须在相关性、真实性(防幻觉)和工具选择三个维度上表现稳健。
2、维度权重:每个评测维度的重要程度。
以下表格是一个示例:
制定评测方案后,可以收集当前版本 Agent 的回复,构建测试集,来量化评估当前 Agent 效果怎么样。你可以设置一个 Agent 合格的阈值,来帮助你设置 milestone。
以下是测试样本的示例 ⬇️
##response中当前版本Agent的回答dataset = [{"query": "我的订单 ORD123456 到哪了?", "response": "您好!您的订单 ORD123456 已到达北京分拨中心,预计明天送达。", "context": "订单 ORD123456:已到达北京分拨中心,预计明天到达。", "tool_definitions": TOOL_DEFINITIONS, "tool_calls": [{"name": "query_order", "arguments": {"order_id": "ORD123456"}}]},{"query": "订单 ORD789 什么时候能到?我等了好几天了!", "response": "您的订单预计明天到达。", "context": "订单 ORD789:运输中,预计后天到达。", "tool_definitions": TOOL_DEFINITIONS, "tool_calls": [{"name": "estimate_delivery", "arguments": {"order_id": "ORD789"}}]}, # 编造信息{"query": "帮我看看 ORD456 的物流轨迹", "response": "好的,您的订单物流轨迹如下:1月10日发货 → 1月11日到达中转站 → 1月12日派送中。", "context": "订单 ORD456 预计明天到达。", "tool_definitions": TOOL_DEFINITIONS, "tool_calls": [{"name": "estimate_delivery", "arguments": {"order_id": "ORD456"}}]},]
✅ step3: 执行评测
利用OpenJudge 的GradingRunner 开启并发评测。你可以配置 WeightedSumAggregator 来计算综合得分 ,以下是代码 Demo。
import asynciofrom openjudge.models import OpenAIChatModelfrom openjudge.graders.common.relevance import RelevanceGraderfrom openjudge.graders.common.hallucination import HallucinationGraderfrom openjudge.graders.agent.tool.tool_selection import ToolSelectionGraderfrom openjudge.models.schema.prompt_template import LanguageEnumfrom openjudge.runner import GradingRunnerfrom openjudge.runner.aggregator import WeightedSumAggregatorfrom openjudge.analyzer.statistical import DistributionAnalyzerTOOL_DEFINITIONS = [{"name": "query_order", "description": "查询订单状态和物流信息", "parameters": {"order_id": "str"}}, {"name": "query_logistics", "description": "查询详细物流轨迹", "parameters": {"order_id": "str"}}, {"name": "estimate_delivery", "description": "预估送达时间", "parameters": {"order_id": "str"}}]##response中当前版本Agent的回答dataset = [{"query": "我的订单 ORD123456 到哪了?", "response": "您好!您的订单 ORD123456 已到达北京分拨中心,预计明天送达。", "context": "订单 ORD123456:已到达北京分拨中心,预计明天到达。", "tool_definitions": TOOL_DEFINITIONS, "tool_calls": [{"name": "query_order", "arguments": {"order_id": "ORD123456"}}]},{"query": "订单 ORD789 什么时候能到?我等了好几天了!", "response": "您的订单预计明天到达。", "context": "订单 ORD789:运输中,预计后天到达。", "tool_definitions": TOOL_DEFINITIONS, "tool_calls": [{"name": "estimate_delivery", "arguments": {"order_id": "ORD789"}}]}, # 编造信息{"query": "帮我看看 ORD456 的物流轨迹", "response": "好的,您的订单物流轨迹如下:1月10日发货 → 1月11日到达中转站 → 1月12日派送中。", "context": "订单 ORD456 预计明天到达。", "tool_definitions": TOOL_DEFINITIONS, "tool_calls": [{"name": "estimate_delivery", "arguments": {"order_id": "ORD456"}}]},]async def main():## step1: 初始化裁判员模型,size越大的模型一般评测能力也越强model = OpenAIChatModel(model="qwen3-max")## step2: 声明使用哪些评测器grader_configs = {"relevance": {"grader": RelevanceGrader(model=model, language=LanguageEnum.ZH), "mapper": {"query": "query", "response": "response"}}, "hallucination": {"grader": HallucinationGrader(model=model, language=LanguageEnum.ZH), "mapper": {"query": "query", "response": "response", "context": "context"}}, "tool_selection": {"grader": ToolSelectionGrader(model=model, language=LanguageEnum.ZH), "mapper": {"query": "query", "tool_definitions": "tool_definitions", "tool_calls": "tool_calls"}}}## step3: 设置评测器的权重aggregator = WeightedSumAggregator(name="overall_score", weights={"relevance": 0.3, "hallucination": 0.4, "tool_selection": 0.3})## step4: 初始化GradingRunner,并且执行评测runner = GradingRunner(grader_configs=grader_configs, aggregators=[aggregator], max_concurrency=5)## 并发度results = await runner.arun(dataset)## step5: 利用Analyzer产出评测报告analyzer = DistributionAnalyzer()relevance_stats = analyzer.analyze(dataset, results["relevance"]); hallucination_stats = analyzer.analyze(dataset, results["hallucination"])tool_selection_stats = analyzer.analyze(dataset, results["tool_selection"]); overall_stats = analyzer.analyze(dataset, results["overall_score"])stats_list = [("综合评分", overall_stats), ("相关性", relevance_stats), ("幻觉检测", hallucination_stats), ("工具选择", tool_selection_stats)]print("\n" + "=" * 70 + "\n评测报告\n" + "=" * 70 + f"\n{'各个维度得分':<15} | {'平均分':>10}\n" + "-" * 30)for name, stats in stats_list: print(f"{name:<15} | {stats.mean:10.2f}")asyncio.run(main())
评测报告示例 ⬇️
======================================================================评测报告======================================================================各个维度得分 | 平均分------------------------------综合评分 | 3.90相关性 | 5.00幻觉检测 | 3.00工具选择 | 4.00------------------------------各个测试用例得分【测试用例 1】我的订单 ORD123456 到哪了?├─ 相关性: 5.0/5├─ 幻觉检测: 5.0/5├─ 工具选择: 5.0/5└─ 综合评分: 5.00/5【测试用例 2】订单 ORD789 什么时候能到?我等了好几天了!├─ 相关性: 5.0/5├─ 幻觉检测: 2.0/5├─ 工具选择: 5.0/5└─ 综合评分: 3.80/5【测试用例 3】帮我看看 ORD456 的物流轨迹├─ 相关性: 5.0/5├─ 幻觉检测: 2.0/5├─ 工具选择: 2.0/5└─ 综合评分: 2.90/5
基于各个维度评测,结果我们可以发现目前版本的不足:幻觉严重(平均分3分)和工具选择(平均分3.67)。
相关性是基本达标的,所以下一步优化的重点:
如果想进一步分析具体 case,可以继续分析每个测试用例的具体得分。
优化后重新评测,直到综合评分稳定在 4 分以上,再进入下一阶段。(4分只是作为演示用,可以设置合适的阈值。)
当基础能力达标后,通用的指标已无法捕捉垂直业务的“隐性缺陷”,例如同理心和预期管理。
为什么需要场景专属评测
预置评测器是面向通用场景构建的,能够发现基础能力的缺失(相关性、幻觉、工具调用),如果预置评测器没有覆盖场景特有的需求,就需要构建场景专属的评测器。
例如,在订单查询场景中,用户常因物流延迟产生焦虑情绪:
Agent 是否识别了用户情绪?
Agent 是否表达了同理心?
Agent 是否给出了明确预期来缓解焦虑?
所以需要构建处理用户情绪的评测器,来评估Agent安抚用户情绪的能力。
方案1:零样本生成业务准则
场景:既无标准也无数据,需要快速建立第一道自动化防线。
即使在既无标准也无数据的冷启动阶段,你只需输入业务描述,OpenJudge 即可自动提炼出量化的评测准则。
本例中处理情绪问题,给出一个示例:"电商智能客服主要处理订单查询业务(物流状态、预计到达时间),聚焦在处理用户的情绪问题."
import asynciofrom openjudge.generator.simple_rubric import SimpleRubricsGenerator, SimpleRubricsGeneratorConfigfrom openjudge.models import OpenAIChatModelfrom openjudge.graders.schema import GraderModefrom openjudge.models.schema.prompt_template import LanguageEnumasync def main():# 第一步:配置 Simple Rubric Generatorconfig = SimpleRubricsGeneratorConfig(grader_name="order_query_emotion_grader", model=OpenAIChatModel(model="qwen3-max"),grader_mode=GraderMode.POINTWISE, language=LanguageEnum.ZH,task_description="电商智能客服主要处理订单查询业务(物流状态、预计到达时间),聚焦在处理用户的情绪问题.",min_score=1, max_score=3)# 第二步:生成 Gradergenerator = SimpleRubricsGenerator(config)grader = await generator.generate(dataset=[], sample_queries=[])# 第三步:查看生成的 Rubricsprint("=" * 70 + "\n阶段二:生成的情绪处理 Rubrics\n" + "=" * 70)print(grader.kwargs.get("rubrics"))# 第四步:评估测试test_cases = [{"query": "我的订单等了一周还没到,怎么回事?!", "response": "非常理解您焦急的心情,让您等这么久真的很抱歉!我立即帮您查询:您的订单目前已到达本市配送站,预计今天下午3点前送达。如有任何问题,我会第一时间跟进处理。"}, {"query": "我的订单等了一周还没到,怎么回事?!", "response": "您的订单在配送中。"}] # 优秀回复:识别情绪 + 同理心 + 明确信息 | 较差回复:忽略情绪,机械回复print("\n" + "=" * 70 + "\n情绪处理 Grader 评估结果\n" + "=" * 70)for i, case in enumerate(test_cases):result = await grader.aevaluate(query=case["query"], response=case["response"])print(f"\n【测试 {i+1}】\n 用户: {case['query']}\n 客服: {case['response'][:60]}...\n 评分: {result.score}/3\n 原因: {result.reason[:150]}...")asyncio.run(main())
生成的评测准则示例 ⬇️
1. 情绪安抚有效性:回答是否恰当识别并缓解用户的情绪(如焦虑、不满),使用共情语言或安抚策略2. 信息准确性:回答中关于物流状态或预计到达时间的信息是否准确、基于事实且与订单实际情况一致3. 问题解决完整性:回答是否全面回应了用户关于订单查询的核心需求(包括物流状态和预计到达时间)4. 响应及时性与效率:回答是否简洁明了,在不过度冗长的前提下迅速提供关键信息5. 语言专业性与礼貌度:回答是否使用礼貌、专业的客服语言,避免引发用户进一步负面情绪
可以构造几条测试数据,验证刚刚生成的评测器是否有效。
import asynciofrom openjudge.generator.simple_rubric import SimpleRubricsGenerator, SimpleRubricsGeneratorConfigfrom openjudge.models import OpenAIChatModelfrom openjudge.graders.schema import GraderModefrom openjudge.models.schema.prompt_template import LanguageEnumasync def main():# 第四步:评估测试test_cases = [{"query": "我的订单等了一周还没到,怎么回事?!", "response": "非常理解您焦急的心情,让您等这么久真的很抱歉!我立即帮您查询:您的订单目前已到达本市配送站,预计今天下午3点前送达。如有任何问题,我会第一时间跟进处理。"}, {"query": "我的订单等了一周还没到,怎么回事?!", "response": "您的订单在配送中。"}] # 优秀回复:识别情绪 + 同理心 + 明确信息 | 较差回复:忽略情绪,机械回复print("\n" + "=" * 70 + "\n情绪处理 Grader 评估结果\n" + "=" * 70)for i, case in enumerate(test_cases):result = await grader.aevaluate(query=case["query"], response=case["response"])print(f"\n【测试 {i+1}】\n 用户: {case['query']}\n 客服: {case['response'][:60]}...\n 评分: {result.score}/3\n 原因: {result.reason[:150]}...")asyncio.run(main())
预期结果 ⬇️
【测试 1】用户: 我的订单等了一周还没到,怎么回事?!客服: 非常理解您焦急的心情,让您等这么久真的很抱歉!我立即帮您查询:您的订单目前已到达本市配送站,预计今天下午3点前送达。如有...评分: 3.0/3原因: 该回答在情绪安抚方面表现出色,使用了‘非常理解您焦急的心情’‘真的很抱歉’等共情语言,有效缓解用户焦虑;信息准确性高,明确说明订单已到达本市配送站并给出具体送达时间(今天下午3点前);问题解决完整,同时回应了物流状态和预计到达时间两个核心需求;回答简洁高效,未包含冗余信息;语言专业且礼貌,整体语气诚...【测试 2】用户: 我的订单等了一周还没到,怎么回事?!客服: 您的订单在配送中。...评分: 1.0/3原因: 该回答在多个评估维度上表现不足:1)情绪安抚有效性差,未识别用户因等待一周未收货而产生的焦虑或不满,缺乏共情语言;2)信息准确性低,仅称“在配送中”但未提供具体物流状态、承运商、运单号或预计到达时间,无法验证是否与实际情况一致;3)问题解决不完整,未回应用户关于‘怎么回事’和‘预计何时到’的核心诉求...
评测器验证有效,可以用在Agent迭代过程中了。
方案2:小样本专家经验转化为业务准则
场景:业务运行一段时间后,积累了少量人工审核数据(10+条),发现通用准则无法覆盖垂直业务的“隐性规则”
实现方式:提供少量典型正确/错误示例,OpenJudge 能够识别业务特有的评价偏好,实现从“人工抽检”到“全量自动化评测”的跃迁。
价值:大幅降低人力成本,消除人工标准不一带来的误差。
labeled_dataset = [# 高分样本:情绪处理到位{"query": "订单等了10天还没到,我要投诉!","response": "非常抱歉让您等了这么久,完全理解您的不满!我立即查询:您的订单因天气原因在中转站滞留,目前已恢复运输,预计明天送达。我已帮您标记优先配送,如明天未收到请随时联系我,我会亲自跟进处理。","label_score": 5, # 满分:识别情绪+道歉+解释原因+明确预期+后续方案},{"query": "快递到哪了?急用!","response": "理解您着急的心情!您的快递目前在派送中,预计今天下午2点前送达,派送员电话138xxxx。如有特殊需求可直接联系派送员。","label_score": 5, # 满分:识别情绪+共情+具体信息+解决方案},# 中等样本:信息正确但缺乏情绪处理{"query": "我的订单怎么还没到?等了好几天了!","response": "您的订单预计后天到达。","label_score": 2, # 低分:完全忽略用户情绪},{"query": "物流三天没更新,是不是丢了?","response": "您好,快递没有丢,正在运输中,请耐心等待。","label_score": 3, # 中等:回应了担忧但语气生硬},# 低分样本:错误或敷衍{"query": "订单ORD999到哪了?等一周了!","response": "在配送中。","label_score": 1, # 低分:敷衍,忽略情绪},# ... 更多标注数据(建议10+条数据)]
import asynciofrom openjudge.generator.iterative_rubric.generator import IterativeRubricsGenerator, IterativePointwiseRubricsGeneratorConfigfrom openjudge.generator.iterative_rubric.query_rubric_generator import POINTWISE_EVALUATION_TEMPLATEfrom openjudge.models import OpenAIChatModelfrom openjudge.models.schema.prompt_template import LanguageEnum# 标注数据集(简化示例,实际建议50-100条)labeled_dataset = [{"query": "订单等了10天还没到,我要投诉!", "response": "非常抱歉让您等了这么久,完全理解您的不满!您的订单因天气原因滞留,目前已恢复运输,预计明天送达。我已帮您标记优先配送。", "label_score": 5},{"query": "我的订单怎么还没到?等了好几天了!", "response": "您的订单预计后天到达。", "label_score": 2},{"query": "订单ORD999到哪了?等一周了!", "response": "在配送中。", "label_score": 1},{"query": "为什么物流一直显示在揽收?", "response": "抱歉给您带来困扰!经查询,您的包裹因仓库爆仓暂时滞留,预计今天发出,明天更新物流。我会持续关注,有进展第一时间通知您。", "label_score": 5},]async def main():# 第一步:配置 Iterative Rubric Generatorconfig = IterativePointwiseRubricsGeneratorConfig(grader_name="order_query_emotion_grader_v2", model=OpenAIChatModel(model="qwen3-max"),custom_evaluation_prompt=POINTWISE_EVALUATION_TEMPLATE, min_score=1, max_score=5,query_specific_generate_number=1, enable_categorization=True, categories_number=5, language=LanguageEnum.ZH)# 第二步:从标注数据生成 Gradergenerator = IterativeRubricsGenerator(config)grader = await generator.generate(labeled_dataset)# 第三步:查看学习到的 Rubricsprint("=" * 70, "阶段三:从标注数据学习到的 Rubrics", "=" * 70, grader.kwargs.get("rubrics"), sep="\n")# 第四步:评估新样本test_cases = [{"query": "订单5天没动静了,能帮我查查吗?有点担心", "response": "理解您的担心!我立即帮您查询:您的包裹目前在XX中转站,因近期单量较大稍有延迟,预计后天送达。如有任何异常我会主动联系您。"}]print("\n" + "=" * 70, "Iterative Rubric Grader 评估结果", "=" * 70, sep="\n")for i, case in enumerate(test_cases):result = await grader.aevaluate(query=case["query"], response=case["response"])print(f"\n【测试 {i+1}】", f" 用户: {case['query']}", f" 客服: {case['response']}", f" 评分: {result.score}/5", f" 原因: {result.reason[:200]}...", sep="\n")asyncio.run(main())
======================================================================从标注数据学习到的 Rubrics======================================================================Rubric 1:Theme: 共情与情绪回应- Tip1: 主动识别并回应用户的情绪(如焦急、不满),表达真诚的理解或歉意- Tip2: 避免形式化、敷衍或冷漠的语气,确保语言体现尊重与关怀- Tip3: 在解释问题或提供信息前,优先安抚用户情绪以建立信任Rubric 2:Theme: 问题解释的清晰度与具体性- Tip1: 明确说明导致延迟或异常的具体原因(如天气、仓库爆仓、系统故障等),避免模糊表述(如“系统延迟”“正在处理”)- Tip2: 确保解释真实、合理且与用户问题直接相关,不推诿责任或提供错误信息- Tip3: 在无法确定原因时,应坦诚说明并承诺后续跟进,而非猜测或误导Rubric 3:Theme: 物流信息的准确性与完整性- Tip1: 提供当前订单/包裹的准确状态(如“已出库”“正在派送中”)、实时位置(如所在城市)和承运商信息- Tip2: 给出明确、可信的预计送达时间(尽可能精确到小时或日期),避免笼统表述(如“很快”“今天”)- Tip3: 包含关键辅助信息,如派送员联系方式、物流单号或查询链接,便于用户自主追踪Rubric 4:Theme: 解决方案的主动性与可行性- Tip1: 主动提出具体、可操作的补救措施(如加急处理、补偿选项、客服直连等),而非仅泛泛承诺“尽快处理”- Tip2: 说明已采取的实际行动(如“已标记优先配送”“已联系快递”),增强用户信心- Tip3: 提供进一步协助的渠道(如客服联系方式、自助查询方式),支持用户持续跟进Rubric 5:Theme: 服务承诺与后续跟进保障- Tip1: 明确承诺后续进展通知机制(如“有更新将第一时间告知”),体现持续负责态度- Tip2: 设定清晰的时间预期(如“今天发出,明天更新”),并确保其与所采取的行动一致- Tip3: 在无法立即解决时,仍提供阶段性反馈计划,避免让用户处于信息真空
可以看出基于场景标注数据生成的评测准则,更加适配到具体业务场景。上面代码的评测结果 ⬇️
【测试 1】用户: 这个快递怎么这么慢?我还等着用呢!客服: 查询中,稍等。评分: 1.0/5原因: 该回答严重不符合所有评估标准。在Rubric 1方面,未识别用户焦急情绪(“我还等着用呢!”),未表达共情、理解或歉意,语气敷衍冷漠。在Rubric 2方面,未提供任何关于延迟原因的解释,仅以‘查询中,稍等’搪塞,属于模糊且无实质信息的回应。在Rubric 3方面,未提供任何物流状态、位置、承运商或预计送达时间等关键信息。在Rubric 4方面,未提出任何主动解决方案或补救措施,也未说明已采取的行...
生成的评测器能够正确评估样本,并且会给出原因解释(每个rubric是否满足),帮助Agent迭代。
方案3:训练专属 Judge 模型
场景:追求极致的评测准确率、更低的推理成本,或处于强监管行业需要私有化部署评测模型。
实现方式:支持 SFT(监督微调) 和 RL(强化学习) 模式,在海量行业数据上训练专属评测基座。
价值:构建企业技术护城河。专属 Judge 模型能识别竞争对手难以察觉的细微错误,且评测信号可直接转化为 Agent 进化的 Reward(奖励)信号。
import jsonimport pandas as pd## 以训练BT模型为例# 1️⃣ 准备训练数据chosen = json.dumps([{"role": "user", "content": "What are the benefits of exercise?"}, {"role": "assistant", "content": "Regular exercise improves cardiovascular health..."}])rejected = json.dumps([{"role": "user", "content": "What are the benefits of exercise?"}, {"role": "assistant", "content": "Exercise is good for you."}])df = pd.DataFrame({"chosen": [chosen], "rejected": [rejected]})df.to_parquet("train.parquet")#2️⃣ 执行训练流程# cd cookbooks/training_judge_model/bradley-terry# bash run_bt_rm.sh#3️⃣ 训练后续流程请参考文档:https://modelscope.github.io/OpenJudge/building_graders/training_judge_models/
通过 OpenJudge,你可以将“凭感觉调优”转变为“用数据驱动迭代”。它不仅是评测工具,更是一套让 AI 应用从“Demo可行”走向“企业级可靠”的工程化范式。
Agent 的下半场,属于能持续进化的系统。 现在就去 GitHub 体验 OpenJudge,开启你的量化迭代之旅吧~
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业
2026-01-23
Qwen3-TTS全家桶正式全面开源,一站式解锁多语言语音生成全能力
2026-01-22
Anthropic正式开源了Claude的「灵魂」
2026-01-22
阿里又放大招了!AgentScope最适合做本地智能助手的智能体框架
2026-01-22
10B参数挑战200B!阶跃星辰开源多模态"小核弹"Step3-VL-10B
2026-01-22
抓个OpenAutoGLM来帮我做24小时在线的运维
2026-01-21
10B击败200B!阶跃星辰10B视觉语言SOTA模型开源
2026-01-21
8B模型媲美Claude?DeepResearch终于本地化了:拖入PDF,自动生成万字研报
2026-01-21
刷新 Google AlphaEvolve 进化结果,百度开源 Agent 开发框架 LoongFlow
2025-11-19
2025-10-27
2025-10-27
2025-12-22
2025-12-10
2025-11-17
2025-11-07
2025-10-29
2025-12-23
2026-01-06
2026-01-21
2026-01-21
2026-01-20
2026-01-16
2026-01-02
2025-12-24
2025-12-22
2025-11-12