MDA框架解析:让大语言模型通过自主实验逼近复杂问题解决方案 📅 发布时间:2026/8/19 7:45:11 👁 浏览次数: 在实际的大语言模型LLM应用和研究中一个核心的挑战是如何让模型不仅给出答案还能像人类研究者一样主动提出假设、设计实验并验证从而迭代地逼近复杂问题的解决方案。传统的提示工程或思维链Chain-of-Thought方法往往依赖于单次或有限的几次推理难以处理需要多轮、多路径探索的开放式问题。近期一种名为“MDA”的方法引起了关注其核心思想是让LLM扮演“假设提出者”和“实验设计者”的角色通过多轮迭代最终在特定任务上取得了与顶级闭源模型如Opus 4.7相媲美的效果。本文旨在深入解析MDA方法的工作原理并提供一套可实践的技术框架帮助开发者理解并复现这种“让LLM自我驱动实验”的能力。本文适合对LLM应用开发、Agent设计、提示工程优化以及自动化实验流程感兴趣的开发者、研究者和技术决策者。我们将从MDA的基本概念入手逐步拆解其核心循环机制然后通过一个模拟的代码框架展示如何实现一个简化的MDA系统最后讨论其局限性、常见问题以及在实际项目中的应用考量。1. 理解MDA从单次问答到多轮实验的范式转变MDA即“Model-Driven Experimentation with Autonomous Hypothesis Generation”可以理解为“模型驱动的自主假设生成实验”。它不是一个具体的工具或库而是一种方法论或框架设计思想。其核心在于将LLM从一个被动的“问答机”转变为一个主动的“科学实验者”。1.1 传统LLM交互的局限性在标准的LLM调用中我们通常构建一个提示Prompt模型基于此提示生成一个响应。对于复杂问题我们可能会使用思维链CoT或自洽性Self-Consistency等技术来提升推理质量。然而这些方法本质上仍是“单次”或“有限次并行”的。模型基于给定的上下文和指令输出它认为最合理的答案或推理路径。如果这个路径是错误的模型缺乏一个内置的机制去“意识到”错误并主动尝试另一条完全不同的路径。它依赖于开发者或用户提供新的、不同的提示来引导。1.2 MDA的核心循环机制MDA引入了一个闭环的、迭代的循环过程通常包含以下几个关键阶段假设生成Hypothesis Generation基于当前问题描述、历史实验数据和结果LLM被要求提出一个或多个可测试的假设。例如“如果修改提示词中的角色设定为‘资深数据分析师’输出结构可能会更严谨。”实验设计Experiment Design针对提出的假设LLM需要设计一个具体的实验方案。这包括定义实验的输入如特定的提示词模板、控制变量、预期的输出格式以及评估成功与否的准则评估函数或人工判断标准。实验执行Experiment Execution系统自动执行设计好的实验即使用设计好的输入调用LLM或其它工具并记录输出结果。结果分析与反思Analysis ReflectionLLM分析实验产生的结果与预期进行对比判断假设是否被证实或证伪。更重要的是它需要从本次实验无论成功与否中“学习”提炼出新的见解用于指导下一轮的假设生成。这个“生成 - 设计 - 执行 - 分析”的循环会持续进行直到达到预设的终止条件例如找到满足特定质量阈值的解决方案、达到最大迭代次数或资源耗尽。1.3 为什么MDA能“追平”强大模型像Opus 4.7这样的顶级模型其优势在于拥有更庞大的参数、更高质量的训练数据以及可能更复杂的内部推理架构使其在单次推理中就能表现出极强的能力。MDA方法则另辟蹊径探索广度通过让一个能力稍弱的模型例如GPT-4 Turbo、Claude 3 Sonnet甚至优秀的开源模型进行多轮、多方向的探索它实际上模拟了“试错”和“发散思维”的过程。这弥补了模型在单次推理中深度或创造力可能不足的缺点。任务分解与聚焦每一轮实验都聚焦于一个具体的、小的假设。这使得模型不需要一次性解决整个复杂问题而是通过解决一系列子问题来逐步逼近最终答案。上下文积累与学习每一轮实验的结果和反思都会加入到下一轮提示的上下文中。这意味着模型在进行到第N轮时它已经“见识”并“学习”了前N-1轮的经验和教训其决策是在一个不断丰富的知识背景下做出的。本质上MDA是用“迭代次数”和“系统性的探索策略”来弥补基座模型在“单次推理能力”上的差距。它通过自动化流程将人类研究者“提出想法-做实验-看结果-调整方向”的科研过程编码进了LLM的调用循环中。2. 构建一个简化MDA系统的技术准备在开始编码实现一个简化的MDA系统之前我们需要明确技术栈和核心组件。以下是一个基于Python的参考实现框架。2.1 环境与依赖我们将使用openai库或兼容OpenAI API的库作为与LLM交互的主要工具同时需要pydantic来帮助进行结构化的数据验证。确保你的Python环境在3.8以上。# 创建虚拟环境可选 python -m venv mda_env source mda_env/bin/activate # Linux/Mac # mda_env\Scripts\activate # Windows # 安装核心依赖 pip install openai pydantic python-dotenv在你的项目根目录创建.env文件用于安全存储API密钥# .env OPENAI_API_KEYyour_openai_api_key_here OPENAI_BASE_URLhttps://api.openai.com/v1 # 如果使用其他兼容服务修改此处 MODEL_NAMEgpt-4-turbo-preview # 或 gpt-4, claude-3-5-sonnet-20241022 (需对应SDK)2.2 核心数据模型设计使用Pydantic定义清晰的数据结构这是保证MDA循环中信息流准确的关键。我们将定义实验假设、实验设计、实验结果和一轮实验的完整记录。# models.py from pydantic import BaseModel, Field from typing import List, Optional, Any, Dict from enum import Enum class ExperimentStatus(str, Enum): PENDING pending RUNNING running SUCCESS success FAILED failed INCONCLUSIVE inconclusive class Hypothesis(BaseModel): 一个可测试的假设 id: int description: str Field(..., description对假设的清晰文字描述) rationale: str Field(..., description提出此假设的依据或推理) created_at_round: int Field(..., description在哪一轮迭代中提出的) class ExperimentDesign(BaseModel): 针对一个假设的具体实验设计 hypothesis_id: int input_prompt: str Field(..., description本次实验使用的完整提示词) parameters: Dict[str, Any] Field(default_factorydict, description实验参数如temperature, max_tokens等) evaluation_criteria: str Field(..., description如何评估实验结果的描述) expected_output_format: Optional[str] Field(None, description期望的输出格式如JSON) class ExperimentResult(BaseModel): 一次实验的执行结果 design: ExperimentDesign raw_output: str Field(..., descriptionLLM返回的原始文本) parsed_output: Optional[Any] Field(None, description解析后的输出如字典、列表等) evaluation_score: Optional[float] Field(None, description根据评估准则得出的分数) evaluation_summary: str Field(..., description对结果的定性总结如‘成功’、‘部分成功’、‘失败’) status: ExperimentStatus error_message: Optional[str] None class ExperimentRound(BaseModel): 一轮完整的MDA迭代记录 round_number: int hypotheses_generated: List[Hypothesis] selected_hypothesis: Optional[Hypothesis] None # 本轮选择进行实验的假设 experiment_design: Optional[ExperimentDesign] None experiment_result: Optional[ExperimentResult] None reflection: Optional[str] Field(None, description对本轮实验的反思和学到的东西)3. 实现MDA核心循环引擎有了数据模型我们可以构建驱动整个循环的引擎。这个引擎负责状态管理、调用LLM以及协调各个阶段。3.1 初始化引擎与LLM客户端# mda_engine.py import os import json from typing import List, Optional, Callable from openai import OpenAI from dotenv import load_dotenv from models import * load_dotenv() class MDAEngine: def __init__(self, initial_problem: str, max_rounds: int 8): self.client OpenAI( api_keyos.getenv(OPENAI_API_KEY), base_urlos.getenv(OPENAI_BASE_URL, https://api.openai.com/v1) ) self.model_name os.getenv(MODEL_NAME, gpt-4-turbo-preview) self.initial_problem initial_problem self.max_rounds max_rounds self.current_round 0 self.history: List[ExperimentRound] [] self.best_result: Optional[ExperimentResult] None # 可自定义的评估函数默认使用LLM进行评估 self.evaluator: Callable[[str, str], Dict] self._default_llm_evaluator def _call_llm(self, system_prompt: str, user_prompt: str, **kwargs) - str: 调用LLM的通用方法 try: response self.client.chat.completions.create( modelself.model_name, messages[ {role: system, content: system_prompt}, {role: user, content: user_prompt} ], **kwargs ) return response.choices[0].message.content except Exception as e: print(fLLM调用失败: {e}) return 3.2 实现假设生成阶段在这个阶段我们需要LLM基于当前问题和历史提出新的、有价值的假设。# mda_engine.py (续) def generate_hypotheses(self) - List[Hypothesis]: 生成本轮迭代的假设列表 # 构建历史上下文 history_context self._format_history_for_prompt() system_prompt 你是一个严谨的科学研究助手擅长针对复杂问题提出清晰、可测试的假设。请基于给定的问题和过往实验历史提出最多3个新的、有探索价值的假设。每个假设必须包含明确的描述和提出理由。 user_prompt f 初始问题{self.initial_problem} 过往实验历史共{len(self.history)}轮 {history_context} 请提出针对解决上述问题的、新的、可操作的假设。避免重复历史中已经测试过的思路。 请以JSON列表格式输出每个元素包含 description假设描述和 rationale理由字段。 示例 [ {{description: 如果使用更详细的步骤分解提示词模型推理的准确性会提高。, rationale: 因为历史实验表明模型在复杂推理上会跳跃步骤导致错误。}}, ... ] response_text self._call_llm(system_prompt, user_prompt, temperature0.7, max_tokens1000) hypotheses [] try: hypotheses_data json.loads(response_text) for idx, item in enumerate(hypotheses_data): hyp Hypothesis( idlen(self.history)*10 idx, # 简单生成ID descriptionitem[description], rationaleitem[rationale], created_at_roundself.current_round ) hypotheses.append(hyp) except json.JSONDecodeError: print(f假设生成响应解析失败: {response_text}) # 可以加入fallback逻辑例如尝试用正则提取 return hypotheses3.3 实现实验设计与执行阶段从生成的假设中选择一个例如通过LLM评估或简单规则并为其设计具体实验。# mda_engine.py (续) def design_experiment(self, hypothesis: Hypothesis) - ExperimentDesign: 为选定的假设设计实验 system_prompt 你是一个实验设计专家。请将一个抽象的假设转化为一个具体的、可执行的LLM实验方案。 user_prompt f 假设{hypothesis.description} 提出理由{hypothesis.rationale} 初始问题{self.initial_problem} 任务设计一个实验来验证这个假设。 你的设计必须包括 1. 一个具体的、完整的提示词input_prompt用于输入给LLM。 2. 本次实验的LLM参数如temperature建议值。 3. 清晰描述如何评估实验结果evaluation_criteria是定性的如“输出是否包含A和B”还是定量的如“与标准答案的相似度”。 4. 可选期望的输出格式。 请以JSON格式输出包含以下字段input_prompt, parameters, evaluation_criteria, expected_output_format。 parameters字段是一个字典。 response_text self._call_llm(system_prompt, user_prompt, temperature0.5, max_tokens1200) try: design_data json.loads(response_text) design ExperimentDesign( hypothesis_idhypothesis.id, input_promptdesign_data[input_prompt], parametersdesign_data.get(parameters, {temperature: 0.2, max_tokens: 1500}), evaluation_criteriadesign_data[evaluation_criteria], expected_output_formatdesign_data.get(expected_output_format) ) return design except (json.JSONDecodeError, KeyError) as e: print(f实验设计解析失败: {e}, 响应: {response_text}) # 返回一个默认的简单设计作为降级方案 return ExperimentDesign( hypothesis_idhypothesis.id, input_promptf问题{self.initial_problem}\n请根据以下假设给出解决方案{hypothesis.description}, parameters{temperature: 0.2, max_tokens: 1500}, evaluation_criteria检查输出是否直接回应了问题并且逻辑清晰。, expected_output_formatNone ) def run_experiment(self, design: ExperimentDesign) - ExperimentResult: 执行设计好的实验调用LLM并获取结果 print(f[Round {self.current_round}] 执行实验假设ID: {design.hypothesis_id}) raw_output self._call_llm( system_prompt你是一个有帮助的AI助手。请根据用户的问题和要求进行回应。, user_promptdesign.input_prompt, **design.parameters ) # 评估结果 evaluation self.evaluator(design.evaluation_criteria, raw_output) result ExperimentResult( designdesign, raw_outputraw_output, parsed_outputself._try_parse_output(raw_output, design.expected_output_format), evaluation_scoreevaluation.get(score), evaluation_summaryevaluation.get(summary, 待评估), statusExperimentStatus.SUCCESS if raw_output else ExperimentStatus.FAILED ) return result def _default_llm_evaluator(self, criteria: str, output: str) - Dict: 默认使用LLM作为评估器 system_prompt 你是一个公正的评估员。请严格根据提供的评估准则对给定的文本输出进行评分和总结。 user_prompt f 评估准则{criteria} 需要评估的文本输出 {output} 请输出一个JSON对象包含两个字段 1. score: 一个0到1之间的浮点数表示符合准则的程度。 2. summary: 一句简短的总结例如“完全符合”、“部分符合但缺少细节”、“不符合”。 eval_response self._call_llm(system_prompt, user_prompt, temperature0.0, max_tokens200) try: return json.loads(eval_response) except: return {score: 0.5, summary: 评估失败返回默认值}3.4 实现反思与循环控制一轮实验结束后需要LLM进行反思并将精华信息注入下一轮。# mda_engine.py (续) def conduct_reflection(self, round_record: ExperimentRound) - str: 基于本轮结果进行反思生成用于下一轮的洞察 if not round_record.experiment_result: return 本轮未执行实验无反思。 system_prompt 你是一个善于从成功和失败中学习的分析师。请分析本轮实验提炼出对解决原始问题最有价值的1-2条经验或教训。 user_prompt f 原始问题{self.initial_problem} 本轮测试的假设{round_record.selected_hypothesis.description if round_record.selected_hypothesis else 无} 实验设计概要{round_record.experiment_design.input_prompt[:300] if round_record.experiment_design else 无}... 实验结果评估{round_record.experiment_result.evaluation_summary} (分数{round_record.experiment_result.evaluation_score}) 实验原始输出片段{round_record.experiment_result.raw_output[:500]}... 请思考 1. 从这个结果看我们关于问题的理解或解决方向有什么新的认识 2. 下一步应该避免什么应该尝试什么新的方向 请用一段简洁的话总结你的反思。 reflection self._call_llm(system_prompt, user_prompt, temperature0.3, max_tokens500) return reflection def run_full_cycle(self): 运行完整的MDA循环直到达到最大轮数或找到满意解 for round_num in range(1, self.max_rounds 1): self.current_round round_num print(f\n 开始第 {round_num} 轮 MDA 迭代 ) # 1. 生成假设 hypotheses self.generate_hypotheses() if not hypotheses: print(未能生成有效假设终止循环。) break print(f生成了 {len(hypotheses)} 个假设。) # 2. 选择假设这里简化处理选择第一个 selected_hypothesis hypotheses[0] print(f选择假设: {selected_hypothesis.description}) # 3. 设计实验 design self.design_experiment(selected_hypothesis) # 4. 执行实验 result self.run_experiment(design) # 5. 记录与更新最佳结果 if self.best_result is None or (result.evaluation_score or 0) (self.best_result.evaluation_score or 0): self.best_result result print(f更新最佳结果分数: {result.evaluation_score}) # 6. 反思 reflection self.conduct_reflection(ExperimentRound( round_numberround_num, hypotheses_generatedhypotheses, selected_hypothesisselected_hypothesis, experiment_designdesign, experiment_resultresult )) # 7. 保存本轮记录 round_record ExperimentRound( round_numberround_num, hypotheses_generatedhypotheses, selected_hypothesisselected_hypothesis, experiment_designdesign, experiment_resultresult, reflectionreflection ) self.history.append(round_record) print(f本轮反思: {reflection[:150]}...) # 简单终止条件如果结果足够好可以提前停止 if result.evaluation_score and result.evaluation_score 0.9: print(f在第 {round_num} 轮达到高分提前终止。) break print(f\n MDA 循环结束共执行 {len(self.history)} 轮 ) if self.best_result: print(f最佳结果分数: {self.best_result.evaluation_score}) print(f最佳结果输出预览: {self.best_result.raw_output[:200]}...)4. 运行验证与结果分析现在我们可以用一个具体的复杂问题来驱动这个MDA引擎观察其迭代过程。4.1 定义测试问题与运行脚本创建一个主程序文件来启动整个流程。我们选择一个需要多步推理和创意的问题。# main.py from mda_engine import MDAEngine def main(): # 定义一个复杂的、开放式的问题 initial_problem 设计一个面向中小型电商企业的、基于微服务的“智能客服工单系统”的技术架构方案。 要求 1. 能够自动分类用户咨询如物流、售后、产品咨询。 2. 能够根据历史对话记录自动推荐解决方案或知识库文章。 3. 在无法自动解决时能高效路由给人工客服并提供上下文。 4. 考虑系统的可扩展性、可维护性和成本。 请给出核心服务划分、技术选型建议数据库、消息队列、编程语言等以及关键的数据流说明。 # 初始化引擎设置最大8轮实验呼应标题中的“8次实验” engine MDAEngine(initial_probleminitial_problem, max_rounds8) # 运行完整MDA循环 engine.run_full_cycle() # 可选将历史记录保存为JSON文件以供分析 import json with open(mda_history.json, w, encodingutf-8) as f: # 使用Pydantic的dict()方法并设置exclude_none history_dict [round.dict(exclude_noneTrue) for round in engine.history] json.dump(history_dict, f, ensure_asciiFalse, indent2) print(实验历史已保存至 mda_history.json) if __name__ __main__: main()运行此脚本python main.py。你将在控制台看到类似以下的输出具体内容因模型随机性而异 开始第 1 轮 MDA 迭代 生成了 3 个假设。 选择假设: 如果使用“你是一名首席架构师”的角色设定来构建提示词生成的架构方案会更全面、更具系统性。 [Round 1] 执行实验假设ID: 1 更新最佳结果分数: 0.75 本轮反思: 实验表明角色设定确实能引导模型产出更结构化的方案但方案在“成本考量”和“具体技术版本”上仍然模糊。下一步应聚焦于如何让模型给出更具体、可落地的技术选型建议... 开始第 2 轮 MDA 迭代 生成了 3 个假设。 选择假设: 如果在提示词中明确要求以表格形式对比不同技术选型如MySQL vs PostgreSQL, RabbitMQ vs Kafka并加入“年维护成本估算”列输出会更具实操性。 [Round 2] 执行实验假设ID: 11 更新最佳结果分数: 0.85 本轮反思: 表格形式极大提升了可读性但模型估算的成本是虚构的缺乏依据。下一步需要引导模型基于公开资料或常见云服务定价给出更合理的估算逻辑或者明确说明此为示例... ... MDA 循环结束共执行 8 轮 最佳结果分数: 0.92 最佳结果输出预览: **智能客服工单系统微服务架构方案**...4.2 结果分析要点通过分析保存的mda_history.json文件你可以观察到假设的进化早期的假设可能比较宽泛如“修改角色”后期的假设会越来越具体和深入如“要求用C4模型绘制组件交互图”、“为每个服务定义明确的API契约和错误码”。提示词的迭代优化每一轮的input_prompt都会根据上一轮的反思进行调整变得越来越精细和具有约束力。评估分数的趋势在理想情况下评估分数会随着轮次增加而呈上升趋势表明系统正在通过实验学习并改进输出质量。反思的价值reflection字段是知识积累的关键它确保了下一轮实验不是随机的而是建立在之前所有实验的“经验”之上。5. 常见问题、挑战与排查路径在实际实现和应用MDA框架时会遇到一系列典型问题。5.1 实验循环失效或质量下降问题现象可能原因检查与排查方式处理建议评估分数停滞不前或下降。1. 假设生成质量差陷入局部最优。2. 评估函数evaluator不够准确或敏感。3. 反思环节未能提取有效信息历史上下文变得冗杂无效。1. 检查generate_hypotheses函数的输出看假设是否具有探索性。2. 人工检查几轮实验的输入、输出和评估结果看评估是否合理。3. 查看reflection内容是否过于空泛或重复。1. 在假设生成阶段引入“多样性”惩罚鼓励提出与历史差异大的假设。2. 设计更细粒度的、可量化的评估函数或结合人工评分。3. 为反思环节提供更结构化的指令要求其必须对比历史并提出“具体”的新方向。循环在几轮后提前终止。1. LLM调用频繁失败如网络、额度问题。2. JSON解析失败导致关键数据缺失。3. 选择了过于激进的提前终止条件。1. 查看控制台错误日志和API返回信息。2. 在_call_llm和JSON解析处添加更详细的异常打印和降级处理。3. 检查终止条件逻辑。1. 增加重试机制和更友好的错误处理。2. 使用LLM进行输出格式修复或采用更宽松的解析方式如正则提取。3. 放宽终止条件或改为基于多轮平均分判断。5.2 成本与性能考量MDA方法的核心代价是大量的LLM API调用。每一轮循环至少包含3-4次调用生成假设、设计实验、执行实验、评估结果、反思。8轮实验可能意味着24-32次调用对于长上下文模型成本不菲。优化策略缓存对相同的或高度相似的提示词调用结果进行缓存。使用轻量模型在假设生成、实验设计、评估等“元认知”环节可以使用更便宜、更快的模型如GPT-3.5-Turbo仅在最终“执行实验”环节使用强力模型。减少轮次不一定需要固定8轮。可以设置动态终止条件如连续3轮分数无显著提升则停止。精简上下文在构建历史上下文时不要无脑拼接所有历史记录。可以只保留最近几轮的精华如假设描述、结果分数、关键反思。5.3 评估函数的可靠性评估函数evaluator是指引MDA循环方向的“罗盘”。如果评估不准整个系统就会迷失方向。常见陷阱LLM作为评估器LLM-as-a-Judge的偏见评估LLM可能对某些写作风格有偏好。定性评估难以量化“逻辑清晰”这类标准过于主观。奖励黑客Reward Hacking系统可能学会生成能获得高评估分但实际无用的输出。改进方法多维度评估设计多个评估标准完整性、准确性、可操作性、创新性分别打分再综合。基于规则的校验在LLM评估前先用简单规则过滤掉明显不合格的输出如长度不足、未包含关键词。人工校准定期对自动评估结果进行人工抽样检查并据此调整评估提示词。6. 最佳实践与扩展方向要将MDA从实验框架转化为稳定可用的工具需要在工程化和策略上进行更多设计。6.1 工程化最佳实践状态持久化将MDAEngine的状态历史记录、最佳结果定期保存到数据库或文件支持中断恢复。实验配置化将最大轮次、模型选择、温度参数、评估函数等抽象为配置文件便于对不同任务进行调优。可视化监控开发一个简单的Dashboard实时展示每一轮的假设、实验设计、输出片段、分数和反思便于人工监督和干预。模块化评估器将评估函数设计为可插拔的模块支持规则评估、LLM评估、外部工具评估如代码验证器等多种方式混合使用。6.2 策略优化方向假设选择策略当前实现简单选择第一个假设。更优的策略包括利用-探索平衡使用上置信界UCB等算法平衡选择高分假设利用和探索新假设探索。假设预评估在生成一批假设后用快速、低成本的方式如小模型或规则对它们进行初步评分和排序。并行实验如果资源允许可以在一轮中并行执行多个假设的实验加速搜索过程。集成外部工具MDA循环不仅可以调用LLM还可以集成代码执行器、网络搜索API、专业计算工具等。例如让LLM设计一个算法然后自动编写Python代码并运行验证结果。分层MDA将大问题分解为子问题对每个子问题运行独立的MDA循环然后再用一个上层MDA协调子解决方案的整合。6.3 适用场景与局限性适用场景开放式创意生成如起名、写诗、生成营销文案的A/B测试。复杂方案设计如技术架构、研究计划、商业策略设计。代码生成与优化通过多轮测试和评估迭代生成更高效、更健壮的代码。提示词工程自动化自动寻找针对特定任务的最优提示词。局限性成本高不适合对实时性要求高或预算敏感的场景。问题定义要求高初始问题必须清晰且评估标准必须可定义否则循环会失去方向。并非万能对于有标准答案的事实性问题MDA可能不如直接询问强大模型。它的优势在于探索没有唯一解的空间。MDA框架展示了将LLM从静态工具转变为动态问题解决伙伴的潜力。其核心价值不在于替代最强的单体模型而在于提供了一种系统化的、可解释的探索过程。通过精心设计循环中的每个环节——尤其是假设生成和反思——我们可以引导一个能力适中的模型通过多次迭代产出接近甚至超越顶级模型单次推理质量的结果。在实际项目中可以从一个具体的小问题开始实践逐步优化其中的每个模块最终将其打造成一个强大的、适用于特定领域的自动化研究与开发助手。