forked from conversationai/firestore-perspective-toxicity
-
Notifications
You must be signed in to change notification settings - Fork 0
/
extension.yaml
167 lines (154 loc) · 5.99 KB
/
extension.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
name: firestore-perspective-toxicity
version: 0.1.2
specVersion: v1beta
displayName: Analyze Toxicity with Perspective API
description: Analyze the perceived impact a comment might have on a conversation using Perspective API.
license: Apache-2.0
author:
authorName: Jigsaw
url: https://jigsaw.google.com
billingRequired: true
roles:
- role: datastore.user
reason: Allows the extension to write comment analysis results to Cloud Firestore.
resources:
- name: fsAnalyzeCommentsOnCreate
type: firebaseextensions.v1beta.function
description:
Listens for new comments in your specified Cloud Firestore collection, runs toxicity analysis,
then writes the results back to the same document.
properties:
location: ${param:LOCATION}
runtime: nodejs10
eventTrigger:
eventType: providers/cloud.firestore/eventTypes/document.create
resource: projects/${param:PROJECT_ID}/databases/(default)/documents/${param:COLLECTION_PATH}/{messageId}
- name: fsAnalyzeCommentsOnUpdate
type: firebaseextensions.v1beta.function
description:
Listens for updates to comments in your specified Cloud Firestore collection, runs toxicity analysis,
then writes the results back to the same document.
properties:
location: ${param:LOCATION}
runtime: nodejs10
eventTrigger:
eventType: providers/cloud.firestore/eventTypes/document.update
resource: projects/${param:PROJECT_ID}/databases/(default)/documents/${param:COLLECTION_PATH}/{messageId}
params:
- param: LOCATION
label: Cloud Functions location
description: >-
Where do you want to deploy the functions created for this extension?
You usually want a location close to your database. For help selecting a
location, refer to the [location selection
guide](https://firebase.google.com/docs/functions/locations).
type: select
options:
- label: Iowa (us-central1)
value: us-central1
- label: South Carolina (us-east1)
value: us-east1
- label: Northern Virginia (us-east4)
value: us-east4
- label: Los Angeles (us-west2)
value: us-west2
- label: Salt Lake City (us-west3)
value: us-west3
- label: Las Vegas (us-west4)
value: us-west4
- label: Belgium (europe-west1)
value: europe-west1
- label: London (europe-west2)
value: europe-west2
- label: Frankfurt (europe-west3)
value: europe-west3
- label: Zurich (europe-west6)
value: europe-west6
- label: Hong Kong (asia-east2)
value: asia-east2
- label: Tokyo (asia-northeast1)
value: asia-northeast1
- label: Osaka (asia-northeast2)
value: asia-northeast2
- label: Seoul (asia-northeast3)
value: asia-northeast3
- label: Mumbai (asia-south1)
value: asia-south1
- label: Jakarta (asia-southeast2)
value: asia-southeast2
- label: Montreal (northamerica-northeast1)
value: northamerica-northeast1
- label: Sao Paulo (southamerica-east1)
value: southamerica-east1
- label: Sydney (australia-southeast1)
value: australia-southeast1
default: us-central1
required: true
immutable: true
- param: PERSPECTIVE_API_KEY
label: Perspective API Key
description: >
What is the API key that will be used to call Perspective API?
required: true
- param: ATTRIBUTES
label: Attributes to receive scores for
description: >
The Perspective API predicts the perceived impact a comment may have on
a conversation by evaluating that comment across a range of emotional
concepts, called attributes. For help selecting which to receive scores
for, see the [list of available attributes](https://support.perspectiveapi.com/s/about-the-api-attributes-and-languages).
validationRegex: "^[A-Z,_]*[A-Z]$"
validationErrorMessage: Attributes must be in all-caps and comma-separated with no spaces
example: "TOXICITY,SEVERE_TOXICITY,INSULT"
default: "TOXICITY,SEVERE_TOXICITY,IDENTITY_ATTACK,INSULT,PROFANITY,THREAT"
required: true
- param: COLLECTION_PATH
label: Collection path
description: >
What is the path to the collection that contains the comments you want to analyze?
example: comments
validationRegex: "^[^/]+(/[^/]+/[^/]+)*$"
validationErrorMessage: Must be a valid Cloud Firestore Collection
default: comments
required: true
- param: INPUT_FIELD_NAME
label: Input field name
description: >
What is the name of the field that contains the comment you want to analyze?
example: text
default: text
required: true
- param: OUTPUT_FIELD_NAME
label: Output field name
description: >
What is the name of the field where you want to store the output attribute scores?
example: attribute_scores
default: attribute_scores
required: true
- param: DO_NOT_STORE
label: doNotStore flag value
description: >
Whether or not Perspective API is permitted to store the comment that
gets sent in the request (the contents of the input field). Stored
comments will be used to improve the API over time. NOTE\: This should be
set to true if data being submitted is private (i.e. not publicly
accessible) or contains content written by someone under 13 years old.
type: select
options:
- value: true
- value: false
default: false
required: true