diff --git a/libs/langchain/langchain/__init__.py b/libs/langchain/langchain/__init__.py
index 528f773db06..99c6fb2ac67 100644
--- a/libs/langchain/langchain/__init__.py
+++ b/libs/langchain/langchain/__init__.py
@@ -3,10 +3,71 @@
 
 import warnings
 from importlib import metadata
-from typing import Any, Optional
+from typing import TYPE_CHECKING, Any, Optional
 
 from langchain_core._api.deprecation import surface_langchain_deprecation_warnings
 
+if TYPE_CHECKING:
+    from langchain_core.chat_history import (
+        BaseChatMessageHistory,
+        InMemoryChatMessageHistory,
+    )
+    from langchain_core.document_loaders import BaseBlobParser, BaseLoader
+    from langchain_core.documents import (
+        BaseDocumentCompressor,
+        BaseDocumentTransformer,
+        Document,
+    )
+    from langchain_core.documents.base import BaseMedia
+    from langchain_core.embeddings import Embeddings
+    from langchain_core.indexing.api import aindex, index
+    from langchain_core.language_models import BaseChatModel
+    from langchain_core.messages import (
+        AIMessage,
+        AIMessageChunk,
+        AnyMessage,
+        BaseMessage,
+        BaseMessageChunk,
+        HumanMessage,
+        HumanMessageChunk,
+        InvalidToolCall,
+        SystemMessage,
+        SystemMessageChunk,
+        ToolCall,
+        ToolCallChunk,
+        ToolMessage,
+        ToolMessageChunk,
+        convert_to_messages,
+        convert_to_openai_messages,
+        filter_messages,
+        merge_message_runs,
+        trim_messages,
+    )
+    from langchain_core.output_parsers import StrOutputParser
+    from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
+    from langchain_core.runnables import (
+        RunnableConfig,
+        RunnableGenerator,
+        RunnableLambda,
+        RunnableParallel,
+        RunnablePassthrough,
+        chain,
+    )
+    from langchain_core.stores import InMemoryByteStore, InMemoryStore
+    from langchain_core.tools import BaseTool, BaseToolkit, StructuredTool, tool
+    from langchain_core.utils.function_calling import convert_to_openai_tool
+    from langchain_text_splitters import RecursiveCharacterTextSplitter
+
+    from langchain.chat_models.base import init_chat_model
+    from langchain.embeddings.cache import CacheBackedEmbeddings
+    from langchain.indexes._sql_record_manager import SQLRecordManager
+    from langchain.retrievers.parent_document_retriever import ParentDocumentRetriever
+    from langchain.retrievers.self_query.base import SelfQueryRetriever
+    from langchain.storage._lc_store import create_kv_docstore, create_lc_store
+    from langchain.storage.encoder_backed import EncoderBackedStore
+    from langchain.storage.file_system import LocalFileStore
+
+
 try:
     __version__ = metadata.version(__package__)
 except metadata.PackageNotFoundError:
@@ -385,11 +446,242 @@ def __getattr__(name: str) -> Any:
         )
 
         return _llm_cache
+    # non-deprecated imports
+    elif name == "init_chat_model":
+        from langchain.chat_models import init_chat_model
+
+        return init_chat_model
+    elif name == "tool":
+        from langchain_core.tools import tool
+
+        return tool
+    elif name == "ChatPromptTemplate":
+        from langchain_core.prompts import ChatPromptTemplate
+
+        return ChatPromptTemplate
+    elif name == "MessagesPlaceholder":
+        from langchain_core.prompts import MessagesPlaceholder
+
+        return MessagesPlaceholder
+    elif name == "Document":
+        from langchain_core.documents import Document
+
+        return Document
+    elif name == "RunnableLambda":
+        from langchain_core.runnables import RunnableLambda
+
+        return RunnableLambda
+    elif name == "chain":
+        from langchain_core.runnables import chain
+
+        return chain
+    elif name == "RunnableGenerator":
+        from langchain_core.runnables import RunnableGenerator
+
+        return RunnableGenerator
+    elif name == "RunnableConfig":
+        from langchain_core.runnables import RunnableConfig
+
+        return RunnableConfig
+    elif name == "RunnablePassthrough":
+        from langchain_core.runnables import RunnablePassthrough
+
+        return RunnablePassthrough
+    elif name == "RunnableParallel":
+        from langchain_core.runnables import RunnableParallel
+
+        return RunnableParallel
+    elif name == "RecursiveCharacterTextSplitter":
+        from langchain_text_splitters import RecursiveCharacterTextSplitter
+
+        return RecursiveCharacterTextSplitter
+    elif name == "trim_messages":
+        from langchain_core.messages import trim_messages
+
+        return trim_messages
+    elif name == "filter_messages":
+        from langchain_core.messages import filter_messages
+
+        return filter_messages
+    elif name == "merge_message_runs":
+        from langchain_core.messages import merge_message_runs
+
+        return merge_message_runs
+    elif name == "convert_to_openai_messages":
+        from langchain_core.messages import convert_to_openai_messages
+
+        return convert_to_openai_messages
+    elif name == "convert_to_messages":
+        from langchain_core.messages import convert_to_messages
+
+        return convert_to_messages
+    elif name == "convert_to_openai_tool":
+        from langchain_core.utils.function_calling import convert_to_openai_tool
+
+        return convert_to_openai_tool
+    elif name == "StrOutputParser":
+        from langchain_core.output_parsers import StrOutputParser
+
+        return StrOutputParser
+    elif name == "CacheBackedEmbeddings":
+        from langchain.embeddings import CacheBackedEmbeddings
+
+        return CacheBackedEmbeddings
+    elif name == "InMemoryByteStore":
+        from langchain_core.stores import InMemoryByteStore
+
+        return InMemoryByteStore
+    elif name == "InMemoryStore":
+        from langchain_core.stores import InMemoryStore
+
+        return InMemoryStore
+    elif name == "create_lc_store":
+        from langchain.storage import create_lc_store
+
+        return create_lc_store
+    elif name == "create_kv_docstore":
+        from langchain.storage import create_kv_docstore
+
+        return create_kv_docstore
+    elif name == "EncoderBackedStore":
+        from langchain.storage.encoder_backed import EncoderBackedStore
+
+        return EncoderBackedStore
+    elif name == "LocalFileStore":
+        from langchain.storage.file_system import LocalFileStore
+
+        return LocalFileStore
+    elif name == "ParentDocumentRetriever":
+        from langchain.retrievers.parent_document_retriever import (
+            ParentDocumentRetriever,
+        )
+
+        return ParentDocumentRetriever
+    elif name == "SelfQueryRetriever":
+        from langchain.retrievers.self_query.base import SelfQueryRetriever
+
+        return SelfQueryRetriever
+    elif name == "BaseChatMessageHistory":
+        from langchain_core.chat_history import BaseChatMessageHistory
+
+        return BaseChatMessageHistory
+    elif name == "InMemoryChatMessageHistory":
+        from langchain_core.chat_history import InMemoryChatMessageHistory
+
+        return InMemoryChatMessageHistory
+    elif name == "BaseChatModel":
+        from langchain_core.language_models import BaseChatModel
+
+        return BaseChatModel
+    elif name == "aindex":
+        from langchain_core.indexing.api import aindex
+
+        return aindex
+    elif name == "index":
+        from langchain_core.indexing.api import index
+
+        return index
+    elif name == "Embeddings":
+        from langchain_core.embeddings import Embeddings
+
+        return Embeddings
+    elif name == "BaseDocumentTransformer":
+        from langchain_core.documents import BaseDocumentTransformer
+
+        return BaseDocumentTransformer
+    elif name == "BaseDocumentCompressor":
+        from langchain_core.documents import BaseDocumentCompressor
+
+        return BaseDocumentCompressor
+    elif name == "BaseLoader":
+        from langchain_core.document_loaders import BaseLoader
+
+        return BaseLoader
+    elif name == "BaseBlobParser":
+        from langchain_core.document_loaders import BaseBlobParser
+
+        return BaseBlobParser
+    elif name == "SQLRecordManager":
+        from langchain.indexes._sql_record_manager import SQLRecordManager
+
+        return SQLRecordManager
+    elif name == "BaseTool":
+        from langchain_core.tools import BaseTool
+
+        return BaseTool
+    elif name == "BaseToolkit":
+        from langchain_core.tools import BaseToolkit
+
+        return BaseToolkit
+    elif name == "StructuredTool":
+        from langchain_core.tools import StructuredTool
+
+        return StructuredTool
+    elif name == "HumanMessage":
+        from langchain_core.messages import HumanMessage
+
+        return HumanMessage
+    elif name == "SystemMessage":
+        from langchain_core.messages import SystemMessage
+
+        return SystemMessage
+    elif name == "SystemMessageChunk":
+        from langchain_core.messages import SystemMessageChunk
+
+        return SystemMessageChunk
+    elif name == "AnyMessage":
+        from langchain_core.messages import AnyMessage
+
+        return AnyMessage
+    elif name == "AIMessage":
+        from langchain_core.messages import AIMessage
+
+        return AIMessage
+    elif name == "AIMessageChunk":
+        from langchain_core.messages import AIMessageChunk
+
+        return AIMessageChunk
+    elif name == "BaseMessage":
+        from langchain_core.messages import BaseMessage
+
+        return BaseMessage
+    elif name == "BaseMessageChunk":
+        from langchain_core.messages import BaseMessageChunk
+
+        return BaseMessageChunk
+    elif name == "HumanMessageChunk":
+        from langchain_core.messages import HumanMessageChunk
+
+        return HumanMessageChunk
+    elif name == "ToolMessage":
+        from langchain_core.messages import ToolMessage
+
+        return ToolMessage
+    elif name == "ToolMessageChunk":
+        from langchain_core.messages import ToolMessageChunk
+
+        return ToolMessageChunk
+    elif name == "ToolCall":
+        from langchain_core.messages import ToolCall
+
+        return ToolCall
+    elif name == "ToolCallChunk":
+        from langchain_core.messages import ToolCallChunk
+
+        return ToolCallChunk
+    elif name == "InvalidToolCall":
+        from langchain_core.messages import InvalidToolCall
+
+        return InvalidToolCall
+    elif name == "BaseMedia":
+        from langchain_core.documents.base import BaseMedia
+
+        return BaseMedia
     else:
         raise AttributeError(f"Could not find: {name}")
 
 
-__all__ = [
+_deprecated_all = [
     "LLMChain",
     "LLMCheckerChain",
     "LLMMathChain",
@@ -437,3 +729,64 @@ __all__ = [
     "LlamaCpp",
     "HuggingFaceTextGenInference",
 ]
+
+__all__ = [
+    "init_chat_model",
+    "tool",
+    "ChatPromptTemplate",
+    "MessagesPlaceholder",
+    "Document",
+    "RunnableLambda",
+    "chain",
+    "RunnableGenerator",
+    "RunnableConfig",
+    "RunnablePassthrough",
+    "RunnableParallel",
+    "RecursiveCharacterTextSplitter",
+    "trim_messages",
+    "filter_messages",
+    "merge_message_runs",
+    "convert_to_openai_messages",
+    "convert_to_messages",
+    "convert_to_openai_tool",
+    "StrOutputParser",
+    "CacheBackedEmbeddings",
+    "InMemoryByteStore",
+    "InMemoryStore",
+    "create_lc_store",
+    "create_kv_docstore",
+    "EncoderBackedStore",
+    "LocalFileStore",
+    "ParentDocumentRetriever",
+    "SelfQueryRetriever",
+    "BaseChatMessageHistory",
+    "InMemoryChatMessageHistory",
+    "BaseChatModel",
+    "aindex",
+    "index",
+    "Embeddings",
+    "BaseDocumentTransformer",
+    "BaseDocumentCompressor",
+    "BaseLoader",
+    "BaseBlobParser",
+    "SQLRecordManager",
+    "BaseTool",
+    "BaseToolkit",
+    "StructuredTool",
+    "HumanMessage",
+    "SystemMessage",
+    "SystemMessageChunk",
+    "AnyMessage",
+    "AIMessage",
+    "AIMessageChunk",
+    "BaseMessage",
+    "BaseMessageChunk",
+    "HumanMessageChunk",
+    "ToolMessage",
+    "ToolMessageChunk",
+    "ToolCall",
+    "ToolCallChunk",
+    "InvalidToolCall",
+    "BaseMedia",
+    *_deprecated_all,
+]