rune-chain-parallel 0.1.0

ParallelChain for rune-chain: fan-out to multiple chains concurrently and merge outputs
Documentation

rune-chain-parallel

ParallelChain for rune-chain: fan-out to multiple chains concurrently and merge outputs.

crates.io docs.rs license

All registered steps execute simultaneously using tokio::spawn. Their text outputs are merged into the shared variable map keyed by each step's output_key, making them available to downstream chains. Token usage across all branches is summed.

Usage

use rune_chain_parallel::ParallelChain;
use rune_chain_core::{Chain, ChainError, GenerateResult, PromptArgs, prompt_args};
use async_trait::async_trait;

struct UpperCase;
#[async_trait]
impl Chain for UpperCase {
    async fn call(&self, input: PromptArgs) -> Result<GenerateResult, ChainError> {
        let text = input.get("input").and_then(|v| v.as_str()).unwrap_or("").to_uppercase();
        Ok(GenerateResult::from_text(text))
    }
}

# #[tokio::main]
# async fn main() {
let chain = ParallelChain::new().branch(UpperCase, "upper");
let result = chain.call(prompt_args! { "input" => "hi" }).await.unwrap();
# let _ = result;
# }

License

MIT