pub struct WorkflowBuilder { /* private fields */ }Expand description
工作流构建器
Implementations§
Source§impl WorkflowBuilder
impl WorkflowBuilder
Sourcepub fn new(id: &str, name: &str) -> WorkflowBuilder
pub fn new(id: &str, name: &str) -> WorkflowBuilder
创建新的工作流构建器
Sourcepub fn description(self, desc: &str) -> WorkflowBuilder
pub fn description(self, desc: &str) -> WorkflowBuilder
设置描述
Sourcepub fn start(self) -> WorkflowBuilder
pub fn start(self) -> WorkflowBuilder
添加开始节点
Sourcepub fn start_with_id(self, id: &str) -> WorkflowBuilder
pub fn start_with_id(self, id: &str) -> WorkflowBuilder
添加开始节点(自定义 ID)
Sourcepub fn end(self) -> WorkflowBuilder
pub fn end(self) -> WorkflowBuilder
添加结束节点
Sourcepub fn end_with_id(self, id: &str) -> WorkflowBuilder
pub fn end_with_id(self, id: &str) -> WorkflowBuilder
添加结束节点(自定义 ID)
Sourcepub fn task<F, Fut>(self, id: &str, name: &str, executor: F) -> WorkflowBuilderwhere
F: Fn(WorkflowContext, WorkflowValue) -> Fut + Send + Sync + 'static,
Fut: Future<Output = Result<WorkflowValue, String>> + Send + 'static,
pub fn task<F, Fut>(self, id: &str, name: &str, executor: F) -> WorkflowBuilderwhere
F: Fn(WorkflowContext, WorkflowValue) -> Fut + Send + Sync + 'static,
Fut: Future<Output = Result<WorkflowValue, String>> + Send + 'static,
添加任务节点
Sourcepub fn task_with_config<F, Fut>(
self,
id: &str,
name: &str,
executor: F,
retry: RetryPolicy,
timeout_ms: u64,
) -> WorkflowBuilderwhere
F: Fn(WorkflowContext, WorkflowValue) -> Fut + Send + Sync + 'static,
Fut: Future<Output = Result<WorkflowValue, String>> + Send + 'static,
pub fn task_with_config<F, Fut>(
self,
id: &str,
name: &str,
executor: F,
retry: RetryPolicy,
timeout_ms: u64,
) -> WorkflowBuilderwhere
F: Fn(WorkflowContext, WorkflowValue) -> Fut + Send + Sync + 'static,
Fut: Future<Output = Result<WorkflowValue, String>> + Send + 'static,
添加任务节点(带配置)
Sourcepub fn agent<F, Fut>(self, id: &str, name: &str, agent_fn: F) -> WorkflowBuilderwhere
F: Fn(WorkflowContext, WorkflowValue) -> Fut + Send + Sync + 'static,
Fut: Future<Output = Result<WorkflowValue, String>> + Send + 'static,
pub fn agent<F, Fut>(self, id: &str, name: &str, agent_fn: F) -> WorkflowBuilderwhere
F: Fn(WorkflowContext, WorkflowValue) -> Fut + Send + Sync + 'static,
Fut: Future<Output = Result<WorkflowValue, String>> + Send + 'static,
添加智能体节点
Sourcepub fn llm_agent(
self,
id: &str,
name: &str,
agent: Arc<LLMAgent>,
) -> WorkflowBuilder
pub fn llm_agent( self, id: &str, name: &str, agent: Arc<LLMAgent>, ) -> WorkflowBuilder
添加 LLM 智能体节点(使用 LLMAgent)
允许在工作流中使用预配置的 LLMAgent。
§示例
ⓘ
let agent = LLMAgentBuilder::new()
.with_id("my-agent")
.with_provider(Arc::new(openai_from_env()?))
.with_system_prompt("You are a helpful assistant.")
.build()?;
let workflow = WorkflowBuilder::new("test", "Test")
.start()
.llm_agent("agent1", "LLM Agent", Arc::new(agent))
.end()
.build();Sourcepub fn llm_agent_with_template(
self,
id: &str,
name: &str,
agent: Arc<LLMAgent>,
prompt_template: String,
) -> WorkflowBuilder
pub fn llm_agent_with_template( self, id: &str, name: &str, agent: Arc<LLMAgent>, prompt_template: String, ) -> WorkflowBuilder
Sourcepub fn condition<F, Fut>(
self,
id: &str,
name: &str,
condition_fn: F,
) -> ConditionBuilderwhere
F: Fn(WorkflowContext, WorkflowValue) -> Fut + Send + Sync + 'static,
Fut: Future<Output = bool> + Send + 'static,
pub fn condition<F, Fut>(
self,
id: &str,
name: &str,
condition_fn: F,
) -> ConditionBuilderwhere
F: Fn(WorkflowContext, WorkflowValue) -> Fut + Send + Sync + 'static,
Fut: Future<Output = bool> + Send + 'static,
添加条件节点
Sourcepub fn parallel(self, id: &str, name: &str) -> ParallelBuilder
pub fn parallel(self, id: &str, name: &str) -> ParallelBuilder
添加并行节点
Sourcepub fn loop_node<F, Fut, C, CFut>(
self,
id: &str,
name: &str,
body: F,
condition: C,
max_iterations: u32,
) -> WorkflowBuilderwhere
F: Fn(WorkflowContext, WorkflowValue) -> Fut + Send + Sync + 'static,
Fut: Future<Output = Result<WorkflowValue, String>> + Send + 'static,
C: Fn(WorkflowContext, WorkflowValue) -> CFut + Send + Sync + 'static,
CFut: Future<Output = bool> + Send + 'static,
pub fn loop_node<F, Fut, C, CFut>(
self,
id: &str,
name: &str,
body: F,
condition: C,
max_iterations: u32,
) -> WorkflowBuilderwhere
F: Fn(WorkflowContext, WorkflowValue) -> Fut + Send + Sync + 'static,
Fut: Future<Output = Result<WorkflowValue, String>> + Send + 'static,
C: Fn(WorkflowContext, WorkflowValue) -> CFut + Send + Sync + 'static,
CFut: Future<Output = bool> + Send + 'static,
添加循环节点
Sourcepub fn sub_workflow(
self,
id: &str,
name: &str,
sub_workflow_id: &str,
) -> WorkflowBuilder
pub fn sub_workflow( self, id: &str, name: &str, sub_workflow_id: &str, ) -> WorkflowBuilder
添加子工作流节点
Sourcepub fn transform<F, Fut>(
self,
id: &str,
name: &str,
transform_fn: F,
) -> WorkflowBuilderwhere
F: Fn(HashMap<String, WorkflowValue>) -> Fut + Send + Sync + 'static,
Fut: Future<Output = WorkflowValue> + Send + 'static,
pub fn transform<F, Fut>(
self,
id: &str,
name: &str,
transform_fn: F,
) -> WorkflowBuilderwhere
F: Fn(HashMap<String, WorkflowValue>) -> Fut + Send + Sync + 'static,
Fut: Future<Output = WorkflowValue> + Send + 'static,
添加数据转换节点
Sourcepub fn node(self, node: WorkflowNode) -> WorkflowBuilder
pub fn node(self, node: WorkflowNode) -> WorkflowBuilder
添加自定义节点
Sourcepub fn edge(self, from: &str, to: &str) -> WorkflowBuilder
pub fn edge(self, from: &str, to: &str) -> WorkflowBuilder
添加边(不改变当前节点)
Sourcepub fn conditional_edge(
self,
from: &str,
to: &str,
condition: &str,
) -> WorkflowBuilder
pub fn conditional_edge( self, from: &str, to: &str, condition: &str, ) -> WorkflowBuilder
添加条件边
Sourcepub fn error_edge(self, from: &str, to: &str) -> WorkflowBuilder
pub fn error_edge(self, from: &str, to: &str) -> WorkflowBuilder
添加错误处理边
Sourcepub fn goto(self, node_id: &str) -> WorkflowBuilder
pub fn goto(self, node_id: &str) -> WorkflowBuilder
跳转到指定节点(设置当前节点)
Sourcepub fn then(self, node_id: &str) -> WorkflowBuilder
pub fn then(self, node_id: &str) -> WorkflowBuilder
从当前节点连接到指定节点
Sourcepub fn build(self) -> WorkflowGraph
pub fn build(self) -> WorkflowGraph
构建工作流图
Sourcepub fn build_validated(self) -> Result<WorkflowGraph, Vec<String>>
pub fn build_validated(self) -> Result<WorkflowGraph, Vec<String>>
验证并构建
Auto Trait Implementations§
impl Freeze for WorkflowBuilder
impl !RefUnwindSafe for WorkflowBuilder
impl Send for WorkflowBuilder
impl Sync for WorkflowBuilder
impl Unpin for WorkflowBuilder
impl UnsafeUnpin for WorkflowBuilder
impl !UnwindSafe for WorkflowBuilder
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
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Message for T
impl<T> Message for T
Source§fn from_boxed(m: BoxedMessage) -> Result<Self, BoxedDowncastErr>
fn from_boxed(m: BoxedMessage) -> Result<Self, BoxedDowncastErr>
Convert a BoxedMessage to this concrete type
Source§fn box_message(self, pid: &ActorId) -> Result<BoxedMessage, BoxedDowncastErr>
fn box_message(self, pid: &ActorId) -> Result<BoxedMessage, BoxedDowncastErr>
Convert this message to a BoxedMessage