pub struct AgentFlowNode { /* private fields */ }Expand description
Agent 在 Graph 中的节点包装。
将 ToolUseLoop 适配为 FlowNode,使其可以作为 Graph 的节点执行。
§State 约定
- 输入:
ctx.get("messages")→Vec<serde_json::Value>或serde_json::Value数组 - 输出:
ctx.set("messages")→ 更新后的消息列表 - 自定义 key: 通过
message_key配置
§执行模式
- ToolUseLoop 模式(默认):直接调用 ToolUseLoop,保留所有功能(context budget、compaction、fallback、retry)
- ReAct Graph 模式:内部构建 LLM → Condition → Tool → LLM 有环图,架构更清晰
§示例
ⓘ
use lellm_agent::AgentFlowNode;
use lellm_graph::{GraphBuilder, NodeKind};
// ToolUseLoop 模式(默认)
let agent = AgentFlowNode::new("agent", tool_use_loop.clone());
let mut graph = GraphBuilder::new("my_graph");
graph.node("agent", NodeKind::External(Arc::new(agent)));
// ReAct Graph 模式
let agent = AgentFlowNode::new("agent", tool_use_loop)
.use_react_graph(true);
graph.node("agent_react", NodeKind::External(Arc::new(agent)));Implementations§
Source§impl AgentFlowNode
impl AgentFlowNode
Sourcepub fn new(name: impl Into<String>, loop_: ToolUseLoop) -> Self
pub fn new(name: impl Into<String>, loop_: ToolUseLoop) -> Self
创建新的 AgentFlowNode。
Sourcepub fn message_key(self, key: impl Into<String>) -> Self
pub fn message_key(self, key: impl Into<String>) -> Self
设置 State 中消息的 key(默认 “messages”)。
Sourcepub fn use_react_graph(self, enabled: bool) -> Self
pub fn use_react_graph(self, enabled: bool) -> Self
使用 ReAct Graph 模式(内部构建 LLM → Condition → Tool → LLM 有环图)。
Trait Implementations§
Source§impl Clone for AgentFlowNode
impl Clone for AgentFlowNode
Source§fn clone(&self) -> AgentFlowNode
fn clone(&self) -> AgentFlowNode
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl FlowNode for AgentFlowNode
impl FlowNode for AgentFlowNode
Source§fn execute<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
ctx: &'life1 mut NodeContext<'life2>,
) -> Pin<Box<dyn Future<Output = Result<(), GraphError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn execute<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
ctx: &'life1 mut NodeContext<'life2>,
) -> Pin<Box<dyn Future<Output = Result<(), GraphError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
执行 — 运行完整的 Agent Loop。
Auto Trait Implementations§
impl !RefUnwindSafe for AgentFlowNode
impl !UnwindSafe for AgentFlowNode
impl Freeze for AgentFlowNode
impl Send for AgentFlowNode
impl Sync for AgentFlowNode
impl Unpin for AgentFlowNode
impl UnsafeUnpin for AgentFlowNode
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