Co všechno smíte (a nesmíte) dělat s umělou inteligencí v EU? Za porušování hrozí vysoké pokuty

6. 2. 2025

Sdílet

Akt o umělé inteligenci v Evropě Autor: Depositphotos
Akt o umělé inteligenci v Evropě
Evropská komise publikovala první komplexní materiál k Aktu o umělé inteligenci (AI Act), který se jako první na světě snaží regulovat umělou inteligenci správným způsobem. Integrovat jej musí všechny členské státy.

V Česku AI Act dostalo na starost Ministerstvo práce a sociálních věcí, a to bez navýšení odborných kapacit. AI Act začal platit v srpnu loňského roku a firmy a úřady mají dva roky, než nařízení bude platné v plném rozsahu.

Cyber25

S AI Actem souvisí i postihy. Subjekty, které vyvinou či použijí umělou inteligenci v rozporu s touto regulací, mohou dostat pokutu sedmi procent z ročního obratu, případně 35 milionů eur, asi 880 milionů korun. Firmy jako Meta se podle informací Lupy chystají proti výrazné regulaci a postihům bojovat. Mluví se o tom, že i kvůli tomu se americký big tech spojil s Donaldem Trumpem, který by mohl na evropské představitele vyvinout tlak.

Evropská rada dala zelenou Zákonu o umělé inteligenci (AI act). V platnost vstoupí pravděpodobně v roce 2026 Přečtěte si také:

Evropská rada dala zelenou Zákonu o umělé inteligenci (AI act). V platnost vstoupí pravděpodobně v roce 2026

Nově zveřejněné pokyny k zakázaným praktikám shrnula Česká asociace umělé inteligence. Podle ní pokyny dávají jasnou představu, co se v EU nesmí dělat s AI. Zakázány jsou tyto věci:

  • AI nesmí manipulovat podprahovými technikami. Reklamy nebo chatboty nesmí ovlivňovat lidi skrytými signály, které obcházejí jejich vědomé rozhodování. Konec neuromarketingu, který „láme vůli“ bez vašeho vědomí!
  • Žádná AI nesmí zneužívat slabiny lidí. AI nesmí cílit na děti, seniory, osoby s postižením nebo lidi v tíživé finanční situaci a ovlivňovat jejich chování ve svůj prospěch.
  • Sociální skórování v EU? Zakázáno! Pokud někdo chtěl zavést systém „hodnocení občanů“ podle jejich chování (jako v Číně), má smůlu. Sociální skórování s dopadem na přístup k běžným službám je v EU zcela zakázané.
  • AI nesmí předpovídat zločince jen na základě osobnosti. Představte si AI, která by určovala, zda někdo spáchá zločin, jen podle jeho chování na sociálních sítích nebo psychologického profilu. Takové prediktivní AI systémy jsou nyní zakázané.
  • Automatický sběr obličejů z internetu? Neprojde! Firmy nesmí hromadně sbírat a analyzovat fotky obličejů z webu nebo bezpečnostních kamer k vytvoření databází pro rozpoznávání tváří.
  • Rozpoznávání emocí na pracovišti? Pouze pro lékařské účely. AI nesmí analyzovat emoce zaměstnanců v práci nebo studentů ve školách – s výjimkou zdravotních a bezpečnostních důvodů.
  • Biometrická kategorizace je omezená. AI nesmí analyzovat biometrické údaje a zařazovat lidi podle rasy, politických názorů, víry nebo sexuální orientace.
  • Policie nemůže sledovat lidi pomocí AI v reálném čase – až na výjimky. Systémy pro biometrickou identifikaci na veřejných místech v reálném čase jsou zakázané, s výjimkou hledání pohřešovaných osob, teroristických hrozeb nebo pátrání po nebezpečných pachatelích.
'; document.getElementById('preroll-iframe').onload = function () { setupIframe(); } prerollContainer = document.getElementsByClassName('preroll-container-iframe')[0]; } function setupIframe() { prerollDocument = document.getElementById('preroll-iframe').contentWindow.document; let el = prerollDocument.createElement('style'); prerollDocument.head.appendChild(el); el.innerText = "#adContainer>div:nth-of-type(1),#adContainer>div:nth-of-type(1) > iframe { width: 99% !important;height: 99% !important;max-width: 100%;}#videoContent,body{ width:100vw;height:100vh}body{ font-family:'Helvetica Neue',Arial,sans-serif}#videoContent{ overflow:hidden;background:#000}#adMuteBtn{ width:35px;height:35px;border:0;background:0 0;display:none;position:absolute;fill:rgba(230,230,230,1);bottom:20px;right:25px}"; videoContent = prerollDocument.getElementById('contentElement'); videoContent.style.display = 'none'; videoContent.volume = 1; videoContent.muted = false; const playPromise = videoContent.play(); if (playPromise !== undefined) { playPromise.then(function () { console.log('PREROLL sound allowed'); // setUpIMA(true); videoContent.volume = 1; videoContent.muted = false; setUpIMA(); }).catch(function () { console.log('PREROLL sound forbidden'); videoContent.volume = 0; videoContent.muted = true; setUpIMA(); }); } } function setupDimensions() { prerollWidth = Math.min(iinfoPrerollPosition.offsetWidth, 480); prerollHeight = Math.min(iinfoPrerollPosition.offsetHeight, 320); } function setUpIMA() { google.ima.settings.setDisableCustomPlaybackForIOS10Plus(true); google.ima.settings.setLocale('cs'); google.ima.settings.setNumRedirects(10); // Create the ad display container. createAdDisplayContainer(); // Create ads loader. adsLoader = new google.ima.AdsLoader(adDisplayContainer); // Listen and respond to ads loaded and error events. adsLoader.addEventListener( google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED, onAdsManagerLoaded, false); adsLoader.addEventListener( google.ima.AdErrorEvent.Type.AD_ERROR, onAdError, false); // An event listener to tell the SDK that our content video // is completed so the SDK can play any post-roll ads. const contentEndedListener = function () { adsLoader.contentComplete(); }; videoContent.onended = contentEndedListener; // Request video ads. const adsRequest = new google.ima.AdsRequest(); adsRequest.adTagUrl = iinfoVastUrls[iinfoVastUrlIndex]; console.log('Preroll advert: ' + iinfoVastUrls[iinfoVastUrlIndex]); videoContent.muted = false; videoContent.volume = 1; // Specify the linear and nonlinear slot sizes. This helps the SDK to // select the correct creative if multiple are returned. // adsRequest.linearAdSlotWidth = prerollWidth; // adsRequest.linearAdSlotHeight = prerollHeight; adsRequest.nonLinearAdSlotWidth = 0; adsRequest.nonLinearAdSlotHeight = 0; adsLoader.requestAds(adsRequest); } function createAdDisplayContainer() { // We assume the adContainer is the DOM id of the element that will house // the ads. prerollDocument.getElementById('videoContent').style.display = 'none'; adDisplayContainer = new google.ima.AdDisplayContainer( prerollDocument.getElementById('adContainer'), videoContent); } function unmutePrerollAdvert() { adVolume = !adVolume; if (adVolume) { adsManager.setVolume(0.3); prerollDocument.getElementById('adMuteBtn').innerHTML = ''; } else { adsManager.setVolume(0); prerollDocument.getElementById('adMuteBtn').innerHTML = ''; } } function onAdsManagerLoaded(adsManagerLoadedEvent) { // Get the ads manager. const adsRenderingSettings = new google.ima.AdsRenderingSettings(); adsRenderingSettings.restoreCustomPlaybackStateOnAdBreakComplete = true; adsRenderingSettings.loadVideoTimeout = 12000; // videoContent should be set to the content video element. adsManager = adsManagerLoadedEvent.getAdsManager(videoContent, adsRenderingSettings); // Add listeners to the required events. adsManager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, onAdError); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED, onContentPauseRequested); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED, onContentResumeRequested); adsManager.addEventListener( google.ima.AdEvent.Type.ALL_ADS_COMPLETED, onAdEvent); // Listen to any additional events, if necessary. adsManager.addEventListener(google.ima.AdEvent.Type.LOADED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.STARTED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.COMPLETE, onAdEvent); playAds(); } function playAds() { // Initialize the container. Must be done through a user action on mobile // devices. videoContent.load(); adDisplayContainer.initialize(); // setupDimensions(); try { // Initialize the ads manager. Ad rules playlist will start at this time. adsManager.init(1920, 1080, google.ima.ViewMode.NORMAL); // Call play to start showing the ad. Single video and overlay ads will // start at this time; the call will be ignored for ad rules. adsManager.start(); // window.addEventListener('resize', function (event) { // if (adsManager) { // setupDimensions(); // adsManager.resize(prerollWidth, prerollHeight, google.ima.ViewMode.NORMAL); // } // }); } catch (adError) { // An error may be thrown if there was a problem with the VAST response. // videoContent.play(); } } function onAdEvent(adEvent) { const ad = adEvent.getAd(); console.log('Preroll event: ' + adEvent.type); switch (adEvent.type) { case google.ima.AdEvent.Type.LOADED: if (!ad.isLinear()) { videoContent.play(); } prerollDocument.getElementById('adContainer').style.width = '100%'; prerollDocument.getElementById('adContainer').style.maxWidth = '640px'; prerollDocument.getElementById('adContainer').style.height = '360px'; break; case google.ima.AdEvent.Type.STARTED: window.addEventListener('scroll', onActiveView); if (ad.isLinear()) { intervalTimer = setInterval( function () { // Example: const remainingTime = adsManager.getRemainingTime(); // adsManager.pause(); }, 300); // every 300ms } prerollDocument.getElementById('adMuteBtn').style.display = 'block'; break; case google.ima.AdEvent.Type.ALL_ADS_COMPLETED: if (ad.isLinear()) { clearInterval(intervalTimer); } if (prerollLastError === 303) { playYtVideo(); } break; case google.ima.AdEvent.Type.COMPLETE: if (ad.isLinear()) { clearInterval(intervalTimer); } playYtVideo(); break; } } function onAdError(adErrorEvent) { console.log(adErrorEvent.getError()); prerollLastError = adErrorEvent.getError().getErrorCode(); if (!loadNext()) { playYtVideo(); } } function loadNext() { iinfoVastUrlIndex++; if (iinfoVastUrlIndex < iinfoVastUrls.length) { iinfoPrerollPosition.remove(); playPrerollAd(); } else { return false; } adVolume = 1; return true; } function onContentPauseRequested() { videoContent.pause(); } function onContentResumeRequested() { videoContent.play(); } function onActiveView() { if (prerollContainer) { const containerOffset = prerollContainer.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight/1 && containerOffset.bottom > 0.0) { if (prerollPaused) { adsManager.resume(); prerollPaused = false; } return true; } else { if (!prerollPaused) { adsManager.pause(); prerollPaused = true; } } } return false; } function playYtVideo() { iinfoPrerollPosition.remove(); youtubeIframe.style.display = 'block'; youtubeIframe.src += '&autoplay=1&mute=1'; } }