2024-07-11 05:41:10 -07:00
import type { HarmBlockThreshold , HarmCategory } from '@google/generative-ai' ;
import type { INodeProperties } from 'n8n-workflow' ;
2024-12-16 04:46:19 -08:00
2024-07-11 05:41:10 -07:00
import { harmCategories , harmThresholds } from './safety-options' ;
export const additionalOptions : INodeProperties = {
displayName : 'Options' ,
name : 'options' ,
placeholder : 'Add Option' ,
description : 'Additional options to add' ,
type : 'collection' ,
default : { } ,
options : [
{
displayName : 'Maximum Number of Tokens' ,
name : 'maxOutputTokens' ,
default : 2048 ,
description : 'The maximum number of tokens to generate in the completion' ,
type : 'number' ,
} ,
{
displayName : 'Sampling Temperature' ,
name : 'temperature' ,
default : 0.4 ,
typeOptions : { maxValue : 1 , minValue : 0 , numberPrecision : 1 } ,
description :
'Controls randomness: Lowering results in less random completions. As the temperature approaches zero, the model will become deterministic and repetitive.' ,
type : 'number' ,
} ,
{
displayName : 'Top K' ,
name : 'topK' ,
default : 32 ,
typeOptions : { maxValue : 40 , minValue : - 1 , numberPrecision : 1 } ,
description :
'Used to remove "long tail" low probability responses. Defaults to -1, which disables it.' ,
type : 'number' ,
} ,
{
displayName : 'Top P' ,
name : 'topP' ,
default : 1 ,
typeOptions : { maxValue : 1 , minValue : 0 , numberPrecision : 1 } ,
description :
'Controls diversity via nucleus sampling: 0.5 means half of all likelihood-weighted options are considered. We generally recommend altering this or temperature but not both.' ,
type : 'number' ,
} ,
// Safety Settings
{
displayName : 'Safety Settings' ,
name : 'safetySettings' ,
type : 'fixedCollection' ,
typeOptions : { multipleValues : true } ,
default : {
values : {
category : harmCategories [ 0 ] . name as HarmCategory ,
threshold : harmThresholds [ 0 ] . name as HarmBlockThreshold ,
} ,
} ,
placeholder : 'Add Option' ,
options : [
{
name : 'values' ,
displayName : 'Values' ,
values : [
{
displayName : 'Safety Category' ,
name : 'category' ,
type : 'options' ,
description : 'The category of harmful content to block' ,
default : 'HARM_CATEGORY_UNSPECIFIED' ,
options : harmCategories ,
} ,
{
displayName : 'Safety Threshold' ,
name : 'threshold' ,
type : 'options' ,
description : 'The threshold of harmful content to block' ,
default : 'HARM_BLOCK_THRESHOLD_UNSPECIFIED' ,
options : harmThresholds ,
} ,
] ,
} ,
] ,
} ,
] ,
} ;