swarms 多智能体评审团:用 CouncilAsAJudge 实现多维质量评估与共识决策
swarms 多智能体评审团用 CouncilAsAJudge 实现多维质量评估与共识决策【免费下载链接】swarmsThe Enterprise-Grade Multi-Agent Orchestration Framework. Website: https://swarms.ai项目地址: https://gitcode.com/GitHub_Trending/swar/swarms导读本文介绍 swarms 框架中CouncilAsAJudge这一评审团模式让多个智能体扮演不同维度的评委并行对同一份任务回复进行多维度评审再由聚合器Aggregator汇总成一份结构化技术报告。该模式适用于质量管控、同行评审Peer Review和共识构建场景也常被用来搭建自动评测管线。读完本文你将掌握评审团的六维评估体系、并行执行与聚合原理、output_type输出格式控制以及如何用 Hugging Face 基准数据集批量评测智能体回复质量。评审团模式是什么评审团Council模式的核心思想是单一智能体的判断往往带有主观偏差而让多个智能体从不同视角独立评审同一份输出再对结果进行综合可以获得更全面、更可靠的评估结论。在 swarms 中这一模式的入口位于 swarms/structs/council_as_judge.py对外暴露的类名为CouncilAsAJudge并已在 swarms/structs/init.py 中导出因此可直接通过from swarms.structs import CouncilAsAJudge使用。配套的实战示例集中在 examples/multi_agent/council/judges/ 目录其中 README 将其定位为多智能体评估与决策的评审团模式演示。从源码结构看一个完整的评审流程包含两个层次多个维度评委Judge Agents每个评委专职负责一个评估维度一个聚合器Aggregator Agent把各维度的评审意见合成为综合技术报告。这种多评委并行 单一聚合的设计既保证了评估视角的多样性又通过聚合环节避免了碎片化输出。六维评估体系每个评委专注一个维度CouncilAsAJudge内置了六个固定评估维度定义在 swarms/structs/council_as_judge.py 的EVAL_DIMENSIONS字典中维度评估目标accuracy事实准确性交叉核对权威来源、识别过时信息、检测技术性错误、发现内部矛盾、评估来源可信度helpfulness实用价值与用户意图的匹配度、方案可行性、必备上下文是否齐备、是否主动覆盖边界情况、是否有风险提示harmlessness安全伦理检测刻板印象与偏见、潜在滥用场景、危险行为引导、内容适龄性、是否有安全免责声明coherence结构完整性信息层级、话题句与过渡衔接、术语一致性、论证结构与推理流畅度conciseness表达效率冗余信息、赘语、信息密度、是否聚焦关键点instruction_adherence指令遵循度是否覆盖全部要求、遵守约束、输出格式合规、范围是否越界每个评委的 System Prompt 由judge_system_prompt()生成见 swarms/structs/council_as_judge.py统一要求只聚焦自己负责的维度、引用回复原文中的具体片段、给出可执行的改进建议。在_create_judges()swarms/structs/council_as_judge.py中框架会为每个维度创建一个独立的Agent命名形如accuracy_judge、coherence_judge并开启dynamic_temperature_enabled以增加评审的多样性。并行执行原理线程池调度六路评审run()方法swarms/structs/council_as_judge.py是整个评估流程的核心执行步骤如下清空会话历史把待评估任务写入Conversation为六个维度各构造一个任务—评委组合使用ContextThreadPoolExecutor来自 swarms/telemetry/otel.py并行提交六个维度的评审并通过as_completed收集结果调用聚合器生成最终报告再按output_type格式化输出。关于并发度max_workers的默认值并非写死的数字而是在构造函数中动态计算max(1, int(os.cpu_count() * 0.75))见 swarms/structs/council_as_judge.py即默认使用 CPU 核心数 75% 的线程数。当然你也可以在实例化时显式传入max_workers覆盖该默认值。每个维度评审的提示词由build_judge_prompt()构造swarms/structs/council_as_judge.py模板中会嵌入维度名、对应的评估关注点、--- BEGIN TASK ---到--- END TASK ---之间的任务原文以及--- BEGIN RESPONSE ---到--- END RESPONSE ---之间的待评审回复。由于该函数使用lru_cache缓存相同输入会直接命中缓存避免重复构造大段提示词缓存容量由构造参数cache_size控制默认 128。评审过程中的每一步都被纳入Conversation历史记录最终调用history_output_formatter输出——这也解释了为什么同一个run()调用可以返回不同形态的结果。聚合器把六份评审合成一份报告六个维度的评审结果会被build_aggregation_prompt()swarms/structs/council_as_judge.py拼接成一个多维度分析输入交给聚合器智能体。聚合器的 System Prompt 由aggregator_system_prompt()提供swarms/structs/council_as_judge.py要求输出包含三部分执行摘要Executive Summary关键优势与不足、需要立即处理的关键问题、总体评估详细分析Detailed Analysis跨维度模式、具体示例及其影响、技术影响评估改进建议Recommendations按影响排序的改进方向、具体技术建议、落地考量。聚合器强调对输入的评审意见做综合而非新增分析避免在汇总阶段引入新的主观判断保证报告是对六位评委意见的忠实合成。输出类型final / all / conversation 等格式控制output_type参数决定了run()的返回形态底层由 swarms/utils/history_output_formatter.py 实现。以下是常用取值取值返回内容源码分支final默认仅返回聚合器生成的最终报告内容conversation.get_final_message_content()all/string/str返回完整会话字符串含用户任务、各维度评审、最终报告conversation.get_str()conversation见下文说明—list消息字典列表return_messages_as_list()json会话 JSON 字符串to_json()yamlYAML 格式的会话yaml.safe_dump(...)dict会话字典to_dict()xmlXML 格式会话to_xml_string(...)需要说明官方示例中出现过output_typeconversation见 council_judge_custom_example.py但从 history_output_formatter.py 的实际分支看格式化器支持的关键字为list、dict/dictionary、string/str、final/last、json、all、yaml、dict-all-except-first、list-final、str-all-except-first、dict-final、xml传入不支持的取值会抛出ValueError: Invalid type。final是CouncilAsAJudge构造函数的默认值见 swarms/structs/council_as_judge.py。此外还有两个与模型相关的参数值得关注random_model_nameTrue时reliability_check()会调用set_random_models_for_agents()来自 swarms/structs/ma_utils.py为评审随机分配模型增强视角多样性judge_agent_model_name与aggregation_model_name则允许你分别指定评委与聚合器使用的模型。从简单到复杂四个可直接运行的示例judges目录下的示例覆盖了从开箱即用到自定义配置再到基准评测的完整梯度。1. 最简用法基础评审council_judge_basic.py 与 council_of_judges_eval.py 展示了最基本的调用方式构造一个金融领域的base_agent传入CouncilAsAJudge直接run()用户问题from swarms.structs.agent import Agent from swarms.structs.council_as_judge import CouncilAsAJudge user_query How can I establish a ROTH IRA to buy stocks and get a tax break? What are the criteria? base_agent Agent( agent_nameFinancial-Analysis-Agent, system_promptYou are a financial expert helping users understand and establish ROTH IRAs., model_nameclaude-opus-4-20250514, max_loops1, max_tokens16000, ) panel CouncilAsAJudge(base_agentbase_agent) results panel.run(user_query) print(results)这里的base_agent用于在构造时提供底层能力构造函数签名定义在 swarms/structs/council_as_judge.py而六个维度评委与聚合器仍由框架内部创建。2. 标准示例六维质量评估council_judge_example.py 演示了完整的任务回复评估。它把待评审内容以Task: ... Response: ...的结构拼进提示词并显式指定模型与并发数from swarms.structs.council_as_judge import CouncilAsAJudge council CouncilAsAJudge( nameQuality Evaluation Council, descriptionEvaluates response quality across multiple dimensions, model_namegpt-5.4, max_workers4, ) task_with_response Task: Explain the concept of machine learning to a beginner. Response: Machine learning is a subset of artificial intelligence that enables computers to learn and improve from experience without being explicitly programmed. ... result council.run(tasktask_with_response) print(result)该示例在注释中明确了六大评估维度accuracy准确性、helpfulness有用性、harmlessness无害性、coherence连贯性、conciseness简洁性与 instruction adherence指令遵循度。3. 多任务类型技术讲解 / 创意写作 / 问题求解council_judge_complex_example.py 把评审场景扩展到三类任务全部使用output_typeall以观察完整会话技术讲解用通俗语言解释区块链evaluate_technical_response创意写作撰写机器人学画画的短故事evaluate_creative_response问题求解给出家庭减塑的分步方案evaluate_problem_solving_response。每个场景创建一个独立的评审团主函数串行执行并汇总每项的成功/失败状态。它适合用来验证评审团对不同回复风格的适配能力。4. 自定义配置三种输出与资源控制council_judge_custom_example.py 展示了三种典型配置# 只取最终聚合报告 council CouncilAsAJudge( nameFinal Output Council, model_namegpt-5.4, output_typefinal, max_workers2, ) # 返回完整会话 council CouncilAsAJudge( nameConversation Council, model_namegpt-5.4, output_typeconversation, max_workers3, ) # 资源受限环境单 worker、关闭随机模型 council CouncilAsAJudge( nameMinimal Workers Council, model_namegpt-5.4, output_typeall, max_workers1, random_model_nameFalse, )主函数会对字符串结果做 200 字符预览便于快速确认输出形态。该示例演示了max_workers控制并行度与random_model_name控制模型随机性两个关键旋钮的搭配方式。基准评测用 CouncilAsAJudge 构建自动评测管线council_judge_evaluation.py 是评测能力的完整实现它把评审团接入 Hugging Facedatasets对多个基准数据集自动评估评审团输出是否包含正确答案并持久化结果。支持的数据集与字段映射DATASET_CONFIGS声明了四个开箱即用的数据集数据集配置输入字段答案字段gsm8kmainquestionanswersquad无questionanswers.text[0]winogrande无sentenceanswercommonsense_qa无questionanswerKey字段提取逻辑在_get_input_text()与_get_correct_answer()中对未知数据集会退化为取第一个长度大于 10 的字符串字段作为输入和在answer、answers、label、target中查找答案找不到时抛出ValueError。判题逻辑_check_answer()实现了两类判题策略GSM8K 数值题用正则(?:the answer is|answer:)\s*(\d)从评审输出中抽取最终数值再与标准答案比对其他数据集对大小写不敏感直接判断标准答案是否出现在评审输出中子串匹配。断点续跑与结果持久化CouncilJudgeEvaluator在__init__中会创建evaluation_results目录可通过output_dir参数自定义结果保存在evaluation_results/evaluation_results.json。_load_or_create_results()支持加载已有结果继续评测若 JSON 文件损坏则记录loguru警告并重建。每个样本评测完毕后都会调用_save_results()增量落盘因此评测中途中断不会丢失已完成的样本。运行评测evaluator CouncilJudgeEvaluator() for dataset in [gsm8k, squad, winogrande, commonsense_qa]: results evaluator.evaluate_dataset( dataset_namedataset, splittest, num_samples10, # 限制样本数便于测试 ) print(fAccuracy: {results[accuracy]:.3f}) print(fCorrect answers: {results[correct_answers]}/{results[total_evaluated]}) print(fTotal time: {results[total_time]:.2f} seconds)evaluate_dataset()支持num_samples采样上限、save_results是否落盘等参数返回的字典包含dataset、split、num_samples、evaluations、correct_answers、total_evaluated、accuracy、total_time等指标。评测日志通过loguru输出逐样本的失败会被捕获并跳过不会中断整个批次。异常处理与可靠性保障CouncilAsAJudge定义了三层异常体系swarms/structs/council_as_judge.py异常触发场景EvaluationError整个评估流程失败基类DimensionEvaluationError单个维度的评审失败AggregationError聚合阶段失败此外reliability_check()swarms/structs/council_as_judge.py会在初始化时校验model_name与output_type非空否则抛出ValueErrorbuild_judge_prompt()对未知维度会抛出KeyError。单维度评审失败会在run()中被捕获并向上抛出DimensionEvaluationError确保问题可定位、可追踪。从测试侧看CouncilAsAJudge已被纳入框架级测试覆盖tests/structs/test_component_ids.py 会实例化CouncilAsAJudge()并校验其id以council-as-judge-前缀生成见 swarms/structs/council_as_judge.py 的generate_id(council-as-judge)同时 tests/telemetry/test_telemetry.py 与 tests/structs/test_swarm_router.py 也对其遥测与路由场景进行了引用验证。实践建议明确评估目标质量管控场景建议用output_typefinal直接拿到聚合报告需要审计完整评审过程时改用all保留全部会话记录。控制资源开销六维并行评审意味着同时发起多个模型调用在资源受限环境可设置max_workers1并关闭random_model_name避免并发压力。结合base_agent落地领域场景如金融问答ROTH IRA 示例通过base_agent注入领域 System Prompt让评审团更贴合业务上下文。用于自动评测管线参考CouncilJudgeEvaluator的模式将评审团接入 Hugging Face 数据集、增量落盘结果、按字段抽取答案并计算准确率即可低成本搭建基于 LLM 的评测基准。评审团模式的完整示例代码、核心实现与测试用例可分别查阅 examples/multi_agent/council/judges/、swarms/structs/council_as_judge.py 与 tests/structs/test_component_ids.py。【免费下载链接】swarmsThe Enterprise-Grade Multi-Agent Orchestration Framework. Website: https://swarms.ai项目地址: https://gitcode.com/GitHub_Trending/swar/swarms创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联
返回资讯列表 →