Files
langchain/libs/partners/openrouter/tests/unit_tests/test_standard.py
Mason Daugherty f9fd7be695 feat(openrouter): add langchain-openrouter provider package (#35211)
Add a first-party `langchain-openrouter` partner package
(`ChatOpenRouter`) that wraps the official `openrouter` Python SDK,
providing native support for OpenRouter-specific features that
`ChatOpenAI` intentionally does not handle.

Also adds scope-clarifying docstrings to `ChatOpenAI` / `BaseChatOpenAI`
warning users away from using `base_url` overrides with third-party
providers.

---

Closes #31325
Closes #32967
Closes #32977
Closes #32981
Closes #33643
Closes #33757
Closes #34056
Closes #34797
Closes #34962

Supersedes #33902, #34867 (thank you @elonfeng and @okamototk for your
initial work on this!)

---

Bugs with upstream sdk:
- https://github.com/OpenRouterTeam/python-sdk/issues/38
- https://github.com/OpenRouterTeam/python-sdk/issues/51
- https://github.com/OpenRouterTeam/python-sdk/issues/52
2026-02-15 02:09:13 -05:00

64 lines
1.5 KiB
Python

"""Standard unit tests for `ChatOpenRouter`."""
from langchain_tests.unit_tests import ChatModelUnitTests
from langchain_openrouter.chat_models import ChatOpenRouter
MODEL_NAME = "openai/gpt-4o-mini"
class TestChatOpenRouterUnit(ChatModelUnitTests):
"""Standard unit tests for `ChatOpenRouter` chat model."""
@property
def chat_model_class(self) -> type[ChatOpenRouter]:
"""Chat model class being tested."""
return ChatOpenRouter
@property
def init_from_env_params(self) -> tuple[dict, dict, dict]:
"""Parameters to initialize from environment variables."""
return (
{
"OPENROUTER_API_KEY": "api_key",
},
{
"model": MODEL_NAME,
},
{
"openrouter_api_key": "api_key",
},
)
@property
def chat_model_params(self) -> dict:
"""Parameters to create chat model instance for testing."""
return {
"model": MODEL_NAME,
"api_key": "test-api-key",
}
@property
def supports_image_inputs(self) -> bool:
return True
@property
def supports_image_urls(self) -> bool:
return True
@property
def supports_audio_inputs(self) -> bool:
return True
@property
def supports_video_inputs(self) -> bool:
return True
@property
def supports_pdf_inputs(self) -> bool:
return True
@property
def model_override_value(self) -> str:
return "openai/gpt-4o"