diff --git a/packages/components/nodes/agents/CSVAgent/CSVAgent.ts b/packages/components/nodes/agents/CSVAgent/CSVAgent.ts index 9224a4c1..4a42592f 100644 --- a/packages/components/nodes/agents/CSVAgent/CSVAgent.ts +++ b/packages/components/nodes/agents/CSVAgent/CSVAgent.ts @@ -37,6 +37,16 @@ class CSV_Agents implements INode { label: 'Language Model', name: 'model', type: 'BaseLanguageModel' + }, + { + label: 'System Message', + name: 'systemMessagePrompt', + type: 'string', + rows: 4, + additionalParams: true, + optional: true, + placeholder: + 'I want you to act as a document that I am having a conversation with. Your name is "AI Assistant". You will provide me with answers from the given info. If the answer is not included, say exactly "Hmm, I am not sure." and stop after that. Refuse to answer any question not about the info. Never break character.' } ] } @@ -49,6 +59,7 @@ class CSV_Agents implements INode { async run(nodeData: INodeData, input: string, options: ICommonObject): Promise { const csvFileBase64 = nodeData.inputs?.csvFile as string const model = nodeData.inputs?.model as BaseLanguageModel + const systemMessagePrompt = nodeData.inputs?.systemMessagePrompt as string const loggerHandler = new ConsoleCallbackHandler(options.logger) const handler = new CustomChainHandler(options.socketIO, options.socketIOClientId) @@ -127,7 +138,9 @@ json.dumps(my_dict)` if (finalResult) { const chain = new LLMChain({ llm: model, - prompt: PromptTemplate.fromTemplate(finalSystemPrompt), + prompt: PromptTemplate.fromTemplate( + systemMessagePrompt ? `${systemMessagePrompt}\n${finalSystemPrompt}` : finalSystemPrompt + ), verbose: process.env.DEBUG === 'true' ? true : false }) const inputs = { diff --git a/packages/server/src/ChildProcess.ts b/packages/server/src/ChildProcess.ts index 6cc98e02..0112f840 100644 --- a/packages/server/src/ChildProcess.ts +++ b/packages/server/src/ChildProcess.ts @@ -8,7 +8,8 @@ import { getStartingNodes, getUserHome, replaceInputsWithConfig, - resolveVariables + resolveVariables, + databaseEntities } from './utils' import { DataSource } from 'typeorm' import { ChatFlow } from './entity/ChatFlow' @@ -141,7 +142,12 @@ export class ChildProcess { if (nodeToExecuteData.instance) checkMemorySessionId(nodeToExecuteData.instance, chatId) - const result = await nodeInstance.run(nodeToExecuteData, incomingInput.question, { chatHistory: incomingInput.history, chatId }) + const result = await nodeInstance.run(nodeToExecuteData, incomingInput.question, { + chatHistory: incomingInput.history, + appDataSource: childAppDataSource, + databaseEntities + }) + logger.debug(`[server] [mode:child]: Finished running ${nodeToExecuteData.label} (${nodeToExecuteData.id})`) await sendToParentProcess('finish', { result, addToChatFlowPool })