Skip to content

LangChain4j(Java 版的 LangChain)中,wiringMode = EXPLICIT 表示你明确地以显式方式手动定义组件之间的连接和数据流,而不是依赖框架的自动推断或默认行为。


具体含义

  1. 显式控制数据流

    • 你需要手动指定每个组件的输入来源和输出目标。
    • 例如:A的输出 → B的输入 这种关系必须明确声明,不能省略。
  2. 避免隐式行为

    • 框架不会自动推断组件如何连接(比如按顺序传递数据)。
    • 所有依赖关系必须通过代码清晰定义,避免意外行为。
  3. 适用场景

    • 复杂链式流程(多个分支、条件逻辑)。
    • 需要严格调试或维护的代码(显式连接更易追踪)。

代码示例(对比)

隐式模式(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 中,这种设计常见于需要精细控制的高阶用法。