Frustrated with the current state of AI Orchestration frameworks
I have been using LangGraph for a while and recently ADK from Google and to be honest, I'm frustrated with both of them!
The pipelining infrastructure in both the libraries feels like it hasn't been thought out at all.
In LangGraph for example the whole Pregel based implementation and its enforcement of a global state is a pain to work with when I have branches in my graph. In such cases I have to ensure that the reconciliation logic for output of every node across the branches is baked into my global state through reducers and if I have long branches(each branch consisting of multiple nodes) then I have to ensure I have reducers for each key that any of the nodes contributes to the state.
Another issue with the global state enforcement is that different branches do not have separate states and can get corrupted if the nodes write to the same key when running parallely. As far as I can tell ADK 1.0 doesn't solve these issues either.
I feel the pipelining in these libraries could have been much more simpler than its been implemented right now with copies of the state being passed to each branch and then a node that implements the join logic for the two branches, this solves both the issues.
It seems like these libraries are built around a single pattern of having an LLM orchestrator with tools and at every step it decides which tools to call and what to do next and everything else suffers. Everytime I want to build a semi-deterministic workflow I feel like I'm rowing against the river.
Has anyone found a way around this in these LangGraph or ADK?