mirror of
https://github.com/danny-avila/LibreChat.git
synced 2025-09-22 06:00:56 +02:00

* chore: bump langchain deps to address vulnerability warnings * chore: bump community package and install textsplitters package * fix: update expected result in tokenSplit tests for accuracy * chore: remove CodeSherpa tools * chore: remove E2B tools and loadToolSuite * chore: remove CodeBrew tool and update related references * chore: remove HumanTool and ChatTool, update tool references * chore: remove Zapier tool from manifest.json and update SerpAPI * chore: remove basic tools * chore: update import path for RecursiveCharacterTextSplitter * chore: update import path for DynamicStructuredTool * chore: remove extractionChain.js and update tool filtering logic * chore: npm audit fix * chore: bump google packages * chore: update DALL-E tool to DALL-E-3 and adjust authentication logic * ci: update message classes * chore: elliptic npm audit fix * chore: update CallbackManager import and remove deprecated tool handling logic * chore: imports order * chore: remove unused code --------- Co-authored-by: Max Sanna <max@maxsanna.com>
63 lines
1.7 KiB
JavaScript
63 lines
1.7 KiB
JavaScript
const CustomAgent = require('./CustomAgent');
|
|
const { CustomOutputParser } = require('./outputParser');
|
|
const { AgentExecutor } = require('langchain/agents');
|
|
const { LLMChain } = require('langchain/chains');
|
|
const { BufferMemory, ChatMessageHistory } = require('langchain/memory');
|
|
const {
|
|
ChatPromptTemplate,
|
|
SystemMessagePromptTemplate,
|
|
HumanMessagePromptTemplate,
|
|
} = require('@langchain/core/prompts');
|
|
|
|
const initializeCustomAgent = async ({
|
|
tools,
|
|
model,
|
|
pastMessages,
|
|
customName,
|
|
customInstructions,
|
|
currentDateString,
|
|
...rest
|
|
}) => {
|
|
let prompt = CustomAgent.createPrompt(tools, { currentDateString, model: model.modelName });
|
|
if (customName) {
|
|
prompt = `You are "${customName}".\n${prompt}`;
|
|
}
|
|
if (customInstructions) {
|
|
prompt = `${prompt}\n${customInstructions}`;
|
|
}
|
|
|
|
const chatPrompt = ChatPromptTemplate.fromMessages([
|
|
new SystemMessagePromptTemplate(prompt),
|
|
HumanMessagePromptTemplate.fromTemplate(`{chat_history}
|
|
Query: {input}
|
|
{agent_scratchpad}`),
|
|
]);
|
|
|
|
const outputParser = new CustomOutputParser({ tools });
|
|
|
|
const memory = new BufferMemory({
|
|
llm: model,
|
|
chatHistory: new ChatMessageHistory(pastMessages),
|
|
// returnMessages: true, // commenting this out retains memory
|
|
memoryKey: 'chat_history',
|
|
humanPrefix: 'User',
|
|
aiPrefix: 'Assistant',
|
|
inputKey: 'input',
|
|
outputKey: 'output',
|
|
});
|
|
|
|
const llmChain = new LLMChain({
|
|
prompt: chatPrompt,
|
|
llm: model,
|
|
});
|
|
|
|
const agent = new CustomAgent({
|
|
llmChain,
|
|
outputParser,
|
|
allowedTools: tools.map((tool) => tool.name),
|
|
});
|
|
|
|
return AgentExecutor.fromAgentAndTools({ agent, tools, memory, ...rest });
|
|
};
|
|
|
|
module.exports = initializeCustomAgent;
|