pub struct LLMNode {
pub name: String,
/* private fields */
}Expand description
单次 LLM 调用节点。
与 AgentNode(完整 ReAct 循环)不同,LLMNode 仅执行一次 LLM 调用,
将响应写入 State。配合 ToolNode + ConditionNode,可手动构建 ReAct 循环。
⚠️ 警告: 使用 LLMNode + ToolNode 手动构建循环时,你将失去以下保护:
ParallelSafety并发工具执行RetryPolicy自动重试FallbackStrategy容错路由- 输出/推理预算保险丝
Context Compaction上下文压缩
适用场景(窄但真实):
- 自定义 Agent Loop — 实现非 ReAct 的交互模式(如 multi-agent debate)
- 调试/教学 — 逐步观察每轮 LLM 输入输出
- 混合编排 — 多个 AgentNode 之间插入自定义处理逻辑
除非你有明确理由,否则请使用 AgentNode。
ⓘ
// 手动 ReAct 循环:
GraphBuilder::new("react")
.start("llm")
.node("llm", NodeKind::Llm(LLMNode::new("llm", model)))
.node("tools", NodeKind::Tool(ToolNode::all(tool_executor)))
.node("route", NodeKind::Condition(
ConditionNode::builder("route")
.branch("tools", |s| has_tool_calls(s))
.branch("end", |_| true)
.build()
))
.edge("llm", "route")
.edge("tools", "llm")
.end("end")
.build();Fields§
§name: StringImplementations§
Trait Implementations§
Source§impl GraphNode for LLMNode
impl GraphNode for LLMNode
Source§fn execute<'life0, 'life1, 'async_trait>(
&'life0 self,
state: &'life1 mut State,
) -> Pin<Box<dyn Future<Output = Result<NextStep, GraphError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn execute<'life0, 'life1, 'async_trait>(
&'life0 self,
state: &'life1 mut State,
) -> Pin<Box<dyn Future<Output = Result<NextStep, GraphError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
执行节点逻辑(阻塞模式)。
Source§fn execute_stream<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
state: &'life1 mut State,
_sink: &'life2 Sender<GraphEvent>,
span_id: SpanId,
) -> Pin<Box<dyn Future<Output = Result<StreamNodeResult, GraphError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn execute_stream<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
state: &'life1 mut State,
_sink: &'life2 Sender<GraphEvent>,
span_id: SpanId,
) -> Pin<Box<dyn Future<Output = Result<StreamNodeResult, GraphError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
执行节点逻辑(流式模式),将内部事件转发到 channel。 Read more
Auto Trait Implementations§
impl !RefUnwindSafe for LLMNode
impl !UnwindSafe for LLMNode
impl Freeze for LLMNode
impl Send for LLMNode
impl Sync for LLMNode
impl Unpin for LLMNode
impl UnsafeUnpin for LLMNode
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more