feat(experimental): FunctionsAgent, uses new function payload for tooling

This commit is contained in:
Daniel Avila 2023-06-13 23:39:22 -04:00 committed by Danny Avila
parent 550e566097
commit 3caddd6854
8 changed files with 227 additions and 52 deletions

View file

@ -0,0 +1,33 @@
const FunctionsAgent = require('./FunctionsAgent');
const { AgentExecutor } = require('langchain/agents');
const { BufferMemory, ChatMessageHistory } = require('langchain/memory');
const initializeFunctionsAgent = async ({
tools,
model,
pastMessages,
currentDateString,
...rest
}) => {
const agent = FunctionsAgent.fromLLMAndTools(
model,
tools,
{
currentDateString,
});
const memory = new BufferMemory({
chatHistory: new ChatMessageHistory(pastMessages),
// returnMessages: true, // commenting this out retains memory
memoryKey: 'chat_history',
humanPrefix: 'User',
aiPrefix: 'Assistant',
inputKey: 'input',
outputKey: 'output'
});
return AgentExecutor.fromAgentAndTools({ agent, tools, memory, ...rest });
};
module.exports = initializeFunctionsAgent;