TypeError when validating Tongyi provider credentials #19321

Closed
opened 2026-02-21 19:58:23 -05:00 by yindo · 0 comments
Owner

Originally created by @ZaakfungL on GitHub (Oct 15, 2025).

Self Checks

  • I have read the Contributing Guide and Language Policy.
  • This is only for bug report, if you would like to ask a question, please head to Discussions.
  • I have searched for existing issues search for existing issues, including closed ones.
  • I confirm that I am using English to submit this report, otherwise it will be closed.
  • 【中文用户 & Non English User】请使用英语提交,否则会被关闭 :)
  • Please do not modify this template :) and fill in all the required fields.

Dify version

1.9.1

Cloud or Self Hosted

Self Hosted (Docker)

Steps to reproduce

1.Navigate to Settings -> Model Providers in the Dify console.
2.Click "Add Provider" and select "Tongyi" from the list.
3.Enter a valid API Key into the API-KEY credential field.
4.Click "Save".
5.The operation fails immediately.

Image

✔️ Expected Behavior

The credentials for the Tongyi model provider should be validated and saved successfully, allowing the model to be used within the application.

Actual Behavior

The UI shows an error, and the API returns a Internal Server Error.

Here is the full traceback from the api-1 container log:

plugin_daemon-1 | [GIN] 2025/10/15 - 07:28:38 | 200 | 8.334548ms | 172.19.0.10 | GET "/plugin/21b811b0-8ebe-4d69-b8eb-eb4709d1ac10/management/models?page=1&page_size=256"
plugin_daemon-1 | [GIN] 2025/10/15 - 07:28:38 | 200 | 2.101917ms | 172.19.0.10 | POST "/plugin/21b811b0-8ebe-4d69-b8eb-eb4709d1ac10/dispatch/model/validate_provider_credentials"
api-1 | 2025-10-15 07:28:38.766 ERROR [Dummy-9] [base.py:211] - Error in stream reponse for plugin {'code': -500, 'message': '{"message":"{\"args\":{},\"error_type\":\"TypeError\",\"message\":\"TongyiLargeLanguageModel.validate_credentials() missing 1 required positional argument: 'self'\"}","error_type":"PluginInvokeError","args":null}', 'data': None}
api-1 | 2025-10-15 07:28:38.766 ERROR [Dummy-9] [app.py:875] - Exception on /console/api/workspaces/current/model-providers/langgenius/tongyi/tongyi/credentials [POST]
api-1 | Traceback (most recent call last):
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/flask/app.py", line 917, in full_dispatch_request
api-1 | rv = self.dispatch_request()
api-1 | ^^^^^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/flask/app.py", line 902, in dispatch_request
api-1 | return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) # type: ignore[no-any-return]
api-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/flask_restx/api.py", line 402, in wrapper
api-1 | resp = resource(*args, **kwargs)
api-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/flask/views.py", line 110, in view
api-1 | return current_app.ensure_sync(self.dispatch_request)(**kwargs) # type: ignore[no-any-return]
api-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/flask_restx/resource.py", line 41, in dispatch_request
api-1 | resp = meth(*args, **kwargs)
api-1 | ^^^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/controllers/console/wraps.py", line 215, in decorated
api-1 | return view(*args, **kwargs)
api-1 | ^^^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/libs/login.py", line 62, in decorated_view
api-1 | return current_app.ensure_sync(func)(*args, **kwargs)
api-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/controllers/console/wraps.py", line 37, in decorated
api-1 | return view(*args, **kwargs)
api-1 | ^^^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/controllers/console/workspace/model_providers.py", line 89, in post
api-1 | model_provider_service.create_provider_credential(
api-1 | File "/app/api/services/model_provider_service.py", line 166, in create_provider_credential
api-1 | provider_configuration.create_provider_credential(credentials, credential_name)
api-1 | File "/app/api/core/entities/provider_configuration.py", line 444, in create_provider_credential
api-1 | credentials = self.validate_provider_credentials(credentials=credentials, session=session)
api-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/core/entities/provider_configuration.py", line 357, in validate_provider_credentials
api-1 | return _validate(session)
api-1 | ^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/core/entities/provider_configuration.py", line 346, in _validate
api-1 | validated_credentials = model_provider_factory.provider_credentials_validate(
api-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/core/model_runtime/model_providers/model_provider_factory.py", line 123, in provider_credentials_validate
api-1 | self.plugin_model_manager.validate_provider_credentials(
api-1 | File "/app/api/core/plugin/impl/model.py", line 97, in validate_provider_credentials
api-1 | for resp in response:
api-1 | ^^^^^^^^
api-1 | File "/app/api/core/plugin/impl/base.py", line 212, in _request_with_plugin_daemon_response_stream
api-1 | self._handle_plugin_daemon_error(error.error_type, error.message)
api-1 | File "/app/api/core/plugin/impl/base.py", line 246, in _handle_plugin_daemon_error
api-1 | raise PluginInvokeError(description=message)
api-1 | core.plugin.impl.exc.PluginInvokeError: req_id: bda5bb4b83 PluginInvokeError: {"args":{},"error_type":"TypeError","message":"TongyiLargeLanguageModel.validate_credentials() missing 1 required positional argument: 'self'"}
api-1 | 2025-10-15 07:28:38.766 ERROR [Dummy-9] [app.py:875] - Exception on /console/api/workspaces/current/model-providers/langgenius/tongyi/tongyi/credentials [POST]
api-1 | Traceback (most recent call last):
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/flask/app.py", line 917, in full_dispatch_request
api-1 | rv = self.dispatch_request()
api-1 | ^^^^^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/flask/app.py", line 902, in dispatch_request
api-1 | return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) # type: ignore[no-any-return]
api-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/flask_restx/api.py", line 402, in wrapper
api-1 | resp = resource(*args, **kwargs)
api-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/flask/views.py", line 110, in view
api-1 | return current_app.ensure_sync(self.dispatch_request)(**kwargs) # type: ignore[no-any-return]
api-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/flask_restx/resource.py", line 41, in dispatch_request
api-1 | resp = meth(*args, **kwargs)
api-1 | ^^^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/controllers/console/wraps.py", line 215, in decorated
api-1 | return view(*args, **kwargs)
api-1 | ^^^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/libs/login.py", line 62, in decorated_view
api-1 | return current_app.ensure_sync(func)(*args, **kwargs)
api-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/controllers/console/wraps.py", line 37, in decorated
api-1 | return view(*args, **kwargs)
api-1 | ^^^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/controllers/console/workspace/model_providers.py", line 89, in post
api-1 | model_provider_service.create_provider_credential(
api-1 | File "/app/api/services/model_provider_service.py", line 166, in create_provider_credential
api-1 | provider_configuration.create_provider_credential(credentials, credential_name)
api-1 | File "/app/api/core/entities/provider_configuration.py", line 444, in create_provider_credential
api-1 | credentials = self.validate_provider_credentials(credentials=credentials, session=session)
api-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/core/entities/provider_configuration.py", line 357, in validate_provider_credentials
api-1 | return _validate(session)
api-1 | ^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/core/entities/provider_configuration.py", line 346, in _validate
api-1 | validated_credentials = model_provider_factory.provider_credentials_validate(
api-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/core/model_runtime/model_providers/model_provider_factory.py", line 123, in provider_credentials_validate
api-1 | self.plugin_model_manager.validate_provider_credentials(
api-1 | File "/app/api/core/plugin/impl/model.py", line 97, in validate_provider_credentials
api-1 | for resp in response:
api-1 | ^^^^^^^^
api-1 | File "/app/api/core/plugin/impl/base.py", line 212, in _request_with_plugin_daemon_response_stream
api-1 | self._handle_plugin_daemon_error(error.error_type, error.message)
api-1 | File "/app/api/core/plugin/impl/base.py", line 246, in _handle_plugin_daemon_error
api-1 | raise PluginInvokeError(description=message)
api-1 | core.plugin.impl.exc.PluginInvokeError: req_id: bda5bb4b83 PluginInvokeError: {"args":{},"error_type":"TypeError","message":"TongyiLargeLanguageModel.validate_credentials() missing 1 required positional argument: 'self'"}
nginx-1 | 172.19.0.1 - - [15/Oct/2025:07:28:38 +0000] "POST /console/api/workspaces/current/model-providers/langgenius/tongyi/tongyi/credentials HTTP/1.1" 500 66 "http://localhost:7878/datasets/create" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" "-"

Originally created by @ZaakfungL on GitHub (Oct 15, 2025). ### Self Checks - [x] I have read the [Contributing Guide](https://github.com/langgenius/dify/blob/main/CONTRIBUTING.md) and [Language Policy](https://github.com/langgenius/dify/issues/1542). - [x] This is only for bug report, if you would like to ask a question, please head to [Discussions](https://github.com/langgenius/dify/discussions/categories/general). - [x] I have searched for existing issues [search for existing issues](https://github.com/langgenius/dify/issues), including closed ones. - [x] I confirm that I am using English to submit this report, otherwise it will be closed. - [x] 【中文用户 & Non English User】请使用英语提交,否则会被关闭 :) - [x] Please do not modify this template :) and fill in all the required fields. ### Dify version 1.9.1 ### Cloud or Self Hosted Self Hosted (Docker) ### Steps to reproduce 1.Navigate to Settings -> Model Providers in the Dify console. 2.Click "Add Provider" and select "Tongyi" from the list. 3.Enter a valid API Key into the API-KEY credential field. 4.Click "Save". 5.The operation fails immediately. <img width="2419" height="1238" alt="Image" src="https://github.com/user-attachments/assets/d9f6b122-be9e-4d4e-b956-b6d0dc0af7d1" /> ### ✔️ Expected Behavior The credentials for the Tongyi model provider should be validated and saved successfully, allowing the model to be used within the application. ### ❌ Actual Behavior The UI shows an error, and the API returns a Internal Server Error. Here is the full traceback from the api-1 container log: plugin_daemon-1 | [GIN] 2025/10/15 - 07:28:38 | 200 | 8.334548ms | 172.19.0.10 | GET "/plugin/21b811b0-8ebe-4d69-b8eb-eb4709d1ac10/management/models?page=1&page_size=256" plugin_daemon-1 | [GIN] 2025/10/15 - 07:28:38 | 200 | 2.101917ms | 172.19.0.10 | POST "/plugin/21b811b0-8ebe-4d69-b8eb-eb4709d1ac10/dispatch/model/validate_provider_credentials" api-1 | 2025-10-15 07:28:38.766 ERROR [Dummy-9] [base.py:211] - Error in stream reponse for plugin {'code': -500, 'message': '{"message":"{\\"args\\":{},\\"error_type\\":\\"TypeError\\",\\"message\\":\\"TongyiLargeLanguageModel.validate_credentials() missing 1 required positional argument: \'self\'\\"}","error_type":"PluginInvokeError","args":null}', 'data': None} api-1 | 2025-10-15 07:28:38.766 ERROR [Dummy-9] [app.py:875] - Exception on /console/api/workspaces/current/model-providers/langgenius/tongyi/tongyi/credentials [POST] api-1 | Traceback (most recent call last): api-1 | File "/app/api/.venv/lib/python3.12/site-packages/flask/app.py", line 917, in full_dispatch_request api-1 | rv = self.dispatch_request() api-1 | ^^^^^^^^^^^^^^^^^^^^^^^ api-1 | File "/app/api/.venv/lib/python3.12/site-packages/flask/app.py", line 902, in dispatch_request api-1 | return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) # type: ignore[no-any-return] api-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ api-1 | File "/app/api/.venv/lib/python3.12/site-packages/flask_restx/api.py", line 402, in wrapper api-1 | resp = resource(*args, **kwargs) api-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^ api-1 | File "/app/api/.venv/lib/python3.12/site-packages/flask/views.py", line 110, in view api-1 | return current_app.ensure_sync(self.dispatch_request)(**kwargs) # type: ignore[no-any-return] api-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ api-1 | File "/app/api/.venv/lib/python3.12/site-packages/flask_restx/resource.py", line 41, in dispatch_request api-1 | resp = meth(*args, **kwargs) api-1 | ^^^^^^^^^^^^^^^^^^^^^ api-1 | File "/app/api/controllers/console/wraps.py", line 215, in decorated api-1 | return view(*args, **kwargs) api-1 | ^^^^^^^^^^^^^^^^^^^^^ api-1 | File "/app/api/libs/login.py", line 62, in decorated_view api-1 | return current_app.ensure_sync(func)(*args, **kwargs) api-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ api-1 | File "/app/api/controllers/console/wraps.py", line 37, in decorated api-1 | return view(*args, **kwargs) api-1 | ^^^^^^^^^^^^^^^^^^^^^ api-1 | File "/app/api/controllers/console/workspace/model_providers.py", line 89, in post api-1 | model_provider_service.create_provider_credential( api-1 | File "/app/api/services/model_provider_service.py", line 166, in create_provider_credential api-1 | provider_configuration.create_provider_credential(credentials, credential_name) api-1 | File "/app/api/core/entities/provider_configuration.py", line 444, in create_provider_credential api-1 | credentials = self.validate_provider_credentials(credentials=credentials, session=session) api-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ api-1 | File "/app/api/core/entities/provider_configuration.py", line 357, in validate_provider_credentials api-1 | return _validate(session) api-1 | ^^^^^^^^^^^^^^^^^^ api-1 | File "/app/api/core/entities/provider_configuration.py", line 346, in _validate api-1 | validated_credentials = model_provider_factory.provider_credentials_validate( api-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ api-1 | File "/app/api/core/model_runtime/model_providers/model_provider_factory.py", line 123, in provider_credentials_validate api-1 | self.plugin_model_manager.validate_provider_credentials( api-1 | File "/app/api/core/plugin/impl/model.py", line 97, in validate_provider_credentials api-1 | for resp in response: api-1 | ^^^^^^^^ api-1 | File "/app/api/core/plugin/impl/base.py", line 212, in _request_with_plugin_daemon_response_stream api-1 | self._handle_plugin_daemon_error(error.error_type, error.message) api-1 | File "/app/api/core/plugin/impl/base.py", line 246, in _handle_plugin_daemon_error api-1 | raise PluginInvokeError(description=message) api-1 | core.plugin.impl.exc.PluginInvokeError: req_id: bda5bb4b83 PluginInvokeError: {"args":{},"error_type":"TypeError","message":"TongyiLargeLanguageModel.validate_credentials() missing 1 required positional argument: 'self'"} api-1 | 2025-10-15 07:28:38.766 ERROR [Dummy-9] [app.py:875] - Exception on /console/api/workspaces/current/model-providers/langgenius/tongyi/tongyi/credentials [POST] api-1 | Traceback (most recent call last): api-1 | File "/app/api/.venv/lib/python3.12/site-packages/flask/app.py", line 917, in full_dispatch_request api-1 | rv = self.dispatch_request() api-1 | ^^^^^^^^^^^^^^^^^^^^^^^ api-1 | File "/app/api/.venv/lib/python3.12/site-packages/flask/app.py", line 902, in dispatch_request api-1 | return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) # type: ignore[no-any-return] api-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ api-1 | File "/app/api/.venv/lib/python3.12/site-packages/flask_restx/api.py", line 402, in wrapper api-1 | resp = resource(*args, **kwargs) api-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^ api-1 | File "/app/api/.venv/lib/python3.12/site-packages/flask/views.py", line 110, in view api-1 | return current_app.ensure_sync(self.dispatch_request)(**kwargs) # type: ignore[no-any-return] api-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ api-1 | File "/app/api/.venv/lib/python3.12/site-packages/flask_restx/resource.py", line 41, in dispatch_request api-1 | resp = meth(*args, **kwargs) api-1 | ^^^^^^^^^^^^^^^^^^^^^ api-1 | File "/app/api/controllers/console/wraps.py", line 215, in decorated api-1 | return view(*args, **kwargs) api-1 | ^^^^^^^^^^^^^^^^^^^^^ api-1 | File "/app/api/libs/login.py", line 62, in decorated_view api-1 | return current_app.ensure_sync(func)(*args, **kwargs) api-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ api-1 | File "/app/api/controllers/console/wraps.py", line 37, in decorated api-1 | return view(*args, **kwargs) api-1 | ^^^^^^^^^^^^^^^^^^^^^ api-1 | File "/app/api/controllers/console/workspace/model_providers.py", line 89, in post api-1 | model_provider_service.create_provider_credential( api-1 | File "/app/api/services/model_provider_service.py", line 166, in create_provider_credential api-1 | provider_configuration.create_provider_credential(credentials, credential_name) api-1 | File "/app/api/core/entities/provider_configuration.py", line 444, in create_provider_credential api-1 | credentials = self.validate_provider_credentials(credentials=credentials, session=session) api-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ api-1 | File "/app/api/core/entities/provider_configuration.py", line 357, in validate_provider_credentials api-1 | return _validate(session) api-1 | ^^^^^^^^^^^^^^^^^^ api-1 | File "/app/api/core/entities/provider_configuration.py", line 346, in _validate api-1 | validated_credentials = model_provider_factory.provider_credentials_validate( api-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ api-1 | File "/app/api/core/model_runtime/model_providers/model_provider_factory.py", line 123, in provider_credentials_validate api-1 | self.plugin_model_manager.validate_provider_credentials( api-1 | File "/app/api/core/plugin/impl/model.py", line 97, in validate_provider_credentials api-1 | for resp in response: api-1 | ^^^^^^^^ api-1 | File "/app/api/core/plugin/impl/base.py", line 212, in _request_with_plugin_daemon_response_stream api-1 | self._handle_plugin_daemon_error(error.error_type, error.message) api-1 | File "/app/api/core/plugin/impl/base.py", line 246, in _handle_plugin_daemon_error api-1 | raise PluginInvokeError(description=message) api-1 | core.plugin.impl.exc.PluginInvokeError: req_id: bda5bb4b83 PluginInvokeError: {"args":{},"error_type":"TypeError","message":"TongyiLargeLanguageModel.validate_credentials() missing 1 required positional argument: 'self'"} nginx-1 | 172.19.0.1 - - [15/Oct/2025:07:28:38 +0000] "POST /console/api/workspaces/current/model-providers/langgenius/tongyi/tongyi/credentials HTTP/1.1" 500 66 "http://localhost:7878/datasets/create" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" "-"
yindo added the 🐞 bug label 2026-02-21 19:58:23 -05:00
yindo closed this issue 2026-02-21 19:58:23 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: langgenius/dify#19321