I'm really puzzled about LangChain. It looks like a lot of cruft and abstraction over something that is very simple. Every senior engineer I know feels the same way. Please explain why I'm wrong.
The only thing good about it in my experience is agents+tools+out-of-the-box wrappers for various LLM providers and such, but if you need to support multiple why not just roll your own adapter pattern?
It adds a cognitive burden, and hides the "magic" and prompts three layers deep with agents, to something already cognitively burdensome if you're looping inputs on themselves or calling multiple agents. In my opinion, of course.
I find langchain complicates more than it helps: abstractions are leaky, API is not consistent across components, and it creates overly complex components.
It's too many layers of over-engineered complexity, and it's for underlying components that are changing very rapidly, so you are getting bogged down with out-dated architecture very quickly.
I'd appreciate the steelman of the opposite too. I want and plan to use LLMs for basic production applications (augmented retrieval mainly - i.e. vector db, do a search, get a summary of results; data cleaning pipelines etc.)
Do I need to learn langchain to be substantially more productive at that stuff?
For those of us that are not on the level of senior engineers or even non-senior engineers, it is an interesting way to get more exposure and practice with all of this. I would have no idea where to start if I wanted to do some of the stuff I can do with langchain. Not that's it is world-changing but my dev knowledge just hasn't reached that point yet (but I would love for it to). Learning to do all this on my own in better and more efficient manners would be incredible but I wouldn't even know where to start.
It adds a cognitive burden, and hides the "magic" and prompts three layers deep with agents, to something already cognitively burdensome if you're looping inputs on themselves or calling multiple agents. In my opinion, of course.
It's too many layers of over-engineered complexity, and it's for underlying components that are changing very rapidly, so you are getting bogged down with out-dated architecture very quickly.
Do I need to learn langchain to be substantially more productive at that stuff?