test(langchain): cover chat model provider inference (#34657)

Add unit coverage for chat model provider inference across common model
name prefixes. This improves regression protection without touching
runtime

---------

Co-authored-by: Mason Daugherty <github@mdrxy.com>
This commit is contained in:
Guofang.Tang
2026-01-08 22:59:12 +08:00
committed by GitHub
parent 0276cc0290
commit f805ea9601

View File

@@ -8,7 +8,7 @@ from langchain_core.runnables import RunnableConfig, RunnableSequence
from pydantic import SecretStr
from langchain.chat_models import __all__, init_chat_model
from langchain.chat_models.base import _SUPPORTED_PROVIDERS
from langchain.chat_models.base import _SUPPORTED_PROVIDERS, _attempt_infer_model_provider
if TYPE_CHECKING:
from langchain_core.language_models import BaseChatModel
@@ -67,6 +67,34 @@ def test_supported_providers_is_sorted() -> None:
assert list(_SUPPORTED_PROVIDERS) == sorted(_SUPPORTED_PROVIDERS.keys())
@pytest.mark.parametrize(
("model_name", "expected_provider"),
[
("gpt-4o", "openai"),
("o1-mini", "openai"),
("o3-mini", "openai"),
("chatgpt-4o-latest", "openai"),
("text-davinci-003", "openai"),
("claude-3-haiku-20240307", "anthropic"),
("command-r-plus", "cohere"),
("accounts/fireworks/models/mixtral-8x7b-instruct", "fireworks"),
("gemini-1.5-pro", "google_vertexai"),
("gemini-2.5-pro", "google_vertexai"),
("gemini-3-pro-preview", "google_vertexai"),
("amazon.titan-text-express-v1", "bedrock"),
("anthropic.claude-v2", "bedrock"),
("mistral-small", "mistralai"),
("mixtral-8x7b", "mistralai"),
("deepseek-v3", "deepseek"),
("grok-beta", "xai"),
("sonar-small", "perplexity"),
("solar-pro", "upstage"),
],
)
def test_attempt_infer_model_provider(model_name: str, expected_provider: str) -> None:
assert _attempt_infer_model_provider(model_name) == expected_provider
@pytest.mark.requires("langchain_openai")
@mock.patch.dict(
os.environ,