Mirror of https://github.com/roostorg/coop github.com/roostorg/coop
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

[Signals][Simplification] Remove old SaaS Coop Risk AI model (#293)

Closes #35

authored by

Juan Mrad and committed by
GitHub
0c03cae7 3a759846

+1 -122
-1
client/src/graphql/generated.ts
··· 4120 4120 4121 4121 export const GQLSignalType = { 4122 4122 Aggregation: 'AGGREGATION', 4123 - BenignModel: 'BENIGN_MODEL', 4124 4123 Custom: 'CUSTOM', 4125 4124 GeoContainedWithin: 'GEO_CONTAINED_WITHIN', 4126 4125 GoogleContentSafetyApiImage: 'GOOGLE_CONTENT_SAFETY_API_IMAGE',
-1
client/src/models/signal.ts
··· 80 80 case 'TEXT_SIMILARITY_SCORE': 81 81 case 'USER_SCORE': 82 82 case 'USER_STRIKE_VALUE': 83 - case 'BENIGN_MODEL': 84 83 return null; 85 84 default: 86 85 // Plugin signal types (e.g. RANDOM_SIGNAL_SELECTION) or unknown: no built-in integration
-1
server/graphql/generated.ts
··· 4189 4189 4190 4190 export const GQLSignalType = { 4191 4191 Aggregation: 'AGGREGATION', 4192 - BenignModel: 'BENIGN_MODEL', 4193 4192 Custom: 'CUSTOM', 4194 4193 GeoContainedWithin: 'GEO_CONTAINED_WITHIN', 4195 4194 GoogleContentSafetyApiImage: 'GOOGLE_CONTENT_SAFETY_API_IMAGE',
-1
server/graphql/modules/signal.ts
··· 93 93 IMAGE_SIMILARITY_SCORE 94 94 IMAGE_SIMILARITY_DOES_NOT_MATCH 95 95 IMAGE_SIMILARITY_MATCH 96 - BENIGN_MODEL 97 96 GOOGLE_CONTENT_SAFETY_API_IMAGE 98 97 OPEN_AI_GRAPHIC_VIOLENCE_TEXT_MODEL 99 98 OPEN_AI_HATE_TEXT_MODEL
+1 -1
server/services/signalsService/SignalsService.ts
··· 239 239 * `type` given in `opts.signal.type`. I.e., the type of the signal id and the 240 240 * type of the `input` must be correlated. The type signature used here _does_ 241 241 * capture that, and will work very well if `T` is instantiated with a single 242 - * signal type. Eg, `runSignal<"BENIGN_MODEL">(..)` gives very good inferred 242 + * signal type. Eg, `runSignal<"USER_SCORE">(..)` gives very good inferred 243 243 * argument types. However, when `T` is not known precisely at compile time at 244 244 * the call site, this argument type is gonna be very hard to satisfy (and 245 245 * rightfully so -- the call probably isn't type safe), so the caller will
-2
server/services/signalsService/helpers/instantiateBuiltInSignals.ts
··· 6 6 import { type UserScore } from '../../userStatisticsService/userStatisticsService.js'; 7 7 import { type UserStrikeService } from '../../userStrikeService/index.js'; 8 8 import AggregationSignal from '../signals/aggregation/AggregationSignal.js'; 9 - import CoopRiskModelSignal from '../signals/CoopRiskModelSignal.js'; 10 9 import GeoContainedWithinSignal from '../signals/GeoContainedWithinSignal.js'; 11 10 import ImageExactMatchSignal from '../signals/ImageExactMatchSignal.js'; 12 11 import ImageSimilarityDoesNotMatchSignal from '../signals/ImageSimilarityDoesNotMatch.js'; ··· 125 124 ), 126 125 [SignalType.GOOGLE_CLOUD_TRANSLATE_MODEL]: 127 126 new GoogleCloudTranslationAPISignal(), 128 - [SignalType.BENIGN_MODEL]: new CoopRiskModelSignal(), 129 127 [SignalType.AGGREGATION]: new AggregationSignal(aggregationsService), 130 128 [SignalType.ZENTROPI_LABELER]: new ZentropiLabelerSignal( 131 129 credentialGetters.ZENTROPI,
-111
server/services/signalsService/signals/CoopRiskModelSignal.ts
··· 1 - import { ScalarTypes } from '@roostorg/types'; 2 - 3 - import { Language } from '../../../utils/language.js'; 4 - import { SignalPricingStructure as SignalPricingStructureType } from '../types/SignalPricingStructure.js'; 5 - import { SignalType } from '../types/SignalType.js'; 6 - import SignalBase, { 7 - type SignalDisabledInfo, 8 - type SignalInput, 9 - } from './SignalBase.js'; 10 - 11 - export default class CoopRiskModelSignal extends SignalBase< 12 - ScalarTypes['STRING'], 13 - { scalarType: ScalarTypes['NUMBER'] } 14 - > { 15 - get docsUrl() { 16 - return null; 17 - } 18 - 19 - get eligibleSubcategories() { 20 - return []; 21 - } 22 - 23 - override get integration() { 24 - return null; 25 - } 26 - 27 - get recommendedThresholds() { 28 - return { 29 - highPrecisionThreshold: '0.95', 30 - highRecallThreshold: '0.8', 31 - }; 32 - } 33 - 34 - get needsMatchingValues() { 35 - return false; 36 - } 37 - 38 - override get id() { 39 - return { type: SignalType.BENIGN_MODEL }; 40 - } 41 - 42 - override get eligibleInputs() { 43 - return [ScalarTypes.STRING]; 44 - } 45 - 46 - override get outputType() { 47 - return { 48 - scalarType: ScalarTypes.NUMBER, 49 - }; 50 - } 51 - 52 - override get displayName() { 53 - return 'Coop Harassment AI Model'; 54 - } 55 - 56 - override async getDisabledInfo(_orgId: string): Promise<SignalDisabledInfo> { 57 - return { 58 - disabled: true, 59 - disabledMessage: 'Please contact Coop to try our new Coop AI product!', 60 - }; 61 - } 62 - 63 - override get description() { 64 - return 'Your custom Coop Harassment AI model, trained on your data, your Harassment policy, and your labeled examples.'; 65 - } 66 - 67 - get pricingStructure(): SignalPricingStructureType { 68 - return SignalPricingStructureType.FREE; 69 - } 70 - 71 - override get supportedLanguages(): Language[] | 'ALL' { 72 - return [ 73 - Language.ENGLISH, 74 - Language.FRENCH, 75 - Language.GERMAN, 76 - Language.ITALIAN, 77 - Language.PORTUGUESE, 78 - Language.RUSSIAN, 79 - Language.SPANISH, 80 - Language.HINDI, 81 - Language.KOREAN, 82 - Language.POLISH, 83 - Language.PORTUGUESE, 84 - Language.ARABIC, 85 - Language.CHINESE, 86 - Language.CZECH, 87 - Language.DUTCH, 88 - Language.INDONESIAN, 89 - Language.JAPANESE, 90 - ]; 91 - } 92 - 93 - override getCost() { 94 - return 15; 95 - } 96 - 97 - override get allowedInAutomatedRules() { 98 - return true; 99 - } 100 - 101 - override get needsActionPenalties() { 102 - return false as const; 103 - } 104 - 105 - override async run(_input: SignalInput<ScalarTypes['STRING']>) { 106 - return { 107 - score: 0.5, 108 - outputType: { scalarType: ScalarTypes.NUMBER }, 109 - }; 110 - } 111 - }
-2
server/services/signalsService/types/SignalArgsByType.ts
··· 24 24 [SignalType.GEO_CONTAINED_WITHIN]: undefined; 25 25 [SignalType.USER_SCORE]: undefined; 26 26 [SignalType.USER_STRIKE_VALUE]: undefined; 27 - [SignalType.BENIGN_MODEL]: undefined; 28 27 [SignalType.OPEN_AI_GRAPHIC_VIOLENCE_TEXT_MODEL]: undefined; 29 28 [SignalType.OPEN_AI_HATE_TEXT_MODEL]: undefined; 30 29 [SignalType.OPEN_AI_HATE_THREATENING_TEXT_MODEL]: undefined; ··· 59 58 [SignalType.GEO_CONTAINED_WITHIN]: undefined; 60 59 [SignalType.USER_SCORE]: undefined; 61 60 [SignalType.USER_STRIKE_VALUE]: undefined; 62 - [SignalType.BENIGN_MODEL]: undefined; 63 61 [SignalType.OPEN_AI_GRAPHIC_VIOLENCE_TEXT_MODEL]: undefined; 64 62 [SignalType.OPEN_AI_HATE_TEXT_MODEL]: undefined; 65 63 [SignalType.OPEN_AI_HATE_THREATENING_TEXT_MODEL]: undefined;
-2
server/services/signalsService/types/SignalType.ts
··· 38 38 ]); 39 39 40 40 export const BuiltInThirdPartySignalType = makeEnumLike([ 41 - 'BENIGN_MODEL', 42 41 'GOOGLE_CONTENT_SAFETY_API_IMAGE', 43 42 'OPEN_AI_GRAPHIC_VIOLENCE_TEXT_MODEL', 44 43 'OPEN_AI_HATE_TEXT_MODEL', ··· 117 116 case 'TEXT_SIMILARITY_SCORE': 118 117 case 'USER_SCORE': 119 118 case 'USER_STRIKE_VALUE': 120 - case 'BENIGN_MODEL': 121 119 return null; 122 120 default: 123 121 // Plugin signal types (e.g. RANDOM_SIGNAL_SELECTION): no built-in integration