mirror of
https://github.com/hwchase17/langchain.git
synced 2026-06-09 10:17:00 +00:00
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
64 lines
1.5 KiB
Python
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"
|