ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

ChatDev 2.0 如何为 Agent 节点开启 reflection 思考模式优化输出?

ChatDev 2.0 如何为 Agent 节点开启 reflection 思考模式优化输出? ChatDev 2.0 如何为 Agent 节点开启 reflection 思考模式优化输出【免费下载链接】ChatDevChatDev 2.0: Dev All through LLM-powered Multi-Agent Collaboration项目地址: https://gitcode.com/GitHub_Trending/ch/ChatDev在 ChatDev 2.0DevAll中Agent 节点负责调用大语言模型完成文本生成。模型第一次生成的结果有时还不够理想语法不严谨、逻辑有漏洞、代码缺少自检。ChatDev 2.0 的 Thinking 模块提供了内置的reflection思考模式让 Agent 节点在初次生成后再对输出进行一次自我反思并用反思结果替换原始输出作为该节点的最终输出。本文的任务就是在一个 Agent 节点上开启reflection写一条合适的reflection_prompt然后运行工作流并确认输出确实被反思优化过。适用前提是节点类型为agent、已配置好可用的模型提供商如openai与密钥。1. 开启前需要理解 reflection 做了什么reflection属于 Thinking 模块的内置思考模式只在**生成后after_gen**触发。按 Thinking 模块指南 描述其执行流程为Agent 节点正常调用模型生成初始回答ThinkingManager 将对话历史系统角色、用户输入、模型输出拼接为反思上下文结合reflection_prompt再次调用模型生成反思结果反思结果替换原始输出作为节点最终输出。这一步在源码中可以直接对应SelfReflectionThinkingManager 的_after_gen_think会拼接SYSTEM / USER / ASSISTANT三段对话并调用模型最终返回(reflection_message.text_content(), True)——第二个返回值True表示“用反思结果替换原始生成结果”这与指南中“反思结果替换原始输出”的说明一致。这一点直接关系到验证开启reflection后节点最终输出的不是模型第一次的原始回答而是反思后的版本。这也是判断配置是否生效的核心依据。2. 准备条件thinking是 Agent 节点的可选配置项但它依附于一个能正常调模型的 Agent 节点所以provider、name、api_key仍要配好。先按 README 完成安装与配置# 后端依赖 uv sync # 前端依赖 cd frontend npm install# 环境配置 cp .env.example .env在.env中设置你的模型API_KEY和BASE_URLYAML 里用${VAR}占位符引用这些变量。启动前后端make dev然后访问 Web Consolehttp://localhost:5173。3. 在 Agent 节点上配置 reflectionreflection通过nodes[].config.thinking声明包含type和config两个字段其中config里的必填项是reflection_prompt。字段类型必填说明typestring是思考模式此处填reflectionconfig.reflection_promptstring是引导模型反思的提示词可指定反思维度和期望改进方向下面是 Thinking 模块指南 给出的配置示例把它加到你已有的 Agent 节点上即可nodes: - id: Thoughtful Agent type: agent config: provider: openai name: gpt-4o api_key: ${API_KEY} thinking: type: reflection config: reflection_prompt: | 请仔细审视你的回答考虑以下方面 1. 逻辑是否严密 2. 有无事实错误 3. 表达是否清晰 然后给出改进后的回答。reflection_prompt决定了反思的方向。文档给出了几类适用场景提示词应围绕具体目标写写作润色自查语法、逻辑、代码审查生成后做安全和质量检查、复杂推理对多步骤结果做验证和修正。仓库里已有现成示例可直接对照。demo_human.yaml 的 Agent 节点A开启了reflection其reflection_prompt是Extract the first sentence of each paragraph, do not output any other content.——这个提示词会让节点最终只输出每段第一句正好能直观体现“反思结果替换原始输出”。demo_simple_memory.yaml 的节点A也配置了reflection并同时绑定了memories属于“反思 记忆”的组合用法。如果你的节点不需要记忆去掉memories字段即可只保留thinking部分。注意thinking只是配置块的一部分同一个节点仍可保留params如temperature、max_tokens等字段两者互不影响。配置完成后可以本地校验 YAML 语法与 schemamake validate-yamls该命令检查所有 YAML 文件的语法和 schema 错误适合在把配置交给前端执行前先跑一遍确认thinking块没有写错结构。4. 运行并确认输出被反思优化在 Web UI 中运行工作流并观察结果步骤来自 Web UI 快速入门进入Launch View从左侧选择你修改后的工作流输入 Task Prompt任务提示点击Launch按钮启动执行观察节点视图状态变化pending → running → success/failed并在输出面板查看节点输出上下文。如何判断 reflection 生效reflection的反思结果会替换原始输出作为节点最终输出所以你在输出面板看到或后续下载得到的节点结果应该是反思后的版本而不是模型第一次的原始回答。执行完成后可点击右侧面板的Download下载完整 Session 压缩包含context.json、附件、日志等在context.json中核对该节点最终落盘的文本确认它已经是反思优化后的内容。如果你希望反思时还能参考历史记忆可以把重要结果存入 Memory 并在节点上绑定memories反思上下文会通过memory参数传入——这是可选分支不影响上面这条最小路径。5. 限制与注意点单轮反思当前reflection为单轮反思。文档建议若需多轮可在reflection_prompt中明确迭代要求而不是依赖多轮自动执行。额外模型调用与成本反思会再调用一次模型注意 token 用量过长的reflection_prompt也会增加消耗建议聚焦关键改进点。仅生成后触发内置reflection只启用生成后after_gen思考不会在模型调用前改写输入生成前思考需要自行扩展实现。reflection_prompt必填它决定反思方向写得越具体优化越贴近目标。参考Thinking 模块指南、Agent 节点配置、真实示例 demo_human.yaml 与 demo_simple_memory.yaml。【免费下载链接】ChatDevChatDev 2.0: Dev All through LLM-powered Multi-Agent Collaboration项目地址: https://gitcode.com/GitHub_Trending/ch/ChatDev创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表