modify google gemini based on request changes

This commit is contained in:
chungyau97 2024-01-16 16:19:21 +08:00
parent 4d15e886fe
commit f3a244a93c
2 changed files with 11 additions and 57 deletions

View File

@ -78,10 +78,11 @@ class GoogleGenerativeAI_ChatModels implements INode {
additionalParams: true additionalParams: true
}, },
{ {
label: 'topK', label: 'Top Next Highest Probability Tokens',
name: 'topK', name: 'topK',
type: 'number', type: 'number',
step: 0.1, description: `Decode using top-k sampling: consider the set of top_k most probable tokens. Must be positive`,
step: 1,
optional: true, optional: true,
additionalParams: true additionalParams: true
}, },
@ -90,7 +91,7 @@ class GoogleGenerativeAI_ChatModels implements INode {
name: 'harmCategory', name: 'harmCategory',
type: 'multiOptions', type: 'multiOptions',
description: description:
'Refer to <a target="_blank" href="https://cloud.google.com/vertex-ai/docs/generative-ai/multimodal/configure-safety-attributes#gemini-TASK-samples-go">official guide</a> on how to use Harm Category', 'Refer to <a target="_blank" href="https://cloud.google.com/vertex-ai/docs/generative-ai/multimodal/configure-safety-attributes#safety_attribute_definitions">official guide</a> on how to use Harm Category',
options: [ options: [
{ {
label: 'Dangerous', label: 'Dangerous',
@ -117,7 +118,7 @@ class GoogleGenerativeAI_ChatModels implements INode {
name: 'harmBlockThreshold', name: 'harmBlockThreshold',
type: 'multiOptions', type: 'multiOptions',
description: description:
'Refer to <a target="_blank" href="https://cloud.google.com/vertex-ai/docs/generative-ai/multimodal/configure-safety-attributes#gemini-TASK-samples-go">official guide</a> on how to use Harm Block Threshold', 'Refer to <a target="_blank" href="https://cloud.google.com/vertex-ai/docs/generative-ai/multimodal/configure-safety-attributes#safety_setting_thresholds">official guide</a> on how to use Harm Block Threshold',
options: [ options: [
{ {
label: 'Low and Above', label: 'Low and Above',
@ -169,7 +170,7 @@ class GoogleGenerativeAI_ChatModels implements INode {
const model = new ChatGoogleGenerativeAI(obj) const model = new ChatGoogleGenerativeAI(obj)
if (topP) model.topP = parseFloat(topP) if (topP) model.topP = parseFloat(topP)
if (topK) model.topP = parseFloat(topK) if (topK) model.topK = parseFloat(topK)
if (cache) model.cache = cache if (cache) model.cache = cache
if (temperature) model.temperature = parseFloat(temperature) if (temperature) model.temperature = parseFloat(temperature)
@ -178,10 +179,10 @@ class GoogleGenerativeAI_ChatModels implements INode {
let harmBlockThresholds: string[] = convertMultiOptionsToStringArray(harmBlockThreshold) let harmBlockThresholds: string[] = convertMultiOptionsToStringArray(harmBlockThreshold)
if (harmCategories.length != harmBlockThresholds.length) if (harmCategories.length != harmBlockThresholds.length)
throw new Error(`Harm Category & Harm Block Threshold are not the same length`) throw new Error(`Harm Category & Harm Block Threshold are not the same length`)
const safetySettings: SafetySetting[] = harmCategories.map((value, index) => { const safetySettings: SafetySetting[] = harmCategories.map((harmCategory, index) => {
return { return {
category: categoryInput(value), category: harmCategory as HarmCategory,
threshold: thresholdInput(harmBlockThresholds[index]) threshold: harmBlockThresholds[index] as HarmBlockThreshold
} }
}) })
if (safetySettings.length > 0) model.safetySettings = safetySettings if (safetySettings.length > 0) model.safetySettings = safetySettings
@ -190,46 +191,4 @@ class GoogleGenerativeAI_ChatModels implements INode {
} }
} }
const categoryInput = (categoryInput: string): HarmCategory => {
let categoryOutput: HarmCategory
switch (categoryInput) {
case HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT:
categoryOutput = HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT
break
case HarmCategory.HARM_CATEGORY_HATE_SPEECH:
categoryOutput = HarmCategory.HARM_CATEGORY_HATE_SPEECH
break
case HarmCategory.HARM_CATEGORY_HARASSMENT:
categoryOutput = HarmCategory.HARM_CATEGORY_HARASSMENT
break
case HarmCategory.HARM_CATEGORY_SEXUALLY_EXPLICIT:
categoryOutput = HarmCategory.HARM_CATEGORY_SEXUALLY_EXPLICIT
break
default:
categoryOutput = HarmCategory.HARM_CATEGORY_UNSPECIFIED
}
return categoryOutput
}
const thresholdInput = (thresholdInput: string): HarmBlockThreshold => {
let thresholdOutput: HarmBlockThreshold
switch (thresholdInput) {
case HarmBlockThreshold.BLOCK_LOW_AND_ABOVE:
thresholdOutput = HarmBlockThreshold.BLOCK_LOW_AND_ABOVE
break
case HarmBlockThreshold.BLOCK_MEDIUM_AND_ABOVE:
thresholdOutput = HarmBlockThreshold.BLOCK_MEDIUM_AND_ABOVE
break
case HarmBlockThreshold.BLOCK_NONE:
thresholdOutput = HarmBlockThreshold.BLOCK_NONE
break
case HarmBlockThreshold.BLOCK_ONLY_HIGH:
thresholdOutput = HarmBlockThreshold.BLOCK_ONLY_HIGH
break
default:
thresholdOutput = HarmBlockThreshold.HARM_BLOCK_THRESHOLD_UNSPECIFIED
}
return thresholdOutput
}
module.exports = { nodeClass: GoogleGenerativeAI_ChatModels } module.exports = { nodeClass: GoogleGenerativeAI_ChatModels }

View File

@ -681,12 +681,7 @@ export const convertBaseMessagetoIMessage = (messages: BaseMessage[]): IMessage[
*/ */
export const convertMultiOptionsToStringArray = (inputString: string): string[] => { export const convertMultiOptionsToStringArray = (inputString: string): string[] => {
let ArrayString: string[] = [] let ArrayString: string[] = []
if (inputString) { if (inputString) ArrayString = JSON.parse(inputString)
try {
ArrayString = JSON.parse(inputString)
} catch (e) {
ArrayString = []
}
}
return ArrayString return ArrayString
} }