Spaces:
Sleeping
Sleeping
import yaml | |
def set_type(project_variables, project_cc_yaml): | |
project_type = None | |
ai_system = project_variables['ai_project_type']['ai_system'] | |
gpai_model = project_variables['ai_project_type']['gpai_model'] | |
if project_cc_yaml['ai_system']['ai_system']['value']: | |
ai_system = True | |
if project_cc_yaml['gpai_model']['gpai_model']['value']: | |
gpai_model = True | |
if ai_system and gpai_model: | |
msg = ("Your project cannot be both an AI system and a GPAI model. Please revise your Project CC accordingly.") | |
if ai_system == True: | |
for key, value in project_cc_yaml['high_risk_ai_system']: | |
if value and sum(map(bool, [project_cc_yaml['high_risk_ai_system']['filter_exception_rights'],project_cc_yaml['high_risk_ai_system']['filter_exception_narrow'],project_cc_yaml['high_risk_ai_system']['filter_exception_human'],project_cc_yaml['high_risk_ai_system']['filter_exception_deviation'], project_cc_yaml['high_risk_ai_system']['filter_exception_prep']])) < 1: | |
project_type = "high_risk_ai_system" | |
if gpai_model == True: | |
if project_cc_yaml['gpai_model_systematic_risk']['evaluation'] or project_cc_yaml['gpai_model_systematic_risk']['flops']: | |
project_type = "gpai_model_systematic_risk" | |
return project_type | |
def set_operator_role_and_location(project_variables, project_cc_yaml): | |
operators = 0 | |
ai_system = project_variables['ai_project_type']['ai_system'] | |
gpai_model = project_variables['ai_project_type']['gpai_model'] | |
for var in project_variables['operator_role']: | |
if project_cc_yaml['operator_role'][f'{var}']['value']: | |
project_variables['operator_role'][f'{var}'] = True | |
operators += 1 | |
if ai_system and gpai_model: | |
msg = ("Your project cannot be both an AI system and a GPAI model. Please revise your Project CC accordingly.") | |
if operators != 1: | |
msg = ("Please specify exactly one operator role.") | |
return project_variables | |
def set_eu_market_status(project_variables, project_cc_yaml): | |
if project_cc_yaml['eu_market_status']['placed_on_market']['value']: | |
project_variables['eu_market_status']["placed_on_market"] = True | |
if project_cc_yaml['eu_market_status']['put_into_service']['value']: | |
project_variables['eu_market_status']["put_into_service"] = True | |
if project_cc_yaml['operator_role']['output_used']['value']: | |
project_variables['operator_role']["output_used"] = True | |
return project_variables | |
def check_within_scope(project_cc_yaml): | |
if not check_excepted(project_cc_yaml): | |
if provider and ((ai_system and (placed_on_market or put_into_service)) or (gpai_model and placed_on_market)): # Article 2.1(a) | |
return True | |
if deployer and eu_located: # Article 2.1(b) | |
return True | |
if (provider or deployer) and (ai_system and eu_located and output_used): # Article 2.1(c) | |
return True | |
if (importer or distributor) and ai_system: # Article 2.1(d) | |
return True | |
if product_manufacturer and ai_system and (placed_on_market or put_into_service): # Article 2.1(e) | |
return True | |
else: | |
return False | |
def check_excepted(project_cc_yaml): | |
if project_cc_yaml['excepted']['scientific'] or project_cc_yaml['excepted']['pre_market'] or (ai_system and project_cc_yaml['excepted']['open_source_ai_system']) or (gpai_model and project_cc_yaml['excepted']['open_source_gpai_system']): | |
return True | |
else: | |
return False | |
def check_prohibited (project_variables, project_cc_yaml): | |
ai_system = project_variables['ai_project_type']['ai_system'] | |
if ai_system: | |
for key in project_cc_yaml['prohibited_practice']['ai_system']: | |
if key[value]: | |
print("You are engaged in a prohibited practice and thus the project is non-compliant.") | |
return True | |
if project_cc_yaml['prohibited_practice']['biometric']['categorization']: | |
print("You are engaged in a prohibited practice and thus the project is non-compliant.") | |
return True | |
if project_cc_yaml['prohibited_practice']['biometric']['real_time'] and sum(map(bool, [project_cc_yaml['prohibited_practice']['biometric']['real_time_exception_victim'],project_cc['prohibited_practice']['biometric']['real_time_exception_threat'], project_cc_yaml['prohibited_practice']['biometric']['real_time_exception_investigation']])) == 0: | |
print("You are engaged in a prohibited practice and thus the project is non-compliant.") | |
return True | |
else: | |
print("You are not engaged in any prohibited practices.") | |
return False | |
# def check_all_true(file_path): | |
# data = yaml.safe_load(file_path) | |
# # Iterate through top-level keys | |
# for top_key, top_value in data.items(): | |
# if isinstance(top_value, dict): | |
# # Iterate through second-level keys | |
# for second_key, second_value in top_value.items(): | |
# if not second_value: | |
# print("You are non-compliant with the Act") | |
# break | |
# else: | |
# print("No problems here") |