Fixes #35244 Users can write async agent middleware with `@wrap_model_call`, and LangChain already supports that behavior at runtime by detecting coroutine functions and wiring them to `awrap_model_call`. However, the decorator's public typing currently describes only the sync callable shape. As a result, valid async middleware is rejected by type checkers such as mypy and ty, even though the same code runs correctly. This updates the middleware decorator types so async `wrap_model_call` and `wrap_tool_call` functions type-check consistently with their runtime behavior. It also simplifies related callable aliases and uses casts where `iscoroutinefunction` narrows the callable at runtime but static type checkers cannot follow that narrowing. --------- Co-authored-by: Mason Daugherty <github@mdrxy.com>
🦜️🔗 LangChain
Looking for the JS/TS version? Check out LangChain.js.
To help you ship LangChain apps to production faster, check out LangSmith. LangSmith is a unified developer platform for building, testing, and monitoring LLM applications.
Quick Install
pip install langchain
🤔 What is this?
LangChain is the easiest way to start building agents and applications powered by LLMs. With under 10 lines of code, you can connect to OpenAI, Anthropic, Google, and more. LangChain provides a pre-built agent architecture and model integrations to help you get started quickly and seamlessly incorporate LLMs into your agents and applications.
We recommend you use LangChain if you want to quickly build agents and autonomous applications. Use LangGraph, our low-level agent orchestration framework and runtime, when you have more advanced needs that require a combination of deterministic and agentic workflows, heavy customization, and carefully controlled latency.
LangChain agents are built on top of LangGraph in order to provide durable execution, streaming, human-in-the-loop, persistence, and more. (You do not need to know LangGraph for basic LangChain agent usage.)
📖 Documentation
For full documentation, see the API reference. For conceptual guides, tutorials, and examples on using LangChain, see the LangChain Docs. You can also chat with the docs using Chat LangChain.
📕 Releases & Versioning
See our Releases and Versioning policies.
💁 Contributing
As an open-source project in a rapidly developing field, we are extremely open to contributions, whether it be in the form of a new feature, improved infrastructure, or better documentation.
For detailed information on how to contribute, see the Contributing Guide.