
CAMEL Self-Improving CoT 数据生成管线深度解析从 STaR 迭代精炼到工程化落地【免费下载链接】camel CAMEL: The first and the best multi-agent framework. Finding the Scaling Law of Agents. https://www.camel-ai.org项目地址: https://gitcode.com/GitHub_Trending/ca/camel本文以 CAMEL 开源仓库中的 self_improving_cot_generation.md 为骨架结合 self_improving_cot.py 源码、示例脚本 与单元测试系统讲解 CAMEL 如何通过「生成 → 评估 → 反馈精炼」的迭代循环蒸馏推理模型如 DeepSeek-R1产生高质量思维链Chain-of-Thought, CoT数据并用这些数据微调小参数 LLM 以增强其推理能力。读完本文你将掌握SelfImprovingCoTPipeline的完整参数语义、Agent 评估与奖励模型评估两种打分机制、动态批量处理与指数退避重试的底层实现以及一套可直接运行的 CoT 数据生成工程方案。一、为什么需要迭代式 CoT 管线随着 DeepSeek-R1、OpenAI o3-mini 等推理模型的问世业界验证了一条高效的推理能力迁移路径从推理模型中蒸馏 CoT 数据再用这些数据微调参数量更小的模型从而以更低成本获得更强的复杂推理与代码生成能力。但一次性one-shot的 CoT 生成往往产出不完整或次优的推理过程。CAMEL 给出的解法是自教推理Self-Taught ReasonerSTaR式的多步迭代循环源码 docstring 中明确注明该管线实现了 STaR 论文的方法生成Generate为问题生成一条初始推理轨迹reasoning trace评估Evaluate通过专门的评估 Agent 或奖励模型对轨迹打分并给出反馈精炼Refinereason agent 依据反馈改进推理轨迹。循环持续进行直到轨迹满足正确性、清晰度与完整性等质量阈值或在达到最大迭代次数后停止。每一轮迭代都让模型从上一轮的输出与评估中学习从而逐步逼近高质量推理过程。二、管线的三个核心组件从源码 self_improving_cot.py 的构造函数可以看出自改进管线由三个核心角色构成组件类型职责reason_agentChatAgent必填生成初始推理轨迹并在收到反馈后生成改进版本evaluate_agentChatAgent可选以批判性教师身份评估轨迹质量输出三维评分与文本反馈reward_modelBaseRewardModel可选提供数值化评分覆盖正确性、连贯性、复杂度、简洁度等维度其中reason_agent是唯一必填组件evaluate_agent与reward_model二选一即可驱动评估环节——两者都不提供时管线只生成初始轨迹而不做评估与迭代详见源码process_problem中if self.evaluate_agent or self.reward_model:的守卫逻辑。三、CoT 数据生成管线的核心环节3.1 初始轨迹生成reason_agent通过 REASONING_TEMPLATE 模板组织生成提示词Lets solve this step by step: Problem: {problem} 1. First, lets understand what were asked 2. Lets break this down into parts 3. Lets solve each part systematically 4. Finally, lets verify our solution {few_shot_examples} Please show your complete reasoning process.输入问题陈述problem可选提供 ground truthsolution引导推理方向可选few_shot_examples通过示例约束推理风格。输出一段逐步展开的推理内容作为可直接使用或进一步精炼的基础轨迹。CAMEL 也支持通过提示工程让非推理型 LLM 生成轨迹——这正是 self_improving_cot_example.py 中用ModelType.DEEPSEEK_CHAT搭配温度 0 配置做生成器的原因。3.2 轨迹评估Agent 评估 vs 奖励模型评估服务于两个目的发现弱点定位轨迹可改进之处与提供反馈指导精炼。源码evaluate_trace方法retry_on_error装饰实现了两条评估路径路径一Agent 评估evaluate_agent使用 EVALUATION_TEMPLATE 提示词从三个维度打分0–1Correctness正确性每一步逻辑是否严谨、能否正确求解问题Clarity清晰度推理是否易于理解、结构是否清晰Completeness完整性推理是否包含所有必要步骤。评估结果通过response_formatAgentTraceEvaluation强制为结构化 JSON见 AgentTraceEvaluation 数据模型correctness、clarity、completeness、feedback四个字段反馈文本能指出推理不清或答案错误等具体改进点比基于规则的匹配更通用、更灵活。路径二奖励模型评估当传入reward_model时管线内部会构造Evaluator(reward_modelreward_model)实现见 evaluator.py将「问题 轨迹」作为消息列表交给奖励模型打分若奖励模型返回单一分数则归一到{overall: score}若返回多维分数如 correctness、coherence、helpfulness则原样透传并自动生成反馈。测试 test_self_improving_cot_pipeline.py 中test_reward_model_single_score_evaluation与test_reward_model_multi_score_evaluation分别覆盖了这两种打分形态。示例脚本中还预留了NemotronRewardModelNVIDIA Nemotron-340B-Reward的接入方式可通过ModelType.NVIDIA_NEMOTRON_340B_REWARD启用。3.3 迭代精炼自改进循环process_problem中的循环逻辑完整实现了「反馈集成 → 推理改进 → 重新评估 → 阈值检查」四步反馈集成评估结果中的feedback作为改进依据——重写含糊部分、补齐缺失步骤、修正逻辑推理改进reason_agent基于 IMPROVEMENT_TEMPLATE 生成改进版轨迹模板同时注入问题、上一版轨迹与反馈文本Based on this feedback, generate an improved reasoning trace: Problem: {problem} {solution} Previous Trace: {trace} Feedback: {feedback} Generate a new, improved reasoning trace that addresses the feedback.重新评估改进版轨迹用同一套机制Agent 或奖励模型再次评估确认改进是否生效阈值检查满足质量阈值或达到max_iterations上限即终止。阈值检查逻辑由 _check_score_threshold 实现score_threshold为float时要求所有维度分数都 阈值score_threshold为dict时如{correctness: 0.8, coherence: 0.7}按维度逐项校验未指定的维度使用默认值 0反馈生成器 _generate_feedback 会自动列出未达标维度如 Need improvement in: correctness, clarity作为下一轮改进提示。每次迭代的轨迹与评估结果都会被记录为TraceIteration含iteration序号、轨迹文本与评估对象形成完整的improvement_history改进历史便于事后审计与数据筛选。四、管线初始化与参数详解SelfImprovingCoTPipeline的全部参数及其语义如下与源码 self_improving_cot.py 保持一致参数类型默认值说明reason_agentChatAgent必填负责生成与改进推理轨迹的 AgentproblemsList[Dict]必填待处理的问题字典列表必须含problem键可选id/type/solutionmax_iterationsint3最大改进轮数设为0则只生成初始轨迹、不做迭代score_thresholdfloat/Dict[str, float]0.7质量阈值浮点数作用于平均分字典按维度分别设阈值未指定维度默认0.7奖励模型路径或0Agent 路径rejection_sampling_nOptional[int]None拒绝采样候选数一次生成 N 条候选轨迹评估后择优见第六节evaluate_agentOptional[ChatAgent]None评估轨迹质量的 Agent为None且无奖励模型时不做评估reward_modelOptional[BaseRewardModel]None奖励模型为None时使用 Agent 自评估output_pathOptional[str]None结果输出文件路径为None时仅返回结果、不落盘few_shot_examplesOptional[str]None少样本示例文本注入生成提示词约束推理风格batch_sizeOptional[int]None并行处理批大小None时由BatchProcessor按资源动态决定默认 10max_workersOptional[int]None最大线程数None时根据 CPU/内存负载动态计算solution_patternstrr\\boxed{(.*?)}正则含一个捕获组从答案文本中提取最终答案trace_patternOptional[str]None从轨迹文本提取答案的正则为None时复用solution_pattern此外problems字典在进入处理前会经过 validate_problem_format 校验problem键必须存在且为字符串可选的id/type/solution字段类型不合法会抛出ValueError。完整可运行示例以下是 CAMEL 官方示例 self_improving_cot_example.py 的完整流程需先设置export DEEPSEEK_API_KEYimport json import os import time from camel.agents import ChatAgent from camel.configs import DeepSeekConfig from camel.datagen import SelfImprovingCoTPipeline from camel.models import ModelFactory from camel.types import ModelPlatformType, ModelType model ModelFactory.create( model_platformModelPlatformType.DEEPSEEK, model_typeModelType.DEEPSEEK_CHAT, model_config_dictDeepSeekConfig(temperature0).as_dict(), ) def main(): current_dir os.path.dirname(os.path.abspath(__file__)) with open(os.path.join(current_dir, gsm8k_dataset.json), r) as f: problems json.load(f) reason_agent ChatAgent( Please reason step by step, and put your final answer within \\boxed{}., modelmodel, ) evaluate_agent ChatAgent( You are a highly critical teacher who evaluates the students answers with a meticulous and demanding approach. ) # 可为不同维度设置不同阈值 score_threshold { correctness: 0.9, clarity: 0.9, completeness: 0.6, } # 或统一阈值score_threshold 0.9 pipeline SelfImprovingCoTPipeline( reason_agentreason_agent, evaluate_agentevaluate_agent, problemsproblems, output_pathself_improving_cot_output.json, max_iterations3, score_thresholdscore_threshold, ) results pipeline.generate(rationalizationFalse) print(fProcessed {len(results)} problems) if __name__ __main__: main()generate(rationalizationFalse)是管线入口内部通过asyncio事件循环驱动_batch_process_problems并行处理所有问题最终返回List[ProblemResult]的字典序列并在设置output_path时将结果写入文件。rationalizationTrue时改进环节会把 ground truth 一并注入提示词引导模型对照标准答案精炼。五、批量处理与 API 稳定性保障5.1 动态批量处理早期逐个串行生成 CoT 的尝试暴露出两大问题耗时不可扩展与API 请求瓶颈大量请求导致限速或偶发断连。CAMEL 因此引入并行BatchProcessor实现见 commons.py核心能力包括将任务切分为批次用ThreadPoolExecutor并发提交动态调整批大小按成功率与单批耗时调整——backoff_factor0.8用于失败时收缩success_factor1.2用于成功时扩张批大小被钳制在min_batch_size1与max_batch_size20之间资源感知CPU 使用率超过cpu_threshold80%、内存超过memory_threshold85%时自动缩减 worker 与批大小max_workers未指定时按 CPU 核心数与当前负载估算如负载高时取cpu_count // 4空闲时取cpu_count - 1每批结束后调用adjust_batch_size(batch_success, processing_time)并输出含批大小、worker 数、CPU/内存占用、平均耗时与错误率的进度日志。_batch_process_problems与_batch_evaluate_traces两个异步方法分别承担生成与评估阶段的并行调度as_completed收集结果时单条失败不会拖垮整批。5.2 指数退避重试即使有批处理LLM API 请求仍可能因网络波动或远端不稳定而失败。CAMEL 在camel.utils中提供retry_on_error装饰器commons.pydef retry_on_error(max_retries: int 3, initial_delay: float 1.0): def decorator(func): functools.wraps(func) def wrapper(*args, **kwargs): delay initial_delay for attempt in range(max_retries 1): try: return func(*args, **kwargs) except Exception as e: if attempt max_retries: raise time.sleep(delay) delay * 2 # 指数退避1s → 2s → 4s raise return wrapper return decoratorgenerate_reasoning_trace、evaluate_trace、improve_trace、generate_reasoning_trace_rejection均以retry_on_error()装饰任何瞬时错误都会按指数退避自动重试默认最多 3 次等待时间 1s、2s、4s 逐次翻倍保证生成/评估/精炼环节的稳定流转。六、模型切换与实时文件写入6.1 多模型调度为增强容错与连续性可向ChatAgent传入模型列表——当某个模型不可用时自动切换保持推理不中断。参考 self_improving_cot_example_with_r1.py需设置DEEPSEEK_API_KEY、FIREWORKS_API_KEY等环境变量from camel.models import ModelFactory from camel.types import ModelPlatformType, ModelType evaluate_model ModelFactory.create( model_platformModelPlatformType.DEFAULT, model_typeModelType.DEFAULT, ) # 通过多家服务商接入 DeepSeek-R1互为备份 reason_model_1 ModelFactory.create( model_platformModelPlatformType.DEEPSEEK, model_typeModelType.DEEPSEEK_REASONER, ) reason_model_2 ModelFactory.create( model_platformModelPlatformType.OPENAI_COMPATIBLE_MODEL, model_typeaccounts/fireworks/models/deepseek-r1, api_keyos.getenv(FIREWORKS_API_KEY), urlhttps://api.fireworks.ai/inference/v1, model_config_dict{max_tokens: 4096}, ) reason_agent ChatAgent( system_messageAnswer my question and give your final answer within \\boxed{}., model[reason_model_1, reason_model_2], )该示例还演示了「以 R1 为生成器 默认模型为评估器」的典型蒸馏配置以及max_iterations0时仅蒸馏不迭代的高吞吐模式配合GET_REASONING_CONTENTtrue提取推理内容。6.2 原子化 JSON 实时更新为避免进程中断导致全量结果丢失管线采用边处理边落盘策略每个问题处理完成后立即加锁threading.Lock更新output_path文件。写入通过 safe_write_json 的两段式原子操作完成def safe_write_json(self, file_path, data): temp_path file_path .tmp with open(temp_path, w) as f: json.dump(data, f, indent2, ensure_asciiFalse) os.replace(temp_path, file_path)先写.tmp临时文件再os.replace原子替换从根本上杜绝部分写入损坏输出文件同时 clean_json 会把 NaN/Inf 等非法浮点值归一为None保证 JSON 始终合法可读。每条问题结果以ProblemResult结构id、type、problem、solution、final_trace、agent_evaluate_success、boxed_answer_success、improvement_history写入data[traces]形成可直接用于 SFT 的数据集。七、拒绝采样与答案一致性校验对应文档 roadmap 中集成拒绝采样的规划源码已实现该能力rejection_sampling_nN时generate_reasoning_trace_rejection会一次生成 N 条候选轨迹若底层模型配置支持n参数则单次调用返回多个候选否则循环采样逐条评估并计算平均分优先选择达标且得分最高的轨迹若无候选达标则回退到平均分最高的候选。此外process_problem 收尾时会用solution_pattern/trace_pattern正则默认\boxed{(.*?)}分别从标准答案与最终轨迹中提取最终答案做字符串比对产出boxed_answer_success布尔标志——这是判断轨迹最终答案是否与 ground truth 一致的硬性校验与评估得分agent_evaluate_success互为补充。八、测试与验证仓库为管线提供了完整的单元测试覆盖test/datagen/test_self_improving_cot_pipeline.py验证了以下关键行为初始化默认值max_iterations3、score_threshold0.7与批参数透传generate_reasoning_trace会先reset()再step()Agent 评估正确解析correctness/clarity/completeness/feedback四字段奖励模型单分归一到overall与多分维度原样透传两种路径improve_trace的反馈注入行为完整process_problem流程与improvement_history记录字典形式score_threshold的逐维度判定。这些测试既是行为契约也方便你在接入自定义评估/奖励模型后快速回归验证。九、CAMEL 在 CoT 数据生成上的下一步文档同时披露了 CAMEL 在自改进 CoT 方向上的路线图实时监控仪表盘可视化吞吐量、错误率、运行成本、数据质量等指标支撑运营监控性能增强进一步提升处理性能并强化错误处理使系统更健壮前沿研究方案持续整合合成数据生成领域的最新研究拒绝采样Rejection Sampling将拒绝采样方法正式融入SelfImprovingCoTPipeline如上文所述源码已先行实现。结语CAMEL 的自改进 CoT 管线为思维链数据蒸馏提供了一套完整范式灵活评估Agent 评估与奖励模型评估双通道适配不同场景的评分与反馈需求持续改进迭代精炼保证每条轨迹持续逼近期望质量高效处理批量并发在保证系统平衡的同时提升吞吐稳定健壮指数退避重试机制增强系统可靠性一致输出原子化动态文件写入确保部分结果始终被有效保留。更进一步的实践可继续阅读仓库内关联材料使用 DeepSeek-R1 蒸馏数学推理数据的 self_improving_math_reasoning_data_distillation_from_deepSeek_r1.ipynb以及 self_improving_cot.py 源码与两个官方示例脚本亲手复现一套生成—评估—精炼的推理数据流水线。【免费下载链接】camel CAMEL: The first and the best multi-agent framework. Finding the Scaling Law of Agents. https://www.camel-ai.org项目地址: https://gitcode.com/GitHub_Trending/ca/camel创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考