mrkeyoor.com_
Wed 16 Sept 05:26 UTC
LLM Toolsevaluationupdated 25 Aug 2026

langchain review

LangChain is a Python framework for connecting language models to tools, retrieval systems, structured outputs, and agent loops through shared interfaces. It helps teams change providers and compose common AI application parts without writing every adapter themselves.

+374stars / 7d
Verdict

Our 79 MB LangChain core install finished in 21 seconds, but its configured test command stopped after 9 seconds on an unrecognized pytest argument, so adding it is easier than verifying its checkout. Use LangChain when model portability and a broad integration layer will save more code than the framework adds. For one provider and a few direct tool calls, the provider SDK is usually the cleaner dependency.

We ran it

Lab card: what happened when we ran langchainScreenshot of langchain (docs.langchain.com/langchain)
Install✓ · 21s58 packages · 79 MB
Build✓ · 6s
Tests✗ · 9sran, no count parsed
Known vulns0(pip-audit)
Repo3039 files~402,059 lines of source · 41.3 MB · 27 CI workflows · tests dir

Answers from our run

Does langchain build from source?

Dependencies installed in 21 seconds (58 packages), and the build succeeded in 6 seconds. We cloned commit a2024ab into a clean Debian container with 3 CPUs and no project-specific setup.

Do langchain's tests pass?

The test command failed in our container, and its output did not report a pass or fail count.

Does langchain have known vulnerabilities in its dependencies?

pip-audit found none in the dependency tree at the time of our run.

Who should not use langchain?

Small applications that call one stable model API and need little orchestration: the README's basic example wraps a single provider call, which is simpler to write with that provider's SDK.

What are the alternatives to langchain?

LangGraph, LlamaIndex, OpenAI Agents SDK. Our 79 MB LangChain core install finished in 21 seconds, but its configured test command stopped after 9 seconds on an unrecognized pytest argument, so adding it is easier than verifying its checkout.

Setup3/5Fast core install and build, but the configured pytest run stopped
Docs4/5Clear entry points, with important detail split into linked docs
Community5/5Current commits, releases, fixes, and a very large user base
Maturity4/5Established abstractions with continuing API and provider edge cases

Discussed on

  1. hnNew: LangChain templates – fastest way to build a production-ready LLM app137 points
  2. hnOpen SWE: An open-source asynchronous coding agent111 points
  3. hnOpenWiki: CLI that writes and maintains agent documentation for your codebase96 points
  4. hnOpenGPTs: Open-source version of OpenAI GPTs40 points
  5. hnLangChain TypeScript Support8 points

Who it’s for

Python teams comparing several model providers or retrieval backends behind one application interface.
Developers building tool-using agents who want established message, tool, middleware, and structured-output primitives.
Prototypers who expect an experiment to grow into a traced workflow using LangGraph or LangSmith.
Platform teams willing to standardize on LangChain's abstractions and follow its frequent changes.

Who it’s NOT for

Small applications that call one stable model API and need little orchestration: the README's basic example wraps a single provider call, which is simpler to write with that provider's SDK.
Teams that need provider-specific response data preserved exactly: current Anthropic and Perplexity reports cover dropped metadata and incorrect merged usage fields.
Projects that cannot absorb framework changes around agent state or tool parsing: open reports cover heterogeneous middleware narrowing state and invalid tool calls escaping the agent handler.
Maintainers expecting a fresh checkout's configured core test command to work in a generic Python image: our run stopped because pytest did not recognize --snapshot-warn-unused.

Setup reality

Our core-library run installed 58 packages in 21 seconds and used 79 MB on disk. The build then completed in 6 seconds, but the test command failed after 9 seconds with exit 4 because pytest did not recognize --snapshot-warn-unused. The audit found 0 known vulnerabilities.

The README's uv add langchain is only the framework layer. A useful application still needs a model integration, provider credentials, and configuration for any vector store, database, or external tool it calls. The quickstart uses an OpenAI model, while the framework also points readers to separate integration packages.

We tested libs/core at commit a2024ab in an unprivileged Python 3.12 Debian container with 3 CPUs and 8 GB of RAM. The repository has 3,039 files and about 402,059 source lines, so contributing to the monorepo is a different job from installing the package.

LangChain earns its keep when providers and tools keep changing

LangChain gives Python applications shared interfaces for chat models, embeddings, vector stores, tools, messages, and agent behavior. The README's smallest example installs langchain, initializes a named model, and invokes it. That looks almost too simple, but the benefit appears when the second provider or retrieval backend arrives. Application code can keep a familiar shape while integration packages handle many vendor differences.

The repository is much larger than that quickstart suggests: our checkout contained 3,039 files and roughly 402,059 lines of source. The main framework now sits within a family that includes LangGraph for lower-level workflow control, Deep Agents for batteries-included agent behavior, and LangSmith for evaluation and tracing. That range is helpful once a prototype grows, though newcomers must learn which layer owns which job.

The abstraction saves adapter work and creates framework work

A common model initializer is useful when a team actively compares providers. The same is true for normalized messages, tool schemas, streaming events, and structured outputs. LangChain also gives integrations a shared home, which is easier to search than a private directory full of one-off wrappers. A team can spend its time on application behavior instead of repeatedly translating message types.

The tradeoff is visible in the 424 open issues and pull requests reported by GitHub on August 25, 2026. That number is not a bug count, but it reflects the surface area maintained across core code and outside services. Provider APIs change, model response formats differ, and a unifying layer has to catch up. Current reports include missing Anthropic response metadata and Perplexity usage fields merging incorrectly.

Those problems matter most when an application depends on the exact provider response. LangChain's normalized result is convenient until billing data, cache counts, stop reasons, or a new beta header becomes operationally important. Teams should retain integration tests against every model they use and inspect the raw metadata they care about. A shared interface reduces adapter code; it does not make providers identical.

What happened when we ran it

In our sandbox, installing the core project took 21 seconds, pulled 58 packages, and occupied 79 MB. Building it succeeded in another 6 seconds. That is a reasonable footprint for the foundational library, especially compared with agent projects that bundle browsers, model weights, or several service clients. pip-audit reported 0 known vulnerabilities in the installed dependency set.

The configured test run did not reach test execution. After 9 seconds, pytest exited with code 4 and said it did not recognize --snapshot-warn-unused, an argument supplied through libs/core/pyproject.toml. The log establishes the unsupported argument and nothing more, so we cannot say whether the suite itself would pass after the environment is adjusted.

This was commit a2024ab inside a fresh Python 3.12 Debian container with 3 CPUs, 8 GB of RAM, no secrets, and no elevated privileges. We worked in libs/core, not every package in the monorepo. The repository had 27 CI workflow files and a tests directory, but no Dockerfile, so contributors should follow the project-specific development setup rather than expect one canonical container.

The README starts the install, while the application owns the services

uv add langchain installs the framework, not a working agent system. The quickstart selects an OpenAI model, which means the application must add the matching integration and supply credentials. Retrieval introduces an embedding model and usually a vector database. Tools may add web services, databases, or local processes with their own authentication and failure modes. None of that is hidden by the common call interface.

The main README is a map rather than a full operating manual. It links to conceptual guides, an API reference, integrations, courses, and contribution documentation. That split makes sense for a codebase with about 402,059 source lines, but it also means a developer will leave the repository page quickly. Teams should document the exact subset they use instead of treating the whole ecosystem as their architecture.

Open defects make regression tests part of adoption

Provider metadata is only one live edge. An open LangChain report says heterogeneous middleware can collapse inferred agent state to the base schema. Another says JSON parsing errors in invalid tool calls are not handled by create_agent. A core issue reports that the Markdown list parser drops items beginning with +. These are specific failures in useful abstractions, and each can change application behavior without a network outage.

The response should be narrow tests, not fear of the entire project. Pin package versions, cover tool errors, assert structured output, and record the provider metadata used for cost or control decisions. The latest core release, published August 19, 2026, contains fixes for strict tool schemas, serialization, Windows test portability, and model exception types. The August 25 push and same-day issue activity show maintainers are working, while the release notes also show how often boundary cases need attention.

Choose it for changing systems, skip it for one direct call

LangChain is strongest when an application has several models, tools, or retrieval choices and the team wants one vocabulary across them. It is also a sensible route into LangGraph when agent state and execution need tighter control later. The MIT license, active release work, and broad documentation reduce adoption risk for teams willing to own framework upgrades.

A single-model utility gains less. Calling one provider SDK directly leaves fewer layers to debug and exposes new API features sooner. Our 21-second install shows LangChain core is not physically heavy, but its conceptual surface is large. Adopt the parts that remove repeated adapter work, pin them, and keep provider-level tests where exact behavior affects money or correctness.

Alternatives

ProjectWhat it isPick it when
LangGraph gh↗A lower-level runtime for stateful, controllable agent workflows.pick this instead when explicit state, durable execution, and graph control matter more than LangChain's higher-level agent entry point.
LlamaIndex gh↗A Python framework centered on connecting private data to language-model applications.pick this instead when ingestion, indexing, and retrieval are the main problem rather than general agent composition.
OpenAI Agents SDK gh↗A smaller Python SDK for agents, tools, handoffs, tracing, and guardrails.pick this instead when you want a narrower agent API and are comfortable with an OpenAI-led abstraction.

What people are saying

  1. [github-trending] langchain-ai/deepagents
  2. [github-trending] langchain-ai/open_deep_research

Sources

  1. LangChain README
  2. LangChain core 1.6.0 release
  3. Anthropic response metadata issue
  4. Agent middleware state issue
  5. Invalid tool-call handling issue

More llm tools reviews

headcount · useagent · claude-skills · RAG_Techniques · ux-ui-agent-skills · dictionary-of-ai-coding · the whole board →