LlamaIndex Workflows are a framework for orchestrating and chaining together complex systems of steps and events.
What can you build with Workflows?Workflows shine when you need to orchestrate complex, multi-step processes that involve AI models, APIs, and decision-making. Here are some examples of what you can build:
The async-first, event-driven architecture makes it easy to build workflows that can route between different capabilities, implement parallel processing patterns, loop over complex sequences, and maintain state across multiple steps - all the features you need to make your AI applications production-ready.
Arize Phoenix
and OpenTelemetry
right out of the box.Install the package:
pip install llama-index-workflows
And create your first workflow:
import asyncio from pydantic import BaseModel, Field from workflows import Context, Workflow, step from workflows.events import Event, StartEvent, StopEvent class MyEvent(Event): msg: list[str] class RunState(BaseModel): num_runs: int = Field(default=0) class MyWorkflow(Workflow): @step async def start(self, ctx: Context[RunState], ev: StartEvent) -> MyEvent: async with ctx.store.edit_state() as state: state.num_runs += 1 return MyEvent(msg=[ev.input_msg] * state.num_runs) @step async def process(self, ctx: Context[RunState], ev: MyEvent) -> StopEvent: data_length = len("".join(ev.msg)) new_msg = f"Processed {len(ev.msg)} times, data length: {data_length}" return StopEvent(result=new_msg) async def main(): workflow = MyWorkflow() # [optional] provide a context object to the workflow ctx = Context(workflow) result = await workflow.run(input_msg="Hello, world!", ctx=ctx) print("Workflow result:", result) # re-running with the same context will retain the state result = await workflow.run(input_msg="Hello, world!", ctx=ctx) print("Workflow result:", result) if __name__ == "__main__": asyncio.run(main())
In the example above
StartEvent
will be run first.StopEvent
will end the workflow.Context
object is also used to share information between steps.Visit the complete documentation for more examples using llama-index
!
llama-index
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4