对pocketflow的设计思想的一些疑惑
作者您好,我之前有提交过pocketflow的go版本。但是经过一段时间的实践,在此我有个疑问:为什么pocketflow一定要设计为prep、exec、post三阶段呢?比如我图中的这个case,在load prompt的时候,可能面临失败(在工业部署上,任何的失败我们都必须catch并处理)。 在这样的情况下,我们如果在prep中load prompt失败了,那么在exec和post阶段该怎么做呢?
所以我的疑惑是,是否可以将prep、exec、post三个阶段合并为同一个?
我现在平时使用pockeflow进行开发的时候,都是只用post节点的。我看了您的一些demo,在prep中的返回,到exec阶段还要校验prep的返回合法性,这无疑增加了很多不必要的代码,如果将这三个阶段合并为一个,我觉得框架可以更短。
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 感谢回复,你的幂等重试这个设计是有道理的!不过我图中的那个提前跳出的问题,在基于prep、exec、post的设计中,有什么更好的实现方式吗,希望您能给我一些灵感或指导。
这样: https://claude.ai/share/d295c8e6-23ff-468d-a766-cdcf3494f896