comfyui.py 823 B

12345678910111213141516171819202122232425
  1. from typing import Any
  2. import websocket
  3. from yarl import URL
  4. from core.tools.errors import ToolProviderCredentialValidationError
  5. from core.tools.provider.builtin_tool_provider import BuiltinToolProviderController
  6. class ComfyUIProvider(BuiltinToolProviderController):
  7. def _validate_credentials(self, credentials: dict[str, Any]) -> None:
  8. ws = websocket.WebSocket()
  9. base_url = URL(credentials.get("base_url"))
  10. ws_protocol = "ws"
  11. if base_url.scheme == "https":
  12. ws_protocol = "wss"
  13. ws_address = f"{ws_protocol}://{base_url.authority}/ws?clientId=test123"
  14. try:
  15. ws.connect(ws_address)
  16. except Exception as e:
  17. raise ToolProviderCredentialValidationError(f"can not connect to {ws_address}")
  18. finally:
  19. ws.close()