From e9ed663d1f2b12cf22aa423299e5067450e32e64 Mon Sep 17 00:00:00 2001 From: chungyau97 Date: Wed, 13 Sep 2023 16:15:57 +0800 Subject: [PATCH 1/2] add analytic into Conversational Agent --- .../nodes/agents/ConversationalAgent/ConversationalAgent.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/components/nodes/agents/ConversationalAgent/ConversationalAgent.ts b/packages/components/nodes/agents/ConversationalAgent/ConversationalAgent.ts index d8d8506c..661ef151 100644 --- a/packages/components/nodes/agents/ConversationalAgent/ConversationalAgent.ts +++ b/packages/components/nodes/agents/ConversationalAgent/ConversationalAgent.ts @@ -5,6 +5,7 @@ import { BaseChatMemory } from 'langchain/memory' import { getBaseClasses, mapChatHistory } from '../../../src/utils' import { BaseLanguageModel } from 'langchain/base_language' import { flatten } from 'lodash' +import { additionalCallbacks } from '../../../src/handler' const DEFAULT_PREFIX = `Assistant is a large language model trained by OpenAI. @@ -91,13 +92,14 @@ class ConversationalAgent_Agents implements INode { const executor = nodeData.instance as AgentExecutor const memory = nodeData.inputs?.memory as BaseChatMemory + const callbacks = await additionalCallbacks(nodeData, options) + if (options && options.chatHistory) { memory.chatHistory = mapChatHistory(options) executor.memory = memory } - const result = await executor.call({ input }) - + const result = await executor.call({ input }, [...callbacks]) return result?.output } } From 76ba977a5ca195ec9925317665207e11e5e2e264 Mon Sep 17 00:00:00 2001 From: Henry Date: Wed, 13 Sep 2023 09:57:32 +0100 Subject: [PATCH 2/2] add callbacks to agents --- .../nodes/agents/MRKLAgentChat/MRKLAgentChat.ts | 10 +++++++--- .../nodes/agents/MRKLAgentLLM/MRKLAgentLLM.ts | 10 +++++++--- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/packages/components/nodes/agents/MRKLAgentChat/MRKLAgentChat.ts b/packages/components/nodes/agents/MRKLAgentChat/MRKLAgentChat.ts index 0a9e744c..ed169e62 100644 --- a/packages/components/nodes/agents/MRKLAgentChat/MRKLAgentChat.ts +++ b/packages/components/nodes/agents/MRKLAgentChat/MRKLAgentChat.ts @@ -1,9 +1,10 @@ -import { INode, INodeData, INodeParams } from '../../../src/Interface' +import { ICommonObject, INode, INodeData, INodeParams } from '../../../src/Interface' import { initializeAgentExecutorWithOptions, AgentExecutor } from 'langchain/agents' import { getBaseClasses } from '../../../src/utils' import { Tool } from 'langchain/tools' import { BaseLanguageModel } from 'langchain/base_language' import { flatten } from 'lodash' +import { additionalCallbacks } from '../../../src/handler' class MRKLAgentChat_Agents implements INode { label: string @@ -51,9 +52,12 @@ class MRKLAgentChat_Agents implements INode { return executor } - async run(nodeData: INodeData, input: string): Promise { + async run(nodeData: INodeData, input: string, options: ICommonObject): Promise { const executor = nodeData.instance as AgentExecutor - const result = await executor.call({ input }) + + const callbacks = await additionalCallbacks(nodeData, options) + + const result = await executor.call({ input }, [...callbacks]) return result?.output } diff --git a/packages/components/nodes/agents/MRKLAgentLLM/MRKLAgentLLM.ts b/packages/components/nodes/agents/MRKLAgentLLM/MRKLAgentLLM.ts index d7af586b..74929af8 100644 --- a/packages/components/nodes/agents/MRKLAgentLLM/MRKLAgentLLM.ts +++ b/packages/components/nodes/agents/MRKLAgentLLM/MRKLAgentLLM.ts @@ -1,9 +1,10 @@ -import { INode, INodeData, INodeParams } from '../../../src/Interface' +import { ICommonObject, INode, INodeData, INodeParams } from '../../../src/Interface' import { initializeAgentExecutorWithOptions, AgentExecutor } from 'langchain/agents' import { Tool } from 'langchain/tools' import { getBaseClasses } from '../../../src/utils' import { BaseLanguageModel } from 'langchain/base_language' import { flatten } from 'lodash' +import { additionalCallbacks } from '../../../src/handler' class MRKLAgentLLM_Agents implements INode { label: string @@ -52,9 +53,12 @@ class MRKLAgentLLM_Agents implements INode { return executor } - async run(nodeData: INodeData, input: string): Promise { + async run(nodeData: INodeData, input: string, options: ICommonObject): Promise { const executor = nodeData.instance as AgentExecutor - const result = await executor.call({ input }) + + const callbacks = await additionalCallbacks(nodeData, options) + + const result = await executor.call({ input }, [...callbacks]) return result?.output }