From 8c702397cb7745566272aec3fad5cc2f84c53794 Mon Sep 17 00:00:00 2001 From: ccurme Date: Tue, 5 Aug 2025 15:34:19 -0300 Subject: [PATCH] fix(langchain): warn on unsupported models and add test (#32413) --- libs/langchain/langchain/chat_models/base.py | 6 ++++++ .../tests/unit_tests/chat_models/test_base.py | 17 +++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/libs/langchain/langchain/chat_models/base.py b/libs/langchain/langchain/chat_models/base.py index 2d2e4bcb43f..f5a8a588b80 100644 --- a/libs/langchain/langchain/chat_models/base.py +++ b/libs/langchain/langchain/chat_models/base.py @@ -369,6 +369,12 @@ def _init_chat_model_helper( **kwargs: Any, ) -> Union[BaseChatModel, BaseChatModelV1]: model, model_provider = _parse_model(model, model_provider) + if message_version != "v0" and model_provider not in ("openai",): + warnings.warn( + f"Model provider {model_provider} does not support " + f"message_version={message_version}. Defaulting to v0.", + stacklevel=2, + ) if model_provider == "openai": _check_pkg("langchain_openai") if message_version == "v0": diff --git a/libs/langchain/tests/unit_tests/chat_models/test_base.py b/libs/langchain/tests/unit_tests/chat_models/test_base.py index 8cd5e0631b8..e59ba54ff68 100644 --- a/libs/langchain/tests/unit_tests/chat_models/test_base.py +++ b/libs/langchain/tests/unit_tests/chat_models/test_base.py @@ -6,6 +6,7 @@ import pytest from langchain_core.language_models import BaseChatModel from langchain_core.prompts import ChatPromptTemplate from langchain_core.runnables import RunnableConfig, RunnableSequence +from langchain_core.v1.chat_models import BaseChatModel as BaseChatModelV1 from pydantic import SecretStr from langchain.chat_models.base import __all__, init_chat_model @@ -51,6 +52,22 @@ def test_init_chat_model(model_name: str, model_provider: Optional[str]) -> None assert llm1.dict() == llm2.dict() +@pytest.mark.requires("langchain_openai") +def test_message_version() -> None: + model = init_chat_model("openai:gpt-4.1", api_key="foo") + assert isinstance(model, BaseChatModel) + + model_v1 = init_chat_model("openai:gpt-4.1", api_key="foo", message_version="v1") + assert isinstance(model_v1, BaseChatModelV1) + + # Test we emit a warning for unsupported providers + with ( + pytest.warns(match="Model provider bar does not support message_version=v1"), + pytest.raises(ValueError, match="Unsupported model_provider='bar'."), + ): + init_chat_model("foo", model_provider="bar", message_version="v1") + + def test_init_missing_dep() -> None: with pytest.raises(ImportError): init_chat_model("mixtral-8x7b-32768", model_provider="groq")