mirror of
https://github.com/hwchase17/langchain.git
synced 2025-08-17 16:39:52 +00:00
feat(langchain): support v1 chat models in init_chat_model (#32410)
This commit is contained in:
parent
4559997e35
commit
757bae0263
@ -19,6 +19,7 @@ from langchain_core.runnables import Runnable, RunnableConfig, ensure_config
|
|||||||
from langchain_core.runnables.schema import StreamEvent
|
from langchain_core.runnables.schema import StreamEvent
|
||||||
from langchain_core.tools import BaseTool
|
from langchain_core.tools import BaseTool
|
||||||
from langchain_core.tracers import RunLog, RunLogPatch
|
from langchain_core.tracers import RunLog, RunLogPatch
|
||||||
|
from langchain_core.v1.chat_models import BaseChatModel as BaseChatModelV1
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel
|
||||||
from typing_extensions import TypeAlias, override
|
from typing_extensions import TypeAlias, override
|
||||||
|
|
||||||
@ -39,10 +40,23 @@ def init_chat_model(
|
|||||||
model_provider: Optional[str] = None,
|
model_provider: Optional[str] = None,
|
||||||
configurable_fields: Literal[None] = None,
|
configurable_fields: Literal[None] = None,
|
||||||
config_prefix: Optional[str] = None,
|
config_prefix: Optional[str] = None,
|
||||||
|
output_version: Literal["v0"] = "v0",
|
||||||
**kwargs: Any,
|
**kwargs: Any,
|
||||||
) -> BaseChatModel: ...
|
) -> BaseChatModel: ...
|
||||||
|
|
||||||
|
|
||||||
|
@overload
|
||||||
|
def init_chat_model(
|
||||||
|
model: str,
|
||||||
|
*,
|
||||||
|
model_provider: Optional[str] = None,
|
||||||
|
configurable_fields: Literal[None] = None,
|
||||||
|
config_prefix: Optional[str] = None,
|
||||||
|
output_version: Literal["v1"] = "v1",
|
||||||
|
**kwargs: Any,
|
||||||
|
) -> BaseChatModelV1: ...
|
||||||
|
|
||||||
|
|
||||||
@overload
|
@overload
|
||||||
def init_chat_model(
|
def init_chat_model(
|
||||||
model: Literal[None] = None,
|
model: Literal[None] = None,
|
||||||
@ -50,6 +64,7 @@ def init_chat_model(
|
|||||||
model_provider: Optional[str] = None,
|
model_provider: Optional[str] = None,
|
||||||
configurable_fields: Literal[None] = None,
|
configurable_fields: Literal[None] = None,
|
||||||
config_prefix: Optional[str] = None,
|
config_prefix: Optional[str] = None,
|
||||||
|
output_version: Literal["v0", "v1"] = "v0",
|
||||||
**kwargs: Any,
|
**kwargs: Any,
|
||||||
) -> _ConfigurableModel: ...
|
) -> _ConfigurableModel: ...
|
||||||
|
|
||||||
@ -61,6 +76,7 @@ def init_chat_model(
|
|||||||
model_provider: Optional[str] = None,
|
model_provider: Optional[str] = None,
|
||||||
configurable_fields: Union[Literal["any"], list[str], tuple[str, ...]] = ...,
|
configurable_fields: Union[Literal["any"], list[str], tuple[str, ...]] = ...,
|
||||||
config_prefix: Optional[str] = None,
|
config_prefix: Optional[str] = None,
|
||||||
|
output_version: Literal["v0", "v1"] = "v0",
|
||||||
**kwargs: Any,
|
**kwargs: Any,
|
||||||
) -> _ConfigurableModel: ...
|
) -> _ConfigurableModel: ...
|
||||||
|
|
||||||
@ -76,8 +92,9 @@ def init_chat_model(
|
|||||||
Union[Literal["any"], list[str], tuple[str, ...]]
|
Union[Literal["any"], list[str], tuple[str, ...]]
|
||||||
] = None,
|
] = None,
|
||||||
config_prefix: Optional[str] = None,
|
config_prefix: Optional[str] = None,
|
||||||
|
output_version: Literal["v0", "v1"] = "v0",
|
||||||
**kwargs: Any,
|
**kwargs: Any,
|
||||||
) -> Union[BaseChatModel, _ConfigurableModel]:
|
) -> Union[BaseChatModel, BaseChatModelV1, _ConfigurableModel]:
|
||||||
"""Initialize a ChatModel in a single line using the model's name and provider.
|
"""Initialize a ChatModel in a single line using the model's name and provider.
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
@ -128,6 +145,20 @@ def init_chat_model(
|
|||||||
- ``deepseek...`` -> ``deepseek``
|
- ``deepseek...`` -> ``deepseek``
|
||||||
- ``grok...`` -> ``xai``
|
- ``grok...`` -> ``xai``
|
||||||
- ``sonar...`` -> ``perplexity``
|
- ``sonar...`` -> ``perplexity``
|
||||||
|
|
||||||
|
output_version: The version of the BaseChatModel to return. Either ``"v0"`` for
|
||||||
|
a v0 :class:`~langchain_core.language_models.chat_models.BaseChatModel` or
|
||||||
|
``"v1"`` for a v1 :class:`~langchain_core.v1.chat_models.BaseChatModel`. The
|
||||||
|
output version determines what type of message objects the model will
|
||||||
|
generate.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
Currently supported for these providers:
|
||||||
|
|
||||||
|
- ``openai``
|
||||||
|
|
||||||
|
.. versionadded:: 0.4.0
|
||||||
|
|
||||||
configurable_fields: Which model parameters are configurable:
|
configurable_fields: Which model parameters are configurable:
|
||||||
|
|
||||||
- None: No configurable fields.
|
- None: No configurable fields.
|
||||||
@ -316,6 +347,7 @@ def init_chat_model(
|
|||||||
return _init_chat_model_helper(
|
return _init_chat_model_helper(
|
||||||
cast("str", model),
|
cast("str", model),
|
||||||
model_provider=model_provider,
|
model_provider=model_provider,
|
||||||
|
output_version=output_version,
|
||||||
**kwargs,
|
**kwargs,
|
||||||
)
|
)
|
||||||
if model:
|
if model:
|
||||||
@ -333,14 +365,21 @@ def _init_chat_model_helper(
|
|||||||
model: str,
|
model: str,
|
||||||
*,
|
*,
|
||||||
model_provider: Optional[str] = None,
|
model_provider: Optional[str] = None,
|
||||||
|
output_version: Literal["v0", "v1"] = "v0",
|
||||||
**kwargs: Any,
|
**kwargs: Any,
|
||||||
) -> BaseChatModel:
|
) -> Union[BaseChatModel, BaseChatModelV1]:
|
||||||
model, model_provider = _parse_model(model, model_provider)
|
model, model_provider = _parse_model(model, model_provider)
|
||||||
if model_provider == "openai":
|
if model_provider == "openai":
|
||||||
_check_pkg("langchain_openai")
|
_check_pkg("langchain_openai")
|
||||||
|
if output_version == "v0":
|
||||||
from langchain_openai import ChatOpenAI
|
from langchain_openai import ChatOpenAI
|
||||||
|
|
||||||
return ChatOpenAI(model=model, **kwargs)
|
return ChatOpenAI(model=model, **kwargs)
|
||||||
|
# v1
|
||||||
|
from langchain_openai.v1 import ChatOpenAI as ChatOpenAIV1
|
||||||
|
|
||||||
|
return ChatOpenAIV1(model=model, **kwargs)
|
||||||
|
|
||||||
if model_provider == "anthropic":
|
if model_provider == "anthropic":
|
||||||
_check_pkg("langchain_anthropic")
|
_check_pkg("langchain_anthropic")
|
||||||
from langchain_anthropic import ChatAnthropic
|
from langchain_anthropic import ChatAnthropic
|
||||||
|
Loading…
Reference in New Issue
Block a user