mirror of
https://github.com/farcasclaudiu/Flowise.git
synced 2026-06-28 19:00:59 +03:00
Extending support for Caching to all LLM's.
This commit is contained in:
@@ -1,7 +1,8 @@
|
||||
import { ICommonObject, INode, INodeData, INodeParams } from '../../../src/Interface'
|
||||
import { getBaseClasses, getCredentialData, getCredentialParam } from '../../../src/utils'
|
||||
import { AzureOpenAIInput, OpenAI, OpenAIInput } from 'langchain/llms/openai'
|
||||
|
||||
import { BaseCache } from 'langchain/schema'
|
||||
import { BaseLLMParams } from 'langchain/llms/base'
|
||||
class AzureOpenAI_LLMs implements INode {
|
||||
label: string
|
||||
name: string
|
||||
@@ -17,7 +18,7 @@ class AzureOpenAI_LLMs implements INode {
|
||||
constructor() {
|
||||
this.label = 'Azure OpenAI'
|
||||
this.name = 'azureOpenAI'
|
||||
this.version = 1.0
|
||||
this.version = 2.0
|
||||
this.type = 'AzureOpenAI'
|
||||
this.icon = 'Azure.svg'
|
||||
this.category = 'LLMs'
|
||||
@@ -30,6 +31,12 @@ class AzureOpenAI_LLMs implements INode {
|
||||
credentialNames: ['azureOpenAIApi']
|
||||
}
|
||||
this.inputs = [
|
||||
{
|
||||
label: 'Cache',
|
||||
name: 'llmCache',
|
||||
type: 'LLMCache',
|
||||
optional: true
|
||||
},
|
||||
{
|
||||
label: 'Model Name',
|
||||
name: 'modelName',
|
||||
@@ -163,7 +170,9 @@ class AzureOpenAI_LLMs implements INode {
|
||||
const azureOpenAIApiDeploymentName = getCredentialParam('azureOpenAIApiDeploymentName', credentialData, nodeData)
|
||||
const azureOpenAIApiVersion = getCredentialParam('azureOpenAIApiVersion', credentialData, nodeData)
|
||||
|
||||
const obj: Partial<AzureOpenAIInput> & Partial<OpenAIInput> = {
|
||||
const llmCache = nodeData.inputs?.llmCache as BaseCache
|
||||
|
||||
const obj: Partial<AzureOpenAIInput> & BaseLLMParams & Partial<OpenAIInput> = {
|
||||
temperature: parseFloat(temperature),
|
||||
modelName,
|
||||
azureOpenAIApiKey,
|
||||
@@ -179,6 +188,7 @@ class AzureOpenAI_LLMs implements INode {
|
||||
if (presencePenalty) obj.presencePenalty = parseFloat(presencePenalty)
|
||||
if (timeout) obj.timeout = parseInt(timeout, 10)
|
||||
if (bestOf) obj.bestOf = parseInt(bestOf, 10)
|
||||
if (llmCache) obj.cache = llmCache
|
||||
|
||||
const model = new OpenAI(obj)
|
||||
return model
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
import { INode, INodeData, INodeParams } from '../../../src/Interface'
|
||||
import { getBaseClasses } from '../../../src/utils'
|
||||
import { NIBittensorLLM, BittensorInput } from 'langchain/experimental/llms/bittensor'
|
||||
import { BaseCache } from 'langchain/schema'
|
||||
import { BaseLLMParams } from 'langchain/llms/base'
|
||||
|
||||
class Bittensor_LLMs implements INode {
|
||||
label: string
|
||||
@@ -16,13 +18,19 @@ class Bittensor_LLMs implements INode {
|
||||
constructor() {
|
||||
this.label = 'NIBittensorLLM'
|
||||
this.name = 'NIBittensorLLM'
|
||||
this.version = 1.0
|
||||
this.version = 2.0
|
||||
this.type = 'Bittensor'
|
||||
this.icon = 'logo.png'
|
||||
this.category = 'LLMs'
|
||||
this.description = 'Wrapper around Bittensor subnet 1 large language models'
|
||||
this.baseClasses = [this.type, ...getBaseClasses(NIBittensorLLM)]
|
||||
this.inputs = [
|
||||
{
|
||||
label: 'Cache',
|
||||
name: 'llmCache',
|
||||
type: 'LLMCache',
|
||||
optional: true
|
||||
},
|
||||
{
|
||||
label: 'System prompt',
|
||||
name: 'system_prompt',
|
||||
@@ -44,10 +52,13 @@ class Bittensor_LLMs implements INode {
|
||||
async init(nodeData: INodeData, _: string): Promise<any> {
|
||||
const system_prompt = nodeData.inputs?.system_prompt as string
|
||||
const topResponses = Number(nodeData.inputs?.topResponses as number)
|
||||
const obj: Partial<BittensorInput> = {
|
||||
const llmCache = nodeData.inputs?.llmCache as BaseCache
|
||||
|
||||
const obj: Partial<BittensorInput> & BaseLLMParams = {
|
||||
systemPrompt: system_prompt,
|
||||
topResponses: topResponses
|
||||
}
|
||||
if (llmCache) obj.cache = llmCache
|
||||
|
||||
const model = new NIBittensorLLM(obj)
|
||||
return model
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import { ICommonObject, INode, INodeData, INodeParams } from '../../../src/Interface'
|
||||
import { getBaseClasses, getCredentialData, getCredentialParam } from '../../../src/utils'
|
||||
import { Cohere, CohereInput } from './core'
|
||||
import { BaseCache } from 'langchain/schema'
|
||||
|
||||
class Cohere_LLMs implements INode {
|
||||
label: string
|
||||
@@ -17,7 +18,7 @@ class Cohere_LLMs implements INode {
|
||||
constructor() {
|
||||
this.label = 'Cohere'
|
||||
this.name = 'cohere'
|
||||
this.version = 1.0
|
||||
this.version = 2.0
|
||||
this.type = 'Cohere'
|
||||
this.icon = 'cohere.png'
|
||||
this.category = 'LLMs'
|
||||
@@ -30,6 +31,12 @@ class Cohere_LLMs implements INode {
|
||||
credentialNames: ['cohereApi']
|
||||
}
|
||||
this.inputs = [
|
||||
{
|
||||
label: 'Cache',
|
||||
name: 'llmCache',
|
||||
type: 'LLMCache',
|
||||
optional: true
|
||||
},
|
||||
{
|
||||
label: 'Model Name',
|
||||
name: 'modelName',
|
||||
@@ -85,7 +92,7 @@ class Cohere_LLMs implements INode {
|
||||
const temperature = nodeData.inputs?.temperature as string
|
||||
const modelName = nodeData.inputs?.modelName as string
|
||||
const maxTokens = nodeData.inputs?.maxTokens as string
|
||||
|
||||
const llmCache = nodeData.inputs?.llmCache as BaseCache
|
||||
const credentialData = await getCredentialData(nodeData.credential ?? '', options)
|
||||
const cohereApiKey = getCredentialParam('cohereApiKey', credentialData, nodeData)
|
||||
|
||||
@@ -96,7 +103,7 @@ class Cohere_LLMs implements INode {
|
||||
if (maxTokens) obj.maxTokens = parseInt(maxTokens, 10)
|
||||
if (modelName) obj.model = modelName
|
||||
if (temperature) obj.temperature = parseFloat(temperature)
|
||||
|
||||
if (llmCache) obj.cache = llmCache
|
||||
const model = new Cohere(obj)
|
||||
return model
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { ICommonObject, INode, INodeData, INodeParams } from '../../../src/Interface'
|
||||
import { getBaseClasses, getCredentialData, getCredentialParam } from '../../../src/utils'
|
||||
import { GooglePaLM, GooglePaLMTextInput } from 'langchain/llms/googlepalm'
|
||||
|
||||
import { BaseCache } from 'langchain/schema'
|
||||
class GooglePaLM_LLMs implements INode {
|
||||
label: string
|
||||
name: string
|
||||
@@ -17,7 +17,7 @@ class GooglePaLM_LLMs implements INode {
|
||||
constructor() {
|
||||
this.label = 'GooglePaLM'
|
||||
this.name = 'GooglePaLM'
|
||||
this.version = 1.0
|
||||
this.version = 2.0
|
||||
this.type = 'GooglePaLM'
|
||||
this.icon = 'Google_PaLM_Logo.svg'
|
||||
this.category = 'LLMs'
|
||||
@@ -30,6 +30,12 @@ class GooglePaLM_LLMs implements INode {
|
||||
credentialNames: ['googleMakerSuite']
|
||||
}
|
||||
this.inputs = [
|
||||
{
|
||||
label: 'Cache',
|
||||
name: 'llmCache',
|
||||
type: 'LLMCache',
|
||||
optional: true
|
||||
},
|
||||
{
|
||||
label: 'Model Name',
|
||||
name: 'modelName',
|
||||
@@ -126,6 +132,7 @@ class GooglePaLM_LLMs implements INode {
|
||||
const topP = nodeData.inputs?.topP as string
|
||||
const topK = nodeData.inputs?.topK as string
|
||||
const stopSequencesObj = nodeData.inputs?.stopSequencesObj
|
||||
const llmCache = nodeData.inputs?.llmCache as BaseCache
|
||||
|
||||
const credentialData = await getCredentialData(nodeData.credential ?? '', options)
|
||||
const googleMakerSuiteKey = getCredentialParam('googleMakerSuiteKey', credentialData, nodeData)
|
||||
@@ -139,6 +146,7 @@ class GooglePaLM_LLMs implements INode {
|
||||
if (maxOutputTokens) obj.maxOutputTokens = parseInt(maxOutputTokens, 10)
|
||||
if (topP) obj.topP = parseFloat(topP)
|
||||
if (topK) obj.topK = parseFloat(topK)
|
||||
if (llmCache) obj.cache = llmCache
|
||||
|
||||
let parsedStopSequences: any | undefined = undefined
|
||||
if (stopSequencesObj) {
|
||||
|
||||
@@ -2,6 +2,7 @@ import { ICommonObject, INode, INodeData, INodeParams } from '../../../src/Inter
|
||||
import { getBaseClasses, getCredentialData, getCredentialParam } from '../../../src/utils'
|
||||
import { GoogleVertexAI, GoogleVertexAITextInput } from 'langchain/llms/googlevertexai'
|
||||
import { GoogleAuthOptions } from 'google-auth-library'
|
||||
import { BaseCache } from 'langchain/schema'
|
||||
|
||||
class GoogleVertexAI_LLMs implements INode {
|
||||
label: string
|
||||
@@ -18,7 +19,7 @@ class GoogleVertexAI_LLMs implements INode {
|
||||
constructor() {
|
||||
this.label = 'GoogleVertexAI'
|
||||
this.name = 'googlevertexai'
|
||||
this.version = 1.0
|
||||
this.version = 2.0
|
||||
this.type = 'GoogleVertexAI'
|
||||
this.icon = 'vertexai.svg'
|
||||
this.category = 'LLMs'
|
||||
@@ -34,6 +35,12 @@ class GoogleVertexAI_LLMs implements INode {
|
||||
'Google Vertex AI credential. If you are using a GCP service like Cloud Run, or if you have installed default credentials on your local machine, you do not need to set this credential.'
|
||||
}
|
||||
this.inputs = [
|
||||
{
|
||||
label: 'Cache',
|
||||
name: 'llmCache',
|
||||
type: 'LLMCache',
|
||||
optional: true
|
||||
},
|
||||
{
|
||||
label: 'Model Name',
|
||||
name: 'modelName',
|
||||
@@ -120,6 +127,7 @@ class GoogleVertexAI_LLMs implements INode {
|
||||
const modelName = nodeData.inputs?.modelName as string
|
||||
const maxOutputTokens = nodeData.inputs?.maxOutputTokens as string
|
||||
const topP = nodeData.inputs?.topP as string
|
||||
const llmCache = nodeData.inputs?.llmCache as BaseCache
|
||||
|
||||
const obj: Partial<GoogleVertexAITextInput> = {
|
||||
temperature: parseFloat(temperature),
|
||||
@@ -129,6 +137,7 @@ class GoogleVertexAI_LLMs implements INode {
|
||||
|
||||
if (maxOutputTokens) obj.maxOutputTokens = parseInt(maxOutputTokens, 10)
|
||||
if (topP) obj.topP = parseFloat(topP)
|
||||
if (llmCache) obj.cache = llmCache
|
||||
|
||||
const model = new GoogleVertexAI(obj)
|
||||
return model
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import { ICommonObject, INode, INodeData, INodeParams } from '../../../src/Interface'
|
||||
import { getBaseClasses, getCredentialData, getCredentialParam } from '../../../src/utils'
|
||||
import { HFInput, HuggingFaceInference } from './core'
|
||||
import { BaseCache } from 'langchain/schema'
|
||||
|
||||
class HuggingFaceInference_LLMs implements INode {
|
||||
label: string
|
||||
@@ -17,7 +18,7 @@ class HuggingFaceInference_LLMs implements INode {
|
||||
constructor() {
|
||||
this.label = 'HuggingFace Inference'
|
||||
this.name = 'huggingFaceInference_LLMs'
|
||||
this.version = 1.0
|
||||
this.version = 2.0
|
||||
this.type = 'HuggingFaceInference'
|
||||
this.icon = 'huggingface.png'
|
||||
this.category = 'LLMs'
|
||||
@@ -30,6 +31,12 @@ class HuggingFaceInference_LLMs implements INode {
|
||||
credentialNames: ['huggingFaceApi']
|
||||
}
|
||||
this.inputs = [
|
||||
{
|
||||
label: 'Cache',
|
||||
name: 'llmCache',
|
||||
type: 'LLMCache',
|
||||
optional: true
|
||||
},
|
||||
{
|
||||
label: 'Model',
|
||||
name: 'model',
|
||||
@@ -106,6 +113,8 @@ class HuggingFaceInference_LLMs implements INode {
|
||||
const credentialData = await getCredentialData(nodeData.credential ?? '', options)
|
||||
const huggingFaceApiKey = getCredentialParam('huggingFaceApiKey', credentialData, nodeData)
|
||||
|
||||
const llmCache = nodeData.inputs?.llmCache as BaseCache
|
||||
|
||||
const obj: Partial<HFInput> = {
|
||||
model,
|
||||
apiKey: huggingFaceApiKey
|
||||
@@ -119,6 +128,8 @@ class HuggingFaceInference_LLMs implements INode {
|
||||
if (endpoint) obj.endpoint = endpoint
|
||||
|
||||
const huggingFace = new HuggingFaceInference(obj)
|
||||
if (llmCache) huggingFace.cache = llmCache
|
||||
|
||||
return huggingFace
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { ICommonObject, INode, INodeData, INodeParams } from '../../../src/Interface'
|
||||
import { getBaseClasses, getCredentialData, getCredentialParam } from '../../../src/utils'
|
||||
import { OpenAI, OpenAIInput } from 'langchain/llms/openai'
|
||||
import { BaseLLMParams } from 'langchain/dist/llms/base'
|
||||
import { BaseLLMParams } from 'langchain/llms/base'
|
||||
import { BaseCache } from 'langchain/schema'
|
||||
|
||||
class OpenAI_LLMs implements INode {
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
import { ICommonObject, INode, INodeData, INodeParams } from '../../../src/Interface'
|
||||
import { getBaseClasses, getCredentialData, getCredentialParam } from '../../../src/utils'
|
||||
import { Replicate, ReplicateInput } from 'langchain/llms/replicate'
|
||||
import { BaseCache } from 'langchain/schema'
|
||||
import { BaseLLMParams } from 'langchain/llms/base'
|
||||
|
||||
class Replicate_LLMs implements INode {
|
||||
label: string
|
||||
@@ -17,7 +19,7 @@ class Replicate_LLMs implements INode {
|
||||
constructor() {
|
||||
this.label = 'Replicate'
|
||||
this.name = 'replicate'
|
||||
this.version = 1.0
|
||||
this.version = 2.0
|
||||
this.type = 'Replicate'
|
||||
this.icon = 'replicate.svg'
|
||||
this.category = 'LLMs'
|
||||
@@ -30,6 +32,12 @@ class Replicate_LLMs implements INode {
|
||||
credentialNames: ['replicateApi']
|
||||
}
|
||||
this.inputs = [
|
||||
{
|
||||
label: 'Cache',
|
||||
name: 'llmCache',
|
||||
type: 'LLMCache',
|
||||
optional: true
|
||||
},
|
||||
{
|
||||
label: 'Model',
|
||||
name: 'model',
|
||||
@@ -103,7 +111,9 @@ class Replicate_LLMs implements INode {
|
||||
const name = modelName.split(':')[0].split('/').pop()
|
||||
const org = modelName.split(':')[0].split('/')[0]
|
||||
|
||||
const obj: ReplicateInput = {
|
||||
const llmCache = nodeData.inputs?.llmCache as BaseCache
|
||||
|
||||
const obj: ReplicateInput & BaseLLMParams = {
|
||||
model: `${org}/${name}:${version}`,
|
||||
apiKey
|
||||
}
|
||||
@@ -120,6 +130,8 @@ class Replicate_LLMs implements INode {
|
||||
}
|
||||
if (Object.keys(inputs).length) obj.input = inputs
|
||||
|
||||
if (llmCache) obj.cache = llmCache
|
||||
|
||||
const model = new Replicate(obj)
|
||||
return model
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user