LibreChat/api/app/clients/agents/CustomAgent/CustomAgent.js
Danny Avila e5336039fc
ci(backend-review.yml): add linter step to the backend review workflow (#625)
* ci(backend-review.yml): add linter step to the backend review workflow

* chore(backend-review.yml): remove prettier from lint-action configuration

* chore: apply new linting workflow

* chore(lint-staged.config.js): reorder lint-staged tasks for JavaScript and TypeScript files

* chore(eslint): update ignorePatterns in .eslintrc.js
chore(lint-action): remove prettier option in backend-review.yml
chore(package.json): add lint and lint:fix scripts

* chore(lint-staged.config.js): remove prettier --write command for js, jsx, ts, tsx files

* chore(titleConvo.js): remove unnecessary console.log statement
chore(titleConvo.js): add missing comma in options object

* chore: apply linting to all files

* chore(lint-staged.config.js): update lint-staged configuration to include prettier formatting
2023-07-14 09:36:49 -04:00

50 lines
1.4 KiB
JavaScript

const { ZeroShotAgent } = require('langchain/agents');
const { PromptTemplate, renderTemplate } = require('langchain/prompts');
const { gpt3, gpt4 } = require('./instructions');
class CustomAgent extends ZeroShotAgent {
constructor(input) {
super(input);
}
_stop() {
return ['\nObservation:', '\nObservation 1:'];
}
static createPrompt(tools, opts = {}) {
const { currentDateString, model } = opts;
const inputVariables = ['input', 'chat_history', 'agent_scratchpad'];
let prefix, instructions, suffix;
if (model.startsWith('gpt-3')) {
prefix = gpt3.prefix;
instructions = gpt3.instructions;
suffix = gpt3.suffix;
} else if (model.startsWith('gpt-4')) {
prefix = gpt4.prefix;
instructions = gpt4.instructions;
suffix = gpt4.suffix;
}
const toolStrings = tools
.filter((tool) => tool.name !== 'self-reflection')
.map((tool) => `${tool.name}: ${tool.description}`)
.join('\n');
const toolNames = tools.map((tool) => tool.name);
const formatInstructions = (0, renderTemplate)(instructions, 'f-string', {
tool_names: toolNames,
});
const template = [
`Date: ${currentDateString}\n${prefix}`,
toolStrings,
formatInstructions,
suffix,
].join('\n\n');
return new PromptTemplate({
template,
inputVariables,
});
}
}
module.exports = CustomAgent;