LangChain has become the default answer for "how do I build an LLM application?" But it's not always the right answer. Here's our honest take after building production AI systems with both approaches.
When LangChain Makes Sense
LangChain shines for complex agent workflows — when you need tool use, memory management, multi-step reasoning, and the ability to swap out models. The abstractions pay off when your pipeline has real complexity. RAG pipelines with multiple retrieval steps, agents that use external tools, and systems that need to work with multiple LLM providers are all good fits.
When to Go Raw
For a simple chatbot, a single-step summarisation task, or a classification endpoint, LangChain adds more complexity than it removes. A direct call to the OpenAI API with a well-crafted system prompt is easier to debug, easier to test, and easier for the next developer to understand.
The Hidden Cost of Abstractions
LangChain's abstractions can make debugging harder. When something goes wrong in a chain, the stack trace is often deep and confusing. You're also at the mercy of the library's update cycle — breaking changes have been a recurring issue.
Our Approach
We start with raw API calls. If the complexity grows to the point where we're reinventing LangChain's wheels, we bring it in. LangGraph (the graph-based agent framework from the LangChain team) is particularly good for complex multi-agent systems and is worth evaluating separately.