xref: /aosp_15_r20/external/googleapis/google/ai/generativelanguage/v1beta/safety.proto (revision d5c09012810ac0c9f33fe448fb6da8260d444cc9)
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