PocketFlow icon indicating copy to clipboard operation
PocketFlow copied to clipboard

对pocketflow的设计思想的一些疑惑

Open RanFeng opened this issue 5 months ago • 3 comments

作者您好,我之前有提交过pocketflow的go版本。但是经过一段时间的实践,在此我有个疑问:为什么pocketflow一定要设计为prep、exec、post三阶段呢?比如我图中的这个case,在load prompt的时候,可能面临失败(在工业部署上,任何的失败我们都必须catch并处理)。 在这样的情况下,我们如果在prep中load prompt失败了,那么在exec和post阶段该怎么做呢?

所以我的疑惑是,是否可以将prep、exec、post三个阶段合并为同一个

我现在平时使用pockeflow进行开发的时候,都是只用post节点的。我看了您的一些demo,在prep中的返回,到exec阶段还要校验prep的返回合法性,这无疑增加了很多不必要的代码,如果将这三个阶段合并为一个,我觉得框架可以更短。

Image

RanFeng avatar Aug 13 '25 04:08 RanFeng

prep and post 是给相对稳定的数据读写,而且相对可以测试 exec 是给不稳定的像llm call这种io操作 分开的好处有几点 首先就是exec 的因为不稳定需要retry但因为没有data读写不要求idempotent,但是比如post可以不是idempotent (e.g., append to a list) 其次如果node想要换到另一个flow,但shared store的structure不一样,可能读写需要改动一下,但可以不用动exec

zachary62 avatar Aug 13 '25 15:08 zachary62

@zachary62 感谢回复,你的幂等重试这个设计是有道理的!不过我图中的那个提前跳出的问题,在基于prep、exec、post的设计中,有什么更好的实现方式吗,希望您能给我一些灵感或指导。

RanFeng avatar Aug 13 '25 16:08 RanFeng

这样: https://claude.ai/share/d295c8e6-23ff-468d-a766-cdcf3494f896

zachary62 avatar Aug 13 '25 17:08 zachary62