1*d5c09012SAndroid Build Coastguard Worker// Copyright 2023 Google LLC 2*d5c09012SAndroid Build Coastguard Worker// 3*d5c09012SAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License"); 4*d5c09012SAndroid Build Coastguard Worker// you may not use this file except in compliance with the License. 5*d5c09012SAndroid Build Coastguard Worker// You may obtain a copy of the License at 6*d5c09012SAndroid Build Coastguard Worker// 7*d5c09012SAndroid Build Coastguard Worker// http://www.apache.org/licenses/LICENSE-2.0 8*d5c09012SAndroid Build Coastguard Worker// 9*d5c09012SAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software 10*d5c09012SAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS, 11*d5c09012SAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*d5c09012SAndroid Build Coastguard Worker// See the License for the specific language governing permissions and 13*d5c09012SAndroid Build Coastguard Worker// limitations under the License. 14*d5c09012SAndroid Build Coastguard Worker 15*d5c09012SAndroid Build Coastguard Workersyntax = "proto3"; 16*d5c09012SAndroid Build Coastguard Worker 17*d5c09012SAndroid Build Coastguard Workerpackage google.ai.generativelanguage.v1beta; 18*d5c09012SAndroid Build Coastguard Worker 19*d5c09012SAndroid Build Coastguard Workerimport "google/api/field_behavior.proto"; 20*d5c09012SAndroid Build Coastguard Worker 21*d5c09012SAndroid Build Coastguard Workeroption go_package = "cloud.google.com/go/ai/generativelanguage/apiv1beta/generativelanguagepb;generativelanguagepb"; 22*d5c09012SAndroid Build Coastguard Workeroption java_multiple_files = true; 23*d5c09012SAndroid Build Coastguard Workeroption java_outer_classname = "SafetyProto"; 24*d5c09012SAndroid Build Coastguard Workeroption java_package = "com.google.ai.generativelanguage.v1beta"; 25*d5c09012SAndroid Build Coastguard Worker 26*d5c09012SAndroid Build Coastguard Worker// The category of a rating. 27*d5c09012SAndroid Build Coastguard Worker// 28*d5c09012SAndroid Build Coastguard Worker// These categories cover various kinds of harms that developers 29*d5c09012SAndroid Build Coastguard Worker// may wish to adjust. 30*d5c09012SAndroid Build Coastguard Workerenum HarmCategory { 31*d5c09012SAndroid Build Coastguard Worker // Category is unspecified. 32*d5c09012SAndroid Build Coastguard Worker HARM_CATEGORY_UNSPECIFIED = 0; 33*d5c09012SAndroid Build Coastguard Worker 34*d5c09012SAndroid Build Coastguard Worker // Negative or harmful comments targeting identity and/or protected attribute. 35*d5c09012SAndroid Build Coastguard Worker HARM_CATEGORY_DEROGATORY = 1; 36*d5c09012SAndroid Build Coastguard Worker 37*d5c09012SAndroid Build Coastguard Worker // Content that is rude, disrespectful, or profane. 38*d5c09012SAndroid Build Coastguard Worker HARM_CATEGORY_TOXICITY = 2; 39*d5c09012SAndroid Build Coastguard Worker 40*d5c09012SAndroid Build Coastguard Worker // Describes scenarios depicting violence against an individual or group, or 41*d5c09012SAndroid Build Coastguard Worker // general descriptions of gore. 42*d5c09012SAndroid Build Coastguard Worker HARM_CATEGORY_VIOLENCE = 3; 43*d5c09012SAndroid Build Coastguard Worker 44*d5c09012SAndroid Build Coastguard Worker // Contains references to sexual acts or other lewd content. 45*d5c09012SAndroid Build Coastguard Worker HARM_CATEGORY_SEXUAL = 4; 46*d5c09012SAndroid Build Coastguard Worker 47*d5c09012SAndroid Build Coastguard Worker // Promotes unchecked medical advice. 48*d5c09012SAndroid Build Coastguard Worker HARM_CATEGORY_MEDICAL = 5; 49*d5c09012SAndroid Build Coastguard Worker 50*d5c09012SAndroid Build Coastguard Worker // Dangerous content that promotes, facilitates, or encourages harmful acts. 51*d5c09012SAndroid Build Coastguard Worker HARM_CATEGORY_DANGEROUS = 6; 52*d5c09012SAndroid Build Coastguard Worker 53*d5c09012SAndroid Build Coastguard Worker // Harasment content. 54*d5c09012SAndroid Build Coastguard Worker HARM_CATEGORY_HARASSMENT = 7; 55*d5c09012SAndroid Build Coastguard Worker 56*d5c09012SAndroid Build Coastguard Worker // Hate speech and content. 57*d5c09012SAndroid Build Coastguard Worker HARM_CATEGORY_HATE_SPEECH = 8; 58*d5c09012SAndroid Build Coastguard Worker 59*d5c09012SAndroid Build Coastguard Worker // Sexually explicit content. 60*d5c09012SAndroid Build Coastguard Worker HARM_CATEGORY_SEXUALLY_EXPLICIT = 9; 61*d5c09012SAndroid Build Coastguard Worker 62*d5c09012SAndroid Build Coastguard Worker // Dangerous content. 63*d5c09012SAndroid Build Coastguard Worker HARM_CATEGORY_DANGEROUS_CONTENT = 10; 64*d5c09012SAndroid Build Coastguard Worker} 65*d5c09012SAndroid Build Coastguard Worker 66*d5c09012SAndroid Build Coastguard Worker// Content filtering metadata associated with processing a single request. 67*d5c09012SAndroid Build Coastguard Worker// 68*d5c09012SAndroid Build Coastguard Worker// ContentFilter contains a reason and an optional supporting string. The reason 69*d5c09012SAndroid Build Coastguard Worker// may be unspecified. 70*d5c09012SAndroid Build Coastguard Workermessage ContentFilter { 71*d5c09012SAndroid Build Coastguard Worker // A list of reasons why content may have been blocked. 72*d5c09012SAndroid Build Coastguard Worker enum BlockedReason { 73*d5c09012SAndroid Build Coastguard Worker // A blocked reason was not specified. 74*d5c09012SAndroid Build Coastguard Worker BLOCKED_REASON_UNSPECIFIED = 0; 75*d5c09012SAndroid Build Coastguard Worker 76*d5c09012SAndroid Build Coastguard Worker // Content was blocked by safety settings. 77*d5c09012SAndroid Build Coastguard Worker SAFETY = 1; 78*d5c09012SAndroid Build Coastguard Worker 79*d5c09012SAndroid Build Coastguard Worker // Content was blocked, but the reason is uncategorized. 80*d5c09012SAndroid Build Coastguard Worker OTHER = 2; 81*d5c09012SAndroid Build Coastguard Worker } 82*d5c09012SAndroid Build Coastguard Worker 83*d5c09012SAndroid Build Coastguard Worker // The reason content was blocked during request processing. 84*d5c09012SAndroid Build Coastguard Worker BlockedReason reason = 1; 85*d5c09012SAndroid Build Coastguard Worker 86*d5c09012SAndroid Build Coastguard Worker // A string that describes the filtering behavior in more detail. 87*d5c09012SAndroid Build Coastguard Worker optional string message = 2; 88*d5c09012SAndroid Build Coastguard Worker} 89*d5c09012SAndroid Build Coastguard Worker 90*d5c09012SAndroid Build Coastguard Worker// Safety feedback for an entire request. 91*d5c09012SAndroid Build Coastguard Worker// 92*d5c09012SAndroid Build Coastguard Worker// This field is populated if content in the input and/or response is blocked 93*d5c09012SAndroid Build Coastguard Worker// due to safety settings. SafetyFeedback may not exist for every HarmCategory. 94*d5c09012SAndroid Build Coastguard Worker// Each SafetyFeedback will return the safety settings used by the request as 95*d5c09012SAndroid Build Coastguard Worker// well as the lowest HarmProbability that should be allowed in order to return 96*d5c09012SAndroid Build Coastguard Worker// a result. 97*d5c09012SAndroid Build Coastguard Workermessage SafetyFeedback { 98*d5c09012SAndroid Build Coastguard Worker // Safety rating evaluated from content. 99*d5c09012SAndroid Build Coastguard Worker SafetyRating rating = 1; 100*d5c09012SAndroid Build Coastguard Worker 101*d5c09012SAndroid Build Coastguard Worker // Safety settings applied to the request. 102*d5c09012SAndroid Build Coastguard Worker SafetySetting setting = 2; 103*d5c09012SAndroid Build Coastguard Worker} 104*d5c09012SAndroid Build Coastguard Worker 105*d5c09012SAndroid Build Coastguard Worker// Safety rating for a piece of content. 106*d5c09012SAndroid Build Coastguard Worker// 107*d5c09012SAndroid Build Coastguard Worker// The safety rating contains the category of harm and the 108*d5c09012SAndroid Build Coastguard Worker// harm probability level in that category for a piece of content. 109*d5c09012SAndroid Build Coastguard Worker// Content is classified for safety across a number of 110*d5c09012SAndroid Build Coastguard Worker// harm categories and the probability of the harm classification is included 111*d5c09012SAndroid Build Coastguard Worker// here. 112*d5c09012SAndroid Build Coastguard Workermessage SafetyRating { 113*d5c09012SAndroid Build Coastguard Worker // The probability that a piece of content is harmful. 114*d5c09012SAndroid Build Coastguard Worker // 115*d5c09012SAndroid Build Coastguard Worker // The classification system gives the probability of the content being 116*d5c09012SAndroid Build Coastguard Worker // unsafe. This does not indicate the severity of harm for a piece of content. 117*d5c09012SAndroid Build Coastguard Worker enum HarmProbability { 118*d5c09012SAndroid Build Coastguard Worker // Probability is unspecified. 119*d5c09012SAndroid Build Coastguard Worker HARM_PROBABILITY_UNSPECIFIED = 0; 120*d5c09012SAndroid Build Coastguard Worker 121*d5c09012SAndroid Build Coastguard Worker // Content has a negligible chance of being unsafe. 122*d5c09012SAndroid Build Coastguard Worker NEGLIGIBLE = 1; 123*d5c09012SAndroid Build Coastguard Worker 124*d5c09012SAndroid Build Coastguard Worker // Content has a low chance of being unsafe. 125*d5c09012SAndroid Build Coastguard Worker LOW = 2; 126*d5c09012SAndroid Build Coastguard Worker 127*d5c09012SAndroid Build Coastguard Worker // Content has a medium chance of being unsafe. 128*d5c09012SAndroid Build Coastguard Worker MEDIUM = 3; 129*d5c09012SAndroid Build Coastguard Worker 130*d5c09012SAndroid Build Coastguard Worker // Content has a high chance of being unsafe. 131*d5c09012SAndroid Build Coastguard Worker HIGH = 4; 132*d5c09012SAndroid Build Coastguard Worker } 133*d5c09012SAndroid Build Coastguard Worker 134*d5c09012SAndroid Build Coastguard Worker // Required. The category for this rating. 135*d5c09012SAndroid Build Coastguard Worker HarmCategory category = 3 [(google.api.field_behavior) = REQUIRED]; 136*d5c09012SAndroid Build Coastguard Worker 137*d5c09012SAndroid Build Coastguard Worker // Required. The probability of harm for this content. 138*d5c09012SAndroid Build Coastguard Worker HarmProbability probability = 4 [(google.api.field_behavior) = REQUIRED]; 139*d5c09012SAndroid Build Coastguard Worker 140*d5c09012SAndroid Build Coastguard Worker // Was this content blocked because of this rating? 141*d5c09012SAndroid Build Coastguard Worker bool blocked = 5; 142*d5c09012SAndroid Build Coastguard Worker} 143*d5c09012SAndroid Build Coastguard Worker 144*d5c09012SAndroid Build Coastguard Worker// Safety setting, affecting the safety-blocking behavior. 145*d5c09012SAndroid Build Coastguard Worker// 146*d5c09012SAndroid Build Coastguard Worker// Passing a safety setting for a category changes the allowed proability that 147*d5c09012SAndroid Build Coastguard Worker// content is blocked. 148*d5c09012SAndroid Build Coastguard Workermessage SafetySetting { 149*d5c09012SAndroid Build Coastguard Worker // Block at and beyond a specified harm probability. 150*d5c09012SAndroid Build Coastguard Worker enum HarmBlockThreshold { 151*d5c09012SAndroid Build Coastguard Worker // Threshold is unspecified. 152*d5c09012SAndroid Build Coastguard Worker HARM_BLOCK_THRESHOLD_UNSPECIFIED = 0; 153*d5c09012SAndroid Build Coastguard Worker 154*d5c09012SAndroid Build Coastguard Worker // Content with NEGLIGIBLE will be allowed. 155*d5c09012SAndroid Build Coastguard Worker BLOCK_LOW_AND_ABOVE = 1; 156*d5c09012SAndroid Build Coastguard Worker 157*d5c09012SAndroid Build Coastguard Worker // Content with NEGLIGIBLE and LOW will be allowed. 158*d5c09012SAndroid Build Coastguard Worker BLOCK_MEDIUM_AND_ABOVE = 2; 159*d5c09012SAndroid Build Coastguard Worker 160*d5c09012SAndroid Build Coastguard Worker // Content with NEGLIGIBLE, LOW, and MEDIUM will be allowed. 161*d5c09012SAndroid Build Coastguard Worker BLOCK_ONLY_HIGH = 3; 162*d5c09012SAndroid Build Coastguard Worker 163*d5c09012SAndroid Build Coastguard Worker // All content will be allowed. 164*d5c09012SAndroid Build Coastguard Worker BLOCK_NONE = 4; 165*d5c09012SAndroid Build Coastguard Worker } 166*d5c09012SAndroid Build Coastguard Worker 167*d5c09012SAndroid Build Coastguard Worker // Required. The category for this setting. 168*d5c09012SAndroid Build Coastguard Worker HarmCategory category = 3 [(google.api.field_behavior) = REQUIRED]; 169*d5c09012SAndroid Build Coastguard Worker 170*d5c09012SAndroid Build Coastguard Worker // Required. Controls the probability threshold at which harm is blocked. 171*d5c09012SAndroid Build Coastguard Worker HarmBlockThreshold threshold = 4 [(google.api.field_behavior) = REQUIRED]; 172*d5c09012SAndroid Build Coastguard Worker} 173