Node.js Examples
Complete runnable Node.js examples for Blazen
Node.js Examples
Five complete, runnable examples that demonstrate core Blazen workflow patterns.
Basic Workflow
A 3-step sequential pipeline: StartEvent → GreetEvent → FormattedEvent → StopEvent.
wf.addStep("greet", ["GreetEvent"], async (event, ctx) => {
return { type: "blazen::StopEvent", result: { greeting: `Hello, ${event.name}!` } };
});
npx tsx examples/basic_workflow.ts
Streaming Workflow
Publishes progress events while processing via ctx.writeEventToStream().
await ctx.writeEventToStream({ type: "Progress", step: i });
const result = await wf.runStreaming({}, (event) => console.log(event));
npx tsx examples/streaming_workflow.ts
Branching Workflow
Conditional fan-out by returning an array of events.
return [
{ type: "PositiveEvent", text },
{ type: "NegativeEvent", text },
];
npx tsx examples/branching_workflow.ts
LLM RAG Workflow
Multi-step RAG pipeline using context for shared state between steps. Uses typed ChatMessage and CompletionResponse:
import { CompletionModel, ChatMessage } from "blazen";
const model = CompletionModel.openai(process.env.OPENAI_API_KEY);
const response = await model.complete([
ChatMessage.system("Answer based on the provided documents."),
ChatMessage.user(query),
]);
console.log(response.content); // typed string
console.log(response.usage); // { promptTokens, completionTokens, totalTokens }
await ctx.set("documents", docs);
npx tsx examples/llm_rag_workflow.ts
Human-in-the-Loop
Side-effect steps that pause for external input via ctx.sendEvent().
await ctx.sendEvent({ type: "ReviewComplete" });
return null;
npx tsx examples/human_in_the_loop.ts