mirror of
https://github.com/danny-avila/LibreChat.git
synced 2025-12-17 08:50:15 +01:00
* 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
50 lines
1.4 KiB
JavaScript
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;
|