its good that there is a competition in framework space, but does anyone have holistic view or opinions about their differences and where they shine?
For example,
* there is LangChain and LangGraph - used a lot, but framework bloat is hated as well
* mastra - for typescript projects
* pydantic, agno, strands, openai agents sdk, claude agents sdk, and so on and on and on
I am very curious about this as well. I'm looking for something that does really well with workflows that require 20 plus steps including a couple while loops and user verifications, but also something simple like a chat bot with access to MCP servers and tools. I need to be able to use Gemini directly, openAI directly, and openrouter at various steps.
Right now I am having trouble deciding whether it's better to just write my own harness, or use langchain, or something else.
> Strands
I like it quite a bit. Imo it's sort of like the "Flask" of frameworks. It's pretty easy to get started with and has a pretty pluggable ecosystem where you can choose models, providers, tools without much lock-in.
It has AWS weight behind it (for better or worse) and has a slight skew towards AWS solutions but it's still trivial to skip those.
Krew.ai is another one not on your list. It's fairly comprehensive but it was too "enterprisy" and too heavy on proprietary jargon for all the components imo. I think the tech is ok but the docs and terminology is very dense.
I also briefly looked at LangGraph and it's fairly straight forward and provides a lot of the same abstractions and interfaces as Strands but it felt too easy to accidentally miss them and end up reinventing the wheel. Put another way, it was easy to accidentally miss the abstraction and wade into DIY primitive territory. That may be a feature to some, but I thought it would be a distraction for quick adoption at a small company.
When I checked a few months ago, LangGraph, Krew, and OpenAI Agents SDK had better out of the box integration with common observability/monitoring/tracing solutions. Strands has pretty robust Otel support but not all providers had implemented the Otel AI spec at the time so it required some adapters/wrapper code (plenty of community examples online, just slightly less plug and play)
At the time, I don't think Claude Agents SDK existed yet or it was very new. I skipped OpenAI SDK because we wanted a multi-vendor solution. Pydantic Agents was too new so I skipped that
[dead]
> * there is LangChain and LangGraph - used a lot, but framework bloat is hated as well
I've used them a fair bit, and I'm not a huge fan. Only self-hosted, I can't comment on their cloud-SaaS agent runner thing. The observability looks neat, though.
LangChain is nice enough, I appreciate having a unified API across providers. LangGraph is... just not all that much? As in the DAG is too much for a simple agent, but when I start thinking about a large agent and dealing with that flow in their their DAG DSL my head starts to hurt. "Go To Definition" isn't going to help navigate that very well, the state is going to be a lot of Optional's with not a lot of info on when they have a real value at which stages in the DAG.
I had substantial issues with branches in my DAG because the state has to include all possible fields for every step. It gets hard to mentally track all the combinations of fields that will be present or missing depending on the path taken upstream of this node. Do I have RAG results? Not sure, it depends on whether the query includes X, but then later it also depends on whether a tool returns a particular result, in which case it can either be missing, have a single value or have 2 values. Yada yada, in a sufficiently large DAG it gets hard to track those. Things are much cleaner in function world where you can declare "this functions require X and Y, and can optionally provide Z".
I mostly go directly to the API these days, but I'm fairly settled on Ollama. I might use LangChain if I think I'll want another backend, but I also might use OpenRouter. I haven't yet, but it seems cool.