rename agent executor name
This commit is contained in:
parent
aac0546a7f
commit
19f2989c83
|
|
@ -1,5 +1,5 @@
|
||||||
import { ICommonObject, INode, INodeData, INodeParams } from '../../../src/Interface'
|
import { ICommonObject, INode, INodeData, INodeParams } from '../../../src/Interface'
|
||||||
import { AgentExecutor, AgentExecutorInput } from 'langchain/agents'
|
import { AgentExecutor as LCAgentExecutor, AgentExecutorInput } from 'langchain/agents'
|
||||||
import { ChainValues, AgentStep, AgentFinish, AgentAction, BaseMessage, FunctionMessage, AIMessage } from 'langchain/schema'
|
import { ChainValues, AgentStep, AgentFinish, AgentAction, BaseMessage, FunctionMessage, AIMessage } from 'langchain/schema'
|
||||||
import { OutputParserException } from 'langchain/schema/output_parser'
|
import { OutputParserException } from 'langchain/schema/output_parser'
|
||||||
import { CallbackManagerForChainRun } from 'langchain/callbacks'
|
import { CallbackManagerForChainRun } from 'langchain/callbacks'
|
||||||
|
|
@ -34,7 +34,7 @@ class OpenAIFunctionAgent_Agents implements INode {
|
||||||
this.category = 'Agents'
|
this.category = 'Agents'
|
||||||
this.icon = 'function.svg'
|
this.icon = 'function.svg'
|
||||||
this.description = `An agent that uses Function Calling to pick the tool and args to call`
|
this.description = `An agent that uses Function Calling to pick the tool and args to call`
|
||||||
this.baseClasses = [this.type, ...getBaseClasses(AgentExecutor)]
|
this.baseClasses = [this.type, ...getBaseClasses(LCAgentExecutor)]
|
||||||
this.inputs = [
|
this.inputs = [
|
||||||
{
|
{
|
||||||
label: 'Allowed Tools',
|
label: 'Allowed Tools',
|
||||||
|
|
@ -124,12 +124,13 @@ const prepareAgent = (nodeData: INodeData, sessionId?: string) => {
|
||||||
const systemMessage = nodeData.inputs?.systemMessage as string
|
const systemMessage = nodeData.inputs?.systemMessage as string
|
||||||
let tools = nodeData.inputs?.tools
|
let tools = nodeData.inputs?.tools
|
||||||
tools = flatten(tools)
|
tools = flatten(tools)
|
||||||
const memoryKey = memory.memoryKey ?? 'chat_history'
|
const memoryKey = memory.memoryKey ? memory.memoryKey : 'chat_history'
|
||||||
|
const inputKey = memory.inputKey ? memory.inputKey : 'input'
|
||||||
|
|
||||||
const prompt = ChatPromptTemplate.fromMessages([
|
const prompt = ChatPromptTemplate.fromMessages([
|
||||||
['ai', systemMessage ?? `You are a helpful AI assistant.`],
|
['ai', systemMessage ? systemMessage : `You are a helpful AI assistant.`],
|
||||||
new MessagesPlaceholder(memoryKey),
|
new MessagesPlaceholder(memoryKey),
|
||||||
['human', '{input}'],
|
['human', `{${inputKey}}`],
|
||||||
new MessagesPlaceholder('agent_scratchpad')
|
new MessagesPlaceholder('agent_scratchpad')
|
||||||
])
|
])
|
||||||
|
|
||||||
|
|
@ -139,7 +140,7 @@ const prepareAgent = (nodeData: INodeData, sessionId?: string) => {
|
||||||
|
|
||||||
const runnableAgent = RunnableSequence.from([
|
const runnableAgent = RunnableSequence.from([
|
||||||
{
|
{
|
||||||
input: (i: { input: string; steps: AgentStep[] }) => i.input,
|
[inputKey]: (i: { input: string; steps: AgentStep[] }) => i.input,
|
||||||
agent_scratchpad: (i: { input: string; steps: AgentStep[] }) => formatAgentSteps(i.steps),
|
agent_scratchpad: (i: { input: string; steps: AgentStep[] }) => formatAgentSteps(i.steps),
|
||||||
[memoryKey]: async (_: { input: string; steps: AgentStep[] }) => {
|
[memoryKey]: async (_: { input: string; steps: AgentStep[] }) => {
|
||||||
const messages: BaseMessage[] = await memory.getChatMessages(sessionId, true)
|
const messages: BaseMessage[] = await memory.getChatMessages(sessionId, true)
|
||||||
|
|
@ -151,7 +152,7 @@ const prepareAgent = (nodeData: INodeData, sessionId?: string) => {
|
||||||
new OpenAIFunctionsAgentOutputParser()
|
new OpenAIFunctionsAgentOutputParser()
|
||||||
])
|
])
|
||||||
|
|
||||||
const executor = AgentExecutorExtended.fromAgentAndTools({
|
const executor = AgentExecutor.fromAgentAndTools({
|
||||||
agent: runnableAgent,
|
agent: runnableAgent,
|
||||||
tools,
|
tools,
|
||||||
sessionId
|
sessionId
|
||||||
|
|
@ -162,11 +163,11 @@ const prepareAgent = (nodeData: INodeData, sessionId?: string) => {
|
||||||
|
|
||||||
type AgentExecutorOutput = ChainValues
|
type AgentExecutorOutput = ChainValues
|
||||||
|
|
||||||
class AgentExecutorExtended extends AgentExecutor {
|
class AgentExecutor extends LCAgentExecutor {
|
||||||
sessionId?: string
|
sessionId?: string
|
||||||
|
|
||||||
static fromAgentAndTools(fields: AgentExecutorInput & { sessionId?: string }): AgentExecutorExtended {
|
static fromAgentAndTools(fields: AgentExecutorInput & { sessionId?: string }): AgentExecutor {
|
||||||
const newInstance = new AgentExecutorExtended(fields)
|
const newInstance = new AgentExecutor(fields)
|
||||||
if (fields.sessionId) newInstance.sessionId = fields.sessionId
|
if (fields.sessionId) newInstance.sessionId = fields.sessionId
|
||||||
return newInstance
|
return newInstance
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue