
人工智能大模型AI Agent工作流自动化RAG【免费下载链接】PocketFlowPocket Flow: 100-line LLM framework. Let Agents build Agents!项目地址https://gitcode.com/gh_mirrors/poc/PocketFlow点击查看免费下载本篇技术指南基于 PocketFlow 仓库中cookbook/pocketflow-debate示例完整讲解「对抗辩论Adversarial Debate」这一 LLM 应用模式由两个 LLM 分别扮演正方与反方辩护人围绕同一论点展开结构化辩论再由一个中立裁判 LLM 对双方论证质量打分并裁决胜负。读完本文你将掌握如何用 PocketFlow 的节点生命周期prep / exec / post与算子组装一条线性辩论流水线理解共享状态shared dict如何在节点间传递论点与裁决结果并能够直接在命令行中运行、替换任意自定义论点。模式概述为什么让 LLM 自己辩论单次调用 LLM 做决策时模型往往只会给出一个看起来合理的答案缺少对反方视角的主动审视。对抗辩论Adversarial Debate是一种通过强制多视角思考来提升决策质量的技术模式让两个 LLM 分别站在论点的正反两侧交锋再由一个中立裁判综合评估最终收敛出更审慎的结论。该模式的核心价值在于两面性论证正方辩护人Advocate FOR呈现基于证据的支持性论证反驳与反证反方辩护人Advocate AGAINST阅读并逐点反驳正方论点提出反方论据中立裁决公正的裁判Judge对双方在推理质量、证据充分性与说服力三个维度上打分并选出胜方。在 PocketFlow 中这一模式被实现为一个仅由三个节点组成、无任何条件分支的线性流程是理解多角色协作型 Agent 编排的最小且完整的入门样例。整体架构一条三节点的线性 Flow辩论流程的结构在 flow.py 中定义整个系统由三个节点依次串联对应源码中的组装方式from pocketflow import Flow from nodes import AdvocateFor, AdvocateAgainst, JudgeDebate def create_debate_flow(): # 三个节点均配置了失败重试最多重试 3 次每次间隔 10 秒 advocate_for AdvocateFor(max_retries3, wait10) advocate_against AdvocateAgainst(max_retries3, wait10) judge JudgeDebate(max_retries3, wait10) # 使用 算子将节点按顺序串联FOR - AGAINST - JUDGE advocate_for advocate_against judge # 以 advocate_for 为起点创建流程 debate_flow Flow(startadvocate_for) return debate_flow流程的推进顺序如下AdvocateFor接收论点claim构建支持该论点的最强论证AdvocateAgainst读取正方论证逐点反驳并针对论点提出反方论据JudgeDebate从推理质量、证据与说服力三个维度评估双方给出 1–10 分并选出胜方。三个环节的执行与状态传递完全建立在 PocketFlow 框架的节点生命周期之上下一节详细拆解。底层原理PocketFlow 的 prep / exec / post 生命周期PocketFlow 的每个节点都遵循prep - exec - post三阶段生命周期框架核心实现位于 pocketflow/init.pydef _run(self, shared): pself.prep(shared); eself._exec(p); return self.post(shared,p,e)prep(shared)从共享状态shared中读取本节点需要的输入exec(prep_res)执行实际计算本例中即调用 LLMpost(shared, prep_res, exec_res)把计算结果写回shared供下游节点读取同时输出面向用户的打印信息。其中shared是整个 Flow 运行期间共享的字典对象是节点间数据传递的总线。此外框架的 Node 类 原生支持重试机制Node(max_retries3, wait10)表示当exec抛出异常时最多重试 3 次、每次等待 10 秒后再试这对偶发的 LLM API 超时或限流错误非常实用算子则等价于next()方法用于注册后继节点见 pocketflow/init.py而 Flow._orch 会从start节点开始循环执行直到没有后继节点为止。快速开始安装、配置与首次运行1. 安装依赖示例的依赖清单见 requirements.txt包含三部分pip install -r requirements.txt依赖用途pocketflow0.0.1LLM 工作流框架核心节点、流、生命周期openai1.0.0调用 OpenAI 系列模型如 gpt-4opyyaml6.0解析 LLM 返回的结构化 YAML 论证/裁决结果2. 配置 API Key运行前必须配置 LLM API Key。utils.py 中的call_llm会自动探测环境变量同时支持 OpenAI 与 Gemini 两套后端# 方式一OpenAI默认使用 gpt-4o 模型 export OPENAI_API_KEYyour-api-key-here # 方式二Gemini默认使用 gemini-2.0-flash 模型 export GEMINI_API_KEYyour-gemini-api-key-here从源码看call_llm的优先级为存在OPENAI_API_KEY时走 OpenAI 客户端否则存在GEMINI_API_KEY时走 Gemini 客户端两者都缺失时抛出ValueError(Set OPENAI_API_KEY or GEMINI_API_KEY)。因此二选一配置即可。3. 验证 API Keypython utils.py该命令会以Tell me a short joke作为示例 prompt 调用一次 LLM 并打印回复用于确认密钥有效、网络可达。4. 运行默认辩论python main.py默认论点default claim定义在 main.py 中Remote work is more productive than office work远程办公比办公室办公更高效5. 辩论自定义论点python main.py --AI will replace most jobs within 10 yearsmain.py 会扫描命令行参数取第一个以--开头的参数并剥离前两个字符作为论点内容。这意味着任何以--为前缀的文本都能直接成为辩论题目例如python main.py --Should we open source our core product? python main.py --Local-first software will replace cloud SaaS核心实现拆解三个节点的源码级解析1. AdvocateFor构建正方论证AdvocateFor 的职责是为论点构建最强支持。prep直接从shared中取出claimexec构造一段 prompt要求 LLM 扮演正方辩护人、使用证据与逻辑推理、在 3–4 句话内给出最有力的论证并强制以 YAML 结构返回argument: | Your argument here key_points: - First key point - Second key point - Third key pointexec内通过response.split(yaml)[1].split()[0].strip()截取代码块中的 YAML 片段并用yaml.safe_load解析post则把argument与key_points分别写入shared[case_for]与shared[case_for_points]并打印正方内容。2. AdvocateAgainst读取对方论证并反驳AdvocateAgainst 是反方辩护人。它的prep同时取出claim与正方论证shared[case_for]一并塞入 prompt要求 LLM先逐点反驳对手再在 3–4 句话内提出反方最强论据同样以 YAML 结构返回字段为argument与key_points。post将结果写入shared[case_against]与shared[case_against_points]。关键点在于反方必须看到并回应正方的具体论点而不是自说自话——这正是对抗性的来源也体现了shared字典在节点间传递上下文的价值。3. JudgeDebate中立裁判打分与裁决JudgeDebate 是终审节点。prep聚合claim、case_for、case_against三方信息exec要求 LLM 扮演公正裁判评估双方在**推理质量reasoning、证据evidence、说服力persuasiveness**上的表现并返回结构化裁决winner: FOR # or AGAINST score_for: 7 # 1-10 score_against: 6 # 1-10 verdict: | Your one-sentence explanation of the decision reasoning: | Brief analysis of both arguments strengths and weaknessespost将winner、score_for、score_against、verdict、reasoning全部写回shared并打印裁决详情。裁判节点只依赖前序节点写入的共享状态自身不再产生新的下游节点因此 Flow 在此自然终止。数据流与共享状态一览整个辩论过程中shared字典的演变对应 main.py 中的初始化与 nodes.py 各节点的写入阶段写入 shared 的键读取方main 初始化claim全部三个节点AdvocateFor.postcase_for、case_for_pointsAdvocateAgainst、JudgeDebateAdvocateAgainst.postcase_against、case_against_pointsJudgeDebateJudgeDebate.postverdict、winner、score_for、score_against、reasoningmain 的最终摘要打印Flow 运行结束后main.py 读取shared中的最终裁决字段打印一份完整的辩论摘要Debate Summary便于在命令行中一次性回顾整场辩论的结论。运行效果一份完整的辩论输出示例以下为 README.md 中给出的真实运行输出形态展示了从论点声明、双方论证、关键要点到最终裁决的完整链路 Debating claim: Remote work is more productive than office work --- Advocate FOR --- Studies from Stanford show remote workers are 13% more productive due to fewer distractions and a quieter work environment. Employees save an average of 40 minutes daily on commuting, which translates into more focused work time. Key points: - Stanford study shows 13% productivity increase - Eliminated commute saves 40 minutes daily - Fewer office distractions improve deep work --- Advocate AGAINST --- While remote work reduces commute time, it often leads to isolation and communication breakdowns that harm team collaboration. Spontaneous interactions in offices drive innovation, and many remote workers report blurred work-life boundaries leading to burnout. Key points: - Communication breakdowns reduce team effectiveness - Loss of spontaneous collaboration hurts innovation - Blurred boundaries increase burnout risk ⚖️ --- VERDICT --- Winner: FOR Scores - FOR: 7/10 | AGAINST: 6/10 The FOR argument provided stronger empirical evidence with specific studies and statistics, while the AGAINST argument relied more on general claims. Debate Summary Claim: Remote work is more productive than office work Winner: FOR Scores - FOR: 7/10 | AGAINST: 6/10 ⚖️ Verdict: The FOR argument provided stronger empirical evidence... 注意由于底层 LLM 的输出具有随机性每次运行的具体论点、得分与胜负并不固定该示例用于说明输出结构与各字段含义而非可复现的固定结果。文件结构速览main.pyCLI 入口负责解析命令行论点、初始化shared、运行 Flow 并打印辩论摘要flow.py定义串联三个节点的线性辩论流nodes.pyAdvocateFor、AdvocateAgainst、JudgeDebate 三个节点的实现utils.pyOpenAI / Gemini 双后端 LLM 调用封装requirements.txtPython 依赖清单。扩展思路基于该模式可以走得更远从源码结构看该示例刻意保持为最小可运行形态因此在此基础上存在清晰的扩展方向以下均为基于代码结构的推断未在当前示例中实现多轮辩论Round-based Debate将AdvocateFor AdvocateAgainst封装为子流程并循环多次让双方在读到对方最新论点后迭代反驳可参考框架的 BatchFlow 或 Flow 组合能力实现替换裁判规则JudgeDebate的 prompt 与 YAML 字段是独立的可以扩展为按事实正确性、逻辑一致性、表达清晰度等多维加权打分接入其他 LLM 后端call_llm是唯一的 LLM 出入口替换为本地模型或企业网关时只需改动 utils.py 一处辩论结果落地shared中已包含完整的case_for、case_against、verdict、reasoning可直接接入下游流程如生成决策报告、写入知识库或触发人工复核。总体而言pocketflow-debate是一个结构精炼、可直接运行、便于二次开发的对抗辩论参考实现它以 5 个文件、3 个节点完整呈现了双辩护人 中立裁判的多角色协作范式非常适合作为理解 PocketFlow 节点生命周期与共享状态机制的入门教材也可作为业务中多视角决策辅助能力的搭建起点。赞分享人工智能大模型AI Agent工作流自动化RAG【免费下载链接】PocketFlowPocket Flow: 100-line LLM framework. Let Agents build Agents!项目地址https://gitcode.com/gh_mirrors/poc/PocketFlow点击查看免费下载相关推荐Fabric summarize_debate 模式实战用 AI 结构化总结辩论分歧、论点与改变立场的证据Fabric summarize_debate 模式实战用 AI 结构化总结辩论分歧、论点与改变立场的证据 本篇技术指南围绕开源仓库 Fabric 中的 suAI 应用人工智能提示工程CLI本地部署如何用对抗性辩论框架让 LLM 对金融问题互相质证如何用对抗性辩论框架让 LLM 对金融问题互相质证 当你让多个研究 Agent 对同一个金融问题各做一次概率预测后常见的处理方式是直接取平均——但这样会把分歧示例工程金融科技机器学习人工智能深度学习swarms 多智能体辩论框架实战DebateWithJudge 正反方与裁判的自精炼机制详解swarms 多智能体辩论框架实战DebateWithJudge 正反方与裁判的自精炼机制详解 本文围绕 swarms 仓库中的 DebateWithJudgAI AgentAgent 框架多智能体工具调用MCP 服务上一篇终极指南让老款Mac重获新生轻松安装最新macOS系统下一篇TigerBeetle 参考指南Account / Transfer 数据结构、客户端会话与八类请求 API 全解析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考