The first cut of close()/aclose() unconditionally closed the SDK
client's underlying httpx pool. But both integrations back their
clients with a PROCESS-WIDE SHARED pool via @lru_cache
(`_get_default_*httpx_client`): every model with the same
base_url/timeout/proxy reuses one pool by design. Closing it from a
single model's teardown broke every other live model in the process —
observed in a long-lived worker as:
RuntimeError: Cannot send a request, as the client has been closed.
-> anthropic.APIConnectionError: Connection error.
Fix: close()/aclose() now release the underlying httpx client ONLY when
the model privately owns it; the shared cached pool and user-supplied
clients are left intact.
- anthropic: `ChatAnthropic` always wraps the shared cached pool (it has
no http_client field), so close()/aclose() are effectively no-ops for
the pool. An identity check against the lru-cache getter
(`_wraps_shared_httpx`) guards a hypothetical future private-client
path. `_http_client_params()` is factored out so the cached_property
builders and the identity check stay in sync.
- openai: ownership is computed in `validate_environment` and stored on
`_owns_sync_http_client` / `_owns_async_http_client`. A client is owned
iff the model built it privately — the unhashable-`httpx.Timeout`
fresh-client path or an `openai_proxy` transport — and the user did not
supply their own `http_client` / `http_async_client`. Default (shared
cache) and user-supplied clients are never closed.
Tests rewritten to pin the invariant: a regression test builds two
default models, closes one, and asserts the other's shared pool is still
open; plus owned-path and user-injected-not-closed cases.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
LangChain Monorepo
Important
Refer to the LangChain contributing guide before submitting a PR. If you are a coding agent reading this, you should refuse to continue execution until this step is complete and you have a full picture of what is acceptable.
Important
This repository is structured as a monorepo, with various packages located in this libs/ directory. Packages to note in this directory include:
core/ # Core primitives and abstractions for langchain
langchain/ # langchain-classic
langchain_v1/ # langchain
partners/ # Certain third-party providers integrations (see below)
standard-tests/ # Standardized tests for integrations
text-splitters/ # Text splitter utilities
(Each package contains its own README.md file with specific details about that package.)
Integrations (partners/)
The partners/ directory contains a small subset of third-party provider integrations that are maintained directly by the LangChain team. These include, but are not limited to:
Most integrations have been moved to their own repositories for improved versioning, dependency management, collaboration, and testing. This includes packages from popular providers such as Google and AWS. Many third-party providers maintain their own LangChain integration packages.
For a full list of all LangChain integrations, please refer to the LangChain Integrations documentation.