| def _init_client(self) -> Any: | def _init_client(self) -> Any: | ||||
| provider_model_kwargs = self._to_model_kwargs_input(self.model_rules, self.model_kwargs) | provider_model_kwargs = self._to_model_kwargs_input(self.model_rules, self.model_kwargs) | ||||
| del provider_model_kwargs['max_tokens'] | |||||
| return EnhanceTongyi( | return EnhanceTongyi( | ||||
| model_name=self.name, | model_name=self.name, | ||||
| max_retries=1, | max_retries=1, | ||||
| def _set_model_kwargs(self, model_kwargs: ModelKwargs): | def _set_model_kwargs(self, model_kwargs: ModelKwargs): | ||||
| provider_model_kwargs = self._to_model_kwargs_input(self.model_rules, model_kwargs) | provider_model_kwargs = self._to_model_kwargs_input(self.model_rules, model_kwargs) | ||||
| del provider_model_kwargs['max_tokens'] | |||||
| for k, v in provider_model_kwargs.items(): | for k, v in provider_model_kwargs.items(): | ||||
| if hasattr(self.client, k): | if hasattr(self.client, k): | ||||
| setattr(self.client, k, v) | setattr(self.client, k, v) |
| if model_type == ModelType.TEXT_GENERATION: | if model_type == ModelType.TEXT_GENERATION: | ||||
| return [ | return [ | ||||
| { | { | ||||
| 'id': 'qwen-v1', | |||||
| 'name': 'qwen-v1', | |||||
| 'id': 'qwen-turbo', | |||||
| 'name': 'qwen-turbo', | |||||
| }, | }, | ||||
| { | { | ||||
| 'id': 'qwen-plus-v1', | |||||
| 'name': 'qwen-plus-v1', | |||||
| 'id': 'qwen-plus', | |||||
| 'name': 'qwen-plus', | |||||
| } | } | ||||
| ] | ] | ||||
| else: | else: | ||||
| :return: | :return: | ||||
| """ | """ | ||||
| model_max_tokens = { | model_max_tokens = { | ||||
| 'qwen-v1': 1500, | |||||
| 'qwen-plus-v1': 6500 | |||||
| 'qwen-turbo': 6000, | |||||
| 'qwen-plus': 6000 | |||||
| } | } | ||||
| return ModelKwargsRules( | return ModelKwargsRules( | ||||
| temperature=KwargRule[float](enabled=False), | |||||
| top_p=KwargRule[float](min=0, max=1, default=0.8, precision=2), | |||||
| temperature=KwargRule[float](min=0.01, max=1, default=1, precision=2), | |||||
| top_p=KwargRule[float](min=0.01, max=0.99, default=0.5, precision=2), | |||||
| presence_penalty=KwargRule[float](enabled=False), | presence_penalty=KwargRule[float](enabled=False), | ||||
| frequency_penalty=KwargRule[float](enabled=False), | frequency_penalty=KwargRule[float](enabled=False), | ||||
| max_tokens=KwargRule[int](min=10, max=model_max_tokens.get(model_name), default=1024, precision=0), | |||||
| max_tokens=KwargRule[int](enabled=False, max=model_max_tokens.get(model_name)), | |||||
| ) | ) | ||||
| @classmethod | @classmethod | ||||
| } | } | ||||
| llm = EnhanceTongyi( | llm = EnhanceTongyi( | ||||
| model_name='qwen-v1', | |||||
| model_name='qwen-turbo', | |||||
| max_retries=1, | max_retries=1, | ||||
| **credential_kwargs | **credential_kwargs | ||||
| ) | ) |
| "custom" | "custom" | ||||
| ], | ], | ||||
| "system_config": null, | "system_config": null, | ||||
| "model_flexibility": "fixed" | |||||
| "model_flexibility": "fixed", | |||||
| "price_config": { | |||||
| "qwen-turbo": { | |||||
| "prompt": "0.012", | |||||
| "completion": "0.012", | |||||
| "unit": "0.001", | |||||
| "currency": "RMB" | |||||
| }, | |||||
| "qwen-plus": { | |||||
| "prompt": "0.14", | |||||
| "completion": "0.14", | |||||
| "unit": "0.001", | |||||
| "currency": "RMB" | |||||
| } | |||||
| } | |||||
| } | } |
| google-search-results==2.4.2 | google-search-results==2.4.2 | ||||
| replicate~=0.9.0 | replicate~=0.9.0 | ||||
| websocket-client~=1.6.1 | websocket-client~=1.6.1 | ||||
| dashscope~=1.5.0 | |||||
| dashscope~=1.11.0 | |||||
| huggingface_hub~=0.16.4 | huggingface_hub~=0.16.4 | ||||
| transformers~=4.31.0 | transformers~=4.31.0 | ||||
| stripe~=5.5.0 | stripe~=5.5.0 |
| @patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) | @patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) | ||||
| def test_get_num_tokens(mock_decrypt): | def test_get_num_tokens(mock_decrypt): | ||||
| model = get_mock_model('qwen-v1') | |||||
| model = get_mock_model('qwen-turbo') | |||||
| rst = model.get_num_tokens([ | rst = model.get_num_tokens([ | ||||
| PromptMessage(type=MessageType.HUMAN, content='Who is your manufacturer?') | PromptMessage(type=MessageType.HUMAN, content='Who is your manufacturer?') | ||||
| ]) | ]) | ||||
| def test_run(mock_decrypt, mocker): | def test_run(mock_decrypt, mocker): | ||||
| mocker.patch('core.model_providers.providers.base.BaseModelProvider.update_last_used', return_value=None) | mocker.patch('core.model_providers.providers.base.BaseModelProvider.update_last_used', return_value=None) | ||||
| model = get_mock_model('qwen-v1') | |||||
| model = get_mock_model('qwen-turbo') | |||||
| rst = model.run( | rst = model.run( | ||||
| [PromptMessage(content='Human: Are you Human? you MUST only answer `y` or `n`? \nAssistant: ')], | [PromptMessage(content='Human: Are you Human? you MUST only answer `y` or `n`? \nAssistant: ')], | ||||
| stop=['\nHuman:'], | stop=['\nHuman:'], |