Closed brycecf closed 1 month ago
LlamaIndex Workflows offer several unique features and functionalities that differentiate them from LangGraph:
llama-index
package for a quick setup or use llama-index-core
to add specific integrations from LlamaHub, which offers over 300 integration packages.OpenAIAgent
implementation built on the OpenAI API for function calling, allowing rapid agent development.These features collectively make LlamaIndex a comprehensive framework for building context-augmented generative AI applications with LLMs.
To continue talking to Dosu, mention @dosu.
@brycecf Keep in mind this might be biased because I (and the other members of our fantastic team) worked on this, but!
Graph/DAG based approaches like langgraph (and our previous query pipelines) have to do a ton of heavy lifting under the hood to figure out "what runs next, what's the inputs, etc.". All this logic comes with tons of edge cases, which was becoming very evident in our increasingly complicated query pipeline codebase.
Workflows (and event-driven programming in general) offer a more robust solution. The code is much more simple under the hood, because now it's entirely in the user's hands what steps run next, how a user debug things, and removes a lot of the "black box" issues that other approaches like our query pipelines have.
Workflows have one job. If an event gets emitted, that event triggers any step that handles it.
This also impacts the dex-ux directly as well
I believe event driven programming offers an alternative to the dag/graph/pipeline based approaches out there, offering the mixture of flexibility, interpretability, and debuggability that agentic applications need today.
@logan-markewich Thank you for the thorough reply. I'm appeased :)
Question Validation
Question
Both are quite verbose and seem to be converging in relative complexity, especially compared to the existing query pipelines.
Given that and as a non-LlamaParse user, what's the benefit of using Workflows over LangGraph (given LangChain's overall momentum)?
Particularly, given the current examples seem to be largely reimplementing existing functionality, but with more code...