firestore-palm-gen-text/extension.yaml (407 lines of code) (raw):
name: firestore-palm-gen-text
version: 0.1.10
specVersion: v1beta
displayName: Language Tasks with PaLM API
description: >-
Performs AI/ML tasks on text, customizable with prompt engineering, using PaLM
API and Firestore.
icon: icon.png
tags:
[
ai,
palm,
generative-ai,
text-ai,
language-ai,
large-language-models,
llm,
nlp,
google-ai,
]
license: Apache-2.0 # https://spdx.org/licenses/
sourceUrl: https://github.com/GoogleCloudPlatform/firebase-extensions/tree/main/firestore-palm-gen-text
releaseNotesUrl: https://github.com/GoogleCloudPlatform/firebase-extensions/tree/main/firestore-palm-gen-text/CHANGELOG.md
author:
authorName: Google Cloud
url: https://cloud.google.com
contributors:
- authorName: Invertase
email: oss@invertase.io
url: https://github.com/invertase
billingRequired: true
apis:
- apiName: aiplatform.googleapis.com
reason: For access to the PaLM API if this provider is chosen.
roles:
- role: datastore.user
reason:
Allows this extension to access Cloud Firestore to read and process added
messages.
- role: aiplatform.user
reason:
Allows this extension to access the PaLM API via Vertex AI if this
provider is chosen.
resources:
- name: generateText
type: firebaseextensions.v1beta.function
description: >-
Listens to Firestore data writes to generate conversations.
properties:
location: ${LOCATION}
eventTrigger:
eventType: providers/cloud.firestore/eventTypes/document.write
resource: projects/${PROJECT_ID}/databases/(default)/documents/${COLLECTION_NAME}/{summaryId}
runtime: 'nodejs18'
params:
- param: PALM_API_PROVIDER
label: Palm API Provider
description: >-
There are two services which provide access to the PaLM API. Which would
you like to use? If Vertex AI is selected, the service will be
automatically enabled. If Generative Language is selected, you can provide
an API key obtained through MakerSuite or your GCP console, or use
Application Default Credentials if the Generative Language AI is enabled
in your google cloud project.
type: select
options:
- label: Vertex AI
value: vertex
- label: Generative Language AI for Developers
value: generative
required: true
default: vertex
immutable: false
- param: API_KEY
label: API Key (Generative Language AI for Developers Provider ONLY)
description: >-
If you selected Generative AI for Developers as your PaLM API provider,
you can optionally choose to provide an API key. If you do not provide an
API key, the extension will use Application Default Credentials, but will
need the service enabled in GCP.
type: secret
required: false
immutable: false
- param: COLLECTION_NAME
label: Collection Path
description: >-
Path to the Firestore collection where text will be generated.
type: string
validationRegex: '^[^/]+(/[^/]+/[^/]+)*$'
validationErrorMessage: Must be a valid Cloud Firestore Collection
default: generate
required: true
immutable: false
- param: PROMPT
label: Prompt
description: >-
Prompt. Use {{ handlebars }} for variable substitution from the created or
updated doc.
type: string
required: true
immutable: false
- param: VARIABLE_FIELDS
label: Variable fields
description: >-
A comma separated list of fields to substitute as variables in the prompt.
type: string
required: false
immutable: false
validationRegex: ^[a-zA-Z0-9_]+(,[a-zA-Z0-9_]+)*$
validationErrorMessage: >-
Field names may only use upper and lowercase letters from A to Z,
underscores, or numbers, and may only be separated by commas. Trailing
commas and empty variable names are not allowed.
- param: RESPONSE_FIELD
label: Response Field
description: >-
The field in the message document into which to put the response.This is
the name of the field in the Firestore document where you want the
extension to store the response from the PaLM API. There is a token limit
for the response field. This means responses may be truncated if they
exceed a certain length. The standard limit is approximately 4096
characters, but this can vary depending on language and context. For more
information, check [here](https://ai.google.dev/models/palm).
type: string
default: output
required: true
immutable: false
- param: LOCATION
label: Cloud Functions location
description: >-
Where do you want to deploy the functions created for this extension? 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: Warsaw (europe-central2)
value: europe-central2
- 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
required: true
immutable: true
- param: MODEL
label: Language model
description: >-
Which language model do you want to use?
type: select
options:
- label: text-bison
value: text-bison
required: true
immutable: false
- param: TEMPERATURE
label: Temperature
description: >-
Controls the randomness of the output. Values can range over [0,1],
inclusive. A value closer to 1 will produce responses that are more
varied, while a value closer to 0 will typically result in less surprising
responses from the model.
type: string
validationRegex: ^(?:0*(?:\.\d+)?|1(\.0*)?)$
validationErrorMessage:
Please specify a decimal representation of a number between 0 and 1.
required: false
immutable: false
- param: TOP_P
label: Nucleus sampling probability
description: >-
If specified, nucleus sampling will be used as the decoding strategy.
Nucleus sampling considers the smallest set of tokens whose probability
sum is at least a fixed value. Enter a value between 0 and 1.
type: string
validationRegex: ^(?:0*(?:\.\d+)?|1(\.0*)?)$
validationErrorMessage:
Please specify a decimal representation of a number between 0 and 1.
required: false
immutable: false
- param: TOP_K
label: Sampling strategy parameter
description: >-
If specified, top-k sampling will be used as the decoding strategy. Top-k
sampling considers the set of topK most probable tokens.
type: string
validationRegex: ^[1-9][0-9]*
validationErrorMessage: Please specify a positive integer.
required: false
immutable: false
- param: CANDIDATE_COUNT
label: Candidate count
description: >-
The default value is one. When set to an integer higher than one,
additional candidate responses, up to the specified number, will be stored
in Firestore under the 'candidates' field. Note this is only available as
a feature if you selected the Generative Language API for Developers as
your Palm API provider.
type: string
validationRegex: ^[1-9][0-9]*
validationErrorMessage: Please specify a positive integer.
default: 1
required: false
immutable: false
- param: CANDIDATES_FIELD
label: Candidates field
description: >-
The field in the message document into which to put the other candidate
responses if the candidate count parameter is greater than one. Note this
is only available as a feature if you selected the Generative Language
API for Developers as your Palm API provider.
type: string
default: candidates
required: false
immutable: false
- param: MAX_OUTPUT_TOKENS
label: Maximum number of tokens
description: >-
If you have selected the Vertex AI service as your PaLM API provider, this
parameter will be used to set the max_tokens parameter in the Vertex API
request. It should be an integer in the range [1,1024]. The default value
for the extension is 1024.
type: string
validationRegex: ^(102[0-4]|10[01][0-9]|100[0-9]|[1-9][0-9]{0,2})$
validationErrorMessage: Please specify an integer in the range [1,1024]
required: false
default: 1024
immutable: false
- param: DEROGATORY_THRESHOLD
label: Derogatory Content Threshold
description: >-
Threshold for derogatory content. Specify what probability level of
derogatory content is blocked by the PaLM provider. This threshold is
applicable only to the Generative Language PaLM API.
type: select
options:
- label: Default
value: HARM_BLOCK_THRESHOLD_UNSPECIFIED
- label: Block low and above
value: BLOCK_LOW_AND_ABOVE
- label: Block medium and above
value: BLOCK_MEDIUM_AND_ABOVE
- label: Block only high
value: BLOCK_ONLY_HIGH
- label: Block none
value: BLOCK_NONE
required: false
default: HARM_BLOCK_THRESHOLD_UNSPECIFIED
immutable: false
- param: TOXICITY_THRESHOLD
label: Toxicity Threshold
description: >-
Threshold for toxic content. Specify what probability level of toxic
content is blocked by the PaLM provider. This threshold is applicable only
to the Generative Language PaLM API.
type: select
options:
- label: Default
value: HARM_BLOCK_THRESHOLD_UNSPECIFIED
- label: Block low and above
value: BLOCK_LOW_AND_ABOVE
- label: Block medium and above
value: BLOCK_MEDIUM_AND_ABOVE
- label: Block only high
value: BLOCK_ONLY_HIGH
- label: Block none
value: BLOCK_NONE
required: false
default: HARM_BLOCK_THRESHOLD_UNSPECIFIED
immutable: false
- param: SEXUAL_THRESHOLD
label: Sexual Content Threshold
description: >-
Threshold for sexual content. Specify what probability level of sexual
content is blocked by the PaLM provider. This threshold is currently
applicable only to the Generative Language PaLM API.
type: select
options:
- label: Default
value: HARM_BLOCK_THRESHOLD_UNSPECIFIED
- label: Block low and above
value: BLOCK_LOW_AND_ABOVE
- label: Block medium and above
value: BLOCK_MEDIUM_AND_ABOVE
- label: Block only high
value: BLOCK_ONLY_HIGH
- label: Block none
value: BLOCK_NONE
required: false
default: HARM_BLOCK_THRESHOLD_UNSPECIFIED
immutable: false
- param: VIOLENCE_THRESHOLD
label: Violent Content Threshold
description: >-
Threshold for violent content. Specify what probability of violent content
is blocked by the PaLM provider. This threshold is currently applicable
only to the Generative Language PaLM API.
type: select
options:
- label: Default
value: HARM_BLOCK_THRESHOLD_UNSPECIFIED
- label: Block low and above
value: BLOCK_LOW_AND_ABOVE
- label: Block medium and above
value: BLOCK_MEDIUM_AND_ABOVE
- label: Block only high
value: BLOCK_ONLY_HIGH
- label: Block none
value: BLOCK_NONE
required: false
default: HARM_BLOCK_THRESHOLD_UNSPECIFIED
immutable: false
- param: MEDICAL_THRESHOLD
label: Medical Content Threshold
description: >-
Threshold for medical content. Specify what probability level of medical
content is blocked by the PaLM provider. This threshold is applicable only
to the Generative Language PaLM API.
type: select
options:
- label: Default
value: HARM_BLOCK_THRESHOLD_UNSPECIFIED
- label: Block low and above
value: BLOCK_LOW_AND_ABOVE
- label: Block medium and above
value: BLOCK_MEDIUM_AND_ABOVE
- label: Block only high
value: BLOCK_ONLY_HIGH
- label: Block none
value: BLOCK_NONE
required: false
default: HARM_BLOCK_THRESHOLD_UNSPECIFIED
immutable: false
- param: DANGEROUS_THRESHOLD
label: Dangerous Content Threshold
description: >-
Threshold for dangerous content. Specify what probability level of
dangerous content is blocked by the PaLM provider. This threshold is
applicable only to the Generative Language PaLM API.
type: select
options:
- label: Default
value: HARM_BLOCK_THRESHOLD_UNSPECIFIED
- label: Block low and above
value: BLOCK_LOW_AND_ABOVE
- label: Block medium and above
value: BLOCK_MEDIUM_AND_ABOVE
- label: Block only high
value: BLOCK_ONLY_HIGH
- label: Block none
value: BLOCK_NONE
required: false
default: HARM_BLOCK_THRESHOLD_UNSPECIFIED
immutable: false
- param: UNSPECIFIED_THRESHOLD
label: Unspecified Harm Threshold
description: >-
Threshold for non-specific harmful content. Specify what probability level
of non-specific harmful content is blocked by the PaLM provider. This
threshold is applicable only to the Generative Language PaLM API.
type: select
options:
- label: Default
value: HARM_BLOCK_THRESHOLD_UNSPECIFIED
- label: Block low and above
value: BLOCK_LOW_AND_ABOVE
- label: Block medium and above
value: BLOCK_MEDIUM_AND_ABOVE
- label: Block only high
value: BLOCK_ONLY_HIGH
- label: Block none
value: BLOCK_NONE
required: false
default: HARM_BLOCK_THRESHOLD_UNSPECIFIED
immutable: false