mirror of
https://github.com/hwchase17/langchain.git
synced 2025-04-27 19:46:55 +00:00
x
This commit is contained in:
parent
6bda89f9a1
commit
fa2f383107
@ -14,6 +14,15 @@ from langchain_core._api import (
|
||||
surface_langchain_beta_warnings,
|
||||
surface_langchain_deprecation_warnings,
|
||||
)
|
||||
from langchain_core._api.shorthand import (
|
||||
chat_model,
|
||||
document_loader,
|
||||
embeddings,
|
||||
retriever,
|
||||
tool,
|
||||
toolkit,
|
||||
vectorstore,
|
||||
)
|
||||
|
||||
try:
|
||||
__version__ = metadata.version(__package__)
|
||||
@ -23,3 +32,14 @@ except metadata.PackageNotFoundError:
|
||||
|
||||
surface_langchain_deprecation_warnings()
|
||||
surface_langchain_beta_warnings()
|
||||
|
||||
__all__ = [
|
||||
"__version__",
|
||||
"chat_model",
|
||||
"retriever",
|
||||
"tool",
|
||||
"toolkit",
|
||||
"document_loader",
|
||||
"vectorstore",
|
||||
"embeddings",
|
||||
]
|
||||
|
93
libs/core/langchain_core/_api/shorthand.py
Normal file
93
libs/core/langchain_core/_api/shorthand.py
Normal file
@ -0,0 +1,93 @@
|
||||
"""
|
||||
Functions that support shorthand access of LangChain classes like
|
||||
|
||||
::code
|
||||
import langchain_core as lc
|
||||
|
||||
model = lc.chat_model("claude-3-5-sonnet-20240620", provider="anthropic")
|
||||
"""
|
||||
|
||||
import importlib
|
||||
from typing import TYPE_CHECKING, Literal, cast
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from langchain_core.document_loaders import BaseLoader
|
||||
from langchain_core.embeddings import Embeddings
|
||||
from langchain_core.language_models import BaseChatModel
|
||||
from langchain_core.retrievers import BaseRetriever
|
||||
from langchain_core.tools import BaseTool, BaseToolkit
|
||||
from langchain_core.vectorstores import VectorStore
|
||||
|
||||
ProviderManifestType = dict[
|
||||
Literal[
|
||||
"chat_model",
|
||||
"retriever",
|
||||
"embeddings",
|
||||
"vectorstore",
|
||||
"tool",
|
||||
"toolkit",
|
||||
"document_loader",
|
||||
],
|
||||
list[str],
|
||||
]
|
||||
_registered_providers: dict[
|
||||
str,
|
||||
ProviderManifestType,
|
||||
] = {}
|
||||
|
||||
|
||||
def register_manifest(
|
||||
provider: str,
|
||||
provider_manifest: ProviderManifestType,
|
||||
*,
|
||||
dangerously_allow_provider_overwrite: bool = False,
|
||||
) -> None:
|
||||
if provider in _registered_providers and not dangerously_allow_provider_overwrite:
|
||||
msg = (
|
||||
f"Provider `{provider}` was already registered. To allow overwriting, "
|
||||
"pass `dangerously_allow_provider_overwrite=True`"
|
||||
)
|
||||
raise ValueError(msg)
|
||||
_registered_providers[provider] = provider_manifest
|
||||
|
||||
|
||||
def register(package_root: str) -> None:
|
||||
manifest_module = importlib.import_module("lc_manifest", package_root)
|
||||
if not hasattr(manifest_module, "manifest"):
|
||||
msg = (
|
||||
f"Package registration requires a {package_root}.lc_manifest.manifest "
|
||||
"dictionary to be declared"
|
||||
)
|
||||
raise ValueError(msg)
|
||||
|
||||
manifest = cast(dict[str, ProviderManifestType], manifest_module.manifest)
|
||||
for provider, provider_manifest in manifest.items():
|
||||
register_manifest(provider, provider_manifest)
|
||||
|
||||
|
||||
def chat_model(model: str, *, provider: str | None = None, **kwargs) -> BaseChatModel:
|
||||
pass
|
||||
|
||||
|
||||
def retriever(name: str, **kwargs) -> BaseRetriever:
|
||||
pass
|
||||
|
||||
|
||||
def tool(name: str, **kwargs) -> BaseTool:
|
||||
pass
|
||||
|
||||
|
||||
def toolkit(name: str, **kwargs) -> BaseToolkit:
|
||||
pass
|
||||
|
||||
|
||||
def document_loader(name: str, **kwargs) -> BaseLoader:
|
||||
pass
|
||||
|
||||
|
||||
def vectorstore(name: str, **kwargs) -> VectorStore:
|
||||
pass
|
||||
|
||||
|
||||
def embeddings(model: str, *, provider: str | None = None, **kwargs) -> Embeddings:
|
||||
pass
|
36
libs/partners/openai/langchain_openai/lc_manifest.py
Normal file
36
libs/partners/openai/langchain_openai/lc_manifest.py
Normal file
@ -0,0 +1,36 @@
|
||||
from typing import Literal
|
||||
|
||||
# we want to register integration classes, as well as provide a hook
|
||||
|
||||
manifest: dict[
|
||||
str,
|
||||
dict[
|
||||
Literal[
|
||||
"chat_model",
|
||||
"retriever",
|
||||
"embeddings",
|
||||
"vectorstore",
|
||||
"tool",
|
||||
"toolkit",
|
||||
"document_loader",
|
||||
],
|
||||
list[str],
|
||||
],
|
||||
] = {
|
||||
"openai": {
|
||||
"chat_model": [
|
||||
"langchain_openai.chat_models.base.ChatOpenAI",
|
||||
],
|
||||
"embeddings": [
|
||||
"langchain_openai.embeddings.base.OpenAIEmbeddings",
|
||||
],
|
||||
},
|
||||
"azure": {
|
||||
"chat_model": [
|
||||
"langchain_openai.chat_models.azure.AzureChatOpenAI",
|
||||
],
|
||||
"embeddings": [
|
||||
"langchain_openai.embeddings.azure.AzureOpenAIEmbeddings",
|
||||
],
|
||||
},
|
||||
}
|
Loading…
Reference in New Issue
Block a user