From 3729bec1a2e1969d7d30e75b022ae847af95f9c8 Mon Sep 17 00:00:00 2001 From: Guangdong Liu Date: Wed, 17 Apr 2024 09:29:57 +0800 Subject: [PATCH] community[patch]: standardize init args (#20210) Related to https://github.com/langchain-ai/langchain/issues/20085 @baskaryan --- .../langchain_community/chat_models/tongyi.py | 7 ++++++- .../integration_tests/chat_models/test_tongyi.py | 11 +++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/libs/community/langchain_community/chat_models/tongyi.py b/libs/community/langchain_community/chat_models/tongyi.py index fe3c2c1d41..01ab29abb5 100644 --- a/libs/community/langchain_community/chat_models/tongyi.py +++ b/libs/community/langchain_community/chat_models/tongyi.py @@ -160,7 +160,7 @@ class ChatTongyi(BaseChatModel): top_p: float = 0.8 """Total probability mass of tokens to consider at each step.""" - dashscope_api_key: Optional[SecretStr] = None + dashscope_api_key: Optional[SecretStr] = Field(None, alias="api_key") """Dashscope api key provide by Alibaba Cloud.""" streaming: bool = False @@ -169,6 +169,11 @@ class ChatTongyi(BaseChatModel): max_retries: int = 10 """Maximum number of retries to make when generating.""" + class Config: + """Configuration for this pydantic object.""" + + allow_population_by_field_name = True + @property def _llm_type(self) -> str: """Return type of llm.""" diff --git a/libs/community/tests/integration_tests/chat_models/test_tongyi.py b/libs/community/tests/integration_tests/chat_models/test_tongyi.py index 79cb484b79..475db4315c 100644 --- a/libs/community/tests/integration_tests/chat_models/test_tongyi.py +++ b/libs/community/tests/integration_tests/chat_models/test_tongyi.py @@ -1,4 +1,5 @@ """Test Alibaba Tongyi Chat Model.""" +from typing import cast from langchain_core.callbacks import CallbackManager from langchain_core.messages import AIMessage, BaseMessage, HumanMessage @@ -10,6 +11,16 @@ from langchain_community.chat_models.tongyi import ChatTongyi from tests.unit_tests.callbacks.fake_callback_handler import FakeCallbackHandler +def test_initialization() -> None: + """Test chat model initialization.""" + for model in [ + ChatTongyi(model_name="qwen-turbo", api_key="xyz"), + ChatTongyi(model="qwen-turbo", dashscope_api_key="xyz"), + ]: + assert model.model_name == "qwen-turbo" + assert cast(SecretStr, model.dashscope_api_key).get_secret_value() == "xyz" + + def test_api_key_is_string() -> None: llm = ChatTongyi(dashscope_api_key="secret-api-key") assert isinstance(llm.dashscope_api_key, SecretStr)