在 LangChain4j(Java 版的 LangChain)中,wiringMode = EXPLICIT
表示你明确地以显式方式手动定义组件之间的连接和数据流,而不是依赖框架的自动推断或默认行为。
具体含义
显式控制数据流
- 你需要手动指定每个组件的输入来源和输出目标。
- 例如:
A的输出 → B的输入
这种关系必须明确声明,不能省略。
避免隐式行为
- 框架不会自动推断组件如何连接(比如按顺序传递数据)。
- 所有依赖关系必须通过代码清晰定义,避免意外行为。
适用场景
- 复杂链式流程(多个分支、条件逻辑)。
- 需要严格调试或维护的代码(显式连接更易追踪)。
代码示例(对比)
隐式模式(IMPLICIT,默认可能的行为)
java
// 框架自动按顺序连接 A → B → C
Chain chain = Chain.builder()
.add(new ComponentA())
.add(new ComponentB())
.add(new ComponentC())
.build();
// 框架自动按顺序连接 A → B → C
Chain chain = Chain.builder()
.add(new ComponentA())
.add(new ComponentB())
.add(new ComponentC())
.build();
显式模式(EXPLICIT)
java
// 必须手动指定连接方式
Chain chain = Chain.builder()
.wire(new ComponentA().output("data"), new ComponentB().input("input"))
.wire(new ComponentB().output("result"), new ComponentC().input("param"))
.build();
// 必须手动指定连接方式
Chain chain = Chain.builder()
.wire(new ComponentA().output("data"), new ComponentB().input("input"))
.wire(new ComponentB().output("result"), new ComponentC().input("param"))
.build();
为什么用 EXPLICIT?
- 更安全:减少因框架自动推断导致的意外错误。
- 更灵活:支持非线性的复杂流程(如分支、循环)。
- 更易维护:代码明确展示数据流向,便于调试。
在 LangChain4j 中,这种设计常见于需要精细控制的高阶用法。