杠精派
派聪明
0/512

热门评论

Gxyrious 2026年03月03日 23:33
引用原文:参数的类型依赖于 schema.value.type 字段来判断。如果类型为 ref,表示该参数并不是直接赋值,而是通过引用其他节点的输出结果来获得。此时,系统会根据 schema.value.content 来定位到具体的数据来源。
参数的scheme.value.type字段标识它的类型,其中ref是一种特殊的类型,标识对其他节点输出的引用
点赞
回复1 取消回复
Gxyrious 2026年03月03日 23:33
参数的`schema.value.type `字段
点赞
回复 取消回复

18 条评论

frant 2026年03月31日 16:04
引用原文:跟哪些节点有关联
@派聪明 已经有edge来描述节点之间的关系了,还需要在Node中定义吗
点赞
回复1 取消回复
派聪明 2026年03月31日 16:07
在DSL设计层面,Edge确实已经描述了节点之间的连接关系。但在实际执行过程中,Node类中仍然需要定义关联关系(如preNodes、nextNodes等),这是出于执行效率的考虑。 原因如下: 1. **DSL层 vs 执行层分离**: - Edge用于DSL静态定义,描述节点间的原始连接关系 - Node中的preNodes/nextNodes等是执行时动态维护的关联关系,用于提高执行效率 2. **执行性能优化**: - 如果每次执行都需要遍历整个Edge列表来查找关联节点,效率会很低 - 在Node中直接维护前置节点和后置节点列表,可以快速访问关联节点 3. **动态执行需求**: - 工作流执行过程中可能需要动态调整节点关系(如异常处理时) - 直接在Node中维护这些关系更便于执行时的状态管理和修改 4. **状态判断依赖**: - 节点状态(如MARK、SKIP)的判断依赖于节点间的关联关系 - 在Node中维护这些关系使得状态判断更直观高效 这种设计类似于图数据结构中的邻接表表示法,既保留了原始的边信息,又在每个节点中维护了相邻节点列表,兼顾了定义清晰性和执行效率。
点赞
回复 取消回复
frant 2026年03月31日 15:50
引用原文:noeParam
nodeParam
点赞
回复 取消回复
清清 2026年03月31日 10:32
@派聪明 edge的sourcehandle的作用是什么
点赞
回复1 取消回复
派聪明 2026年03月31日 10:34
在PaiFlow的DSL中,**`sourceHandle`** 是边(Edge)对象中的一个核心字段,主要用于**区分节点的执行路径类型**,实现工作流的精确路由控制。其核心作用如下: --- ### **1. 区分正常分支与异常分支** - **`sourceHandle`** 通过**前缀标识**明确表示边的类型: - **`normal_one_of`**:表示**正常执行路径**(主流程)。 ```json { "sourceHandle": "normal_one_of::xxx", "sourceNodeId": "node-A", "targetNodeId": "node-B" } ``` - **`fail_one_of`**:表示**异常处理路径**(节点失败时触发)。 ```json { "sourceHandle": "fail_one_of::xxx", "sourceNodeId": "node-A", "targetNodeId": "node-C" } ``` - **实际场景**: 若节点A执行失败,工作流引擎会自动走`fail_one_of`指向的节点C(如错误处理或兜底逻辑),而非正常流程的节点B。 --- ### **2. 支持条件分支与动态路由** - **条件判断**: 当`sourceHandle`携带`condition`字段时,表示该边是**条件边**,需满足条件才触发。 ```json { "sourceHandle": "condition_one_of::xxx", "condition": "output.score > 0.8", "sourceNodeId": "node-A", "targetNodeId": "node-D" } ``` **执行逻辑**:仅当节点A的输出`score > 0.8`时,才跳转到节点D。 --- ### **3. 精确指定引用字段(多输出场景)** - **节点多输出处理**: 当节点输出多个字段(如LLM同时返回`text`和`score`),下游节点可通过`sourceHandle`**精确引用目标字段**。 ```json { "sourceHandle": "output::text", // 明确引用text字段 "sourceNodeId": "node-A", "targetNodeId": "node-B" } ``` **作用**:避免数据歧义,确保下游节点获取正确的输入数据。 --- ### **4. 控制执行链路的构建** 在工作流引擎执行链路构建时,`sourceHandle`是**分类处理边的依据**: - **正常路径**:加入`nextNodes`列表(主流程后续节点)。 - **异常路径**:加入`failNodes`列表(异常处理节点)。 - **条件路径**:动态计算条件决定是否加入执行链。 --- ### **示例:异常处理流程** ```json { "edges": [ { "sourceHandle": "normal_one_of::123", // 正常路径 "sourceNodeId": "llm-node", "targetNodeId": "tts-node" }, { "sourceHandle": "fail_one_of::456", // 异常路径 "sourceNodeId": "llm-node", "targetNodeId": "error-handler-node" } ] } ``` - **执行逻辑**: - 若`llm-node`成功 → 执行`tts-node`(正常流程)。 - 若`llm-node`失败 → 执行`error-handler-node`(异常兜底)。 --- ### **总结** `sourceHandle`是PaiFlow DSL中实现**工作流智能路由**的关键字段,通过前缀标识区分路径类型(正常/异常/条件),并支持精确字段引用,确保数据流向可控、异常可兜底、分支可动态判断。它是工作流引擎复杂逻辑(如容错、条件跳转)的底层支撑机制。
点赞
回复 取消回复
QiQ 2026年03月23日 15:58
引用原文: /protocol/build/{flow_id} 接口
完整地址:/workflow/v1/protocol//build/{flowId}
点赞
回复 取消回复
QiQ 2026年03月23日 14:54
引用原文:其中 data 是整个 DSL 的灵魂部分
这里的data指的是节点中的data而不是整个DSL的data,里面的各个字段都是某个节点的属性
点赞
回复 取消回复
Ψ 2026年03月19日 20:35
引用原文:条件分支内部流转类型,normal_one_of 和 intent_chain 分别用于单分支判断、意图匹配。
@条件判断节点是怎么实现的
点赞
回复 取消回复
Chrrrik_ 2026年03月13日 11:54
引用原文:如果所有前置节点都没走向这个节点,就可以断定这个节点没有任何可能会被执行,于是标记为 SKIP。
相当于两阶段判定,MARK表明当前分支可能没走,标注它是个潜在的SKIP;SKIP检查所有MARK,如果所有前置节点都没走,标注它就是SKIP。
点赞
回复 取消回复
落后的诺言 2026年03月12日 21:50
引用原文:sourceHandle 一般用于条件判断或插件输出场景,比如:某个节点输出了多个字段(如 LLM 输出 text 和 score);你希望下游节点只依赖其中一个字段,就可以通过 sourceHandle 精确绑定。
这里前面提到sourcehandle是为了表示这条边是正常的情况走还是错误的情况走,怎么这里说是精确绑定?
点赞
回复1 取消回复
无怀 2026年04月08日 15:54
可能是sourcehandle可以绑定不同的字段,这个边判断只是他的一个功能,它的核心功能应该是绑定一个节点,让下游能够根据他自己的东西,接上某一个节点
点赞
回复 取消回复
zhiwenfan 2026年03月10日 13:57
引用原文:自研的工作流引擎
@派聪明 为什么要自研,所谓的自研不还是仿照的LangGraph 吗,而且功能更少了?
2
回复1 取消回复
派聪明 2026年03月10日 13:58
自研工作流引擎确实有考虑LangGraph等成熟框架,但选择自研有以下几个原因: 1. **深度定制需求**:企业级应用常有特定业务逻辑,通用框架难以满足。如参考资料所示,PaiFlow的DSL设计针对AI工作流优化,支持LLM、插件等特定节点类型,这是通用框架不具备的。 2. **技术栈整合**:自研能更好地与公司现有技术栈融合,减少集成成本。参考资料中显示,PaiFlow的DSL直接存储在workflow表中,与数据库深度集成。 3. **性能优化**:针对特定场景优化执行链路,如参考资料中提到的执行链构建和节点状态管理,比通用框架更高效。 4. **控制权与维护**:自研意味着完全的控制权,不受外部框架更新影响。参考资料中展示的DSL规范和执行逻辑完全自主可控。 5. **功能聚焦**:看似"功能更少"实则更专注,如参考资料中强调的异常处理、重试机制等都是针对AI工作流的关键特性,去除了不必要的复杂性。 自研不是简单复制,而是基于对业务深刻理解后的针对性设计,正如参考资料中展示的DSL规范和执行链路构建,都是为AI工作流量身定制的。
1
回复 取消回复
liuyongyuan 2026年03月09日 23:12
引用原文:类型是一个 Map
图里不是List
1
回复 取消回复

目录