fix(langchain): warn on unsupported models and add test (#32413)

This commit is contained in:
ccurme 2025-08-05 15:34:19 -03:00 committed by GitHub
parent 56ee00cb1d
commit 8c702397cb
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 23 additions and 0 deletions

View File

@ -369,6 +369,12 @@ def _init_chat_model_helper(
**kwargs: Any, **kwargs: Any,
) -> Union[BaseChatModel, BaseChatModelV1]: ) -> Union[BaseChatModel, BaseChatModelV1]:
model, model_provider = _parse_model(model, model_provider) 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": if model_provider == "openai":
_check_pkg("langchain_openai") _check_pkg("langchain_openai")
if message_version == "v0": if message_version == "v0":

View File

@ -6,6 +6,7 @@ import pytest
from langchain_core.language_models import BaseChatModel from langchain_core.language_models import BaseChatModel
from langchain_core.prompts import ChatPromptTemplate from langchain_core.prompts import ChatPromptTemplate
from langchain_core.runnables import RunnableConfig, RunnableSequence from langchain_core.runnables import RunnableConfig, RunnableSequence
from langchain_core.v1.chat_models import BaseChatModel as BaseChatModelV1
from pydantic import SecretStr from pydantic import SecretStr
from langchain.chat_models.base import __all__, init_chat_model 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() 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: def test_init_missing_dep() -> None:
with pytest.raises(ImportError): with pytest.raises(ImportError):
init_chat_model("mixtral-8x7b-32768", model_provider="groq") init_chat_model("mixtral-8x7b-32768", model_provider="groq")