refactor(tools): restructure tool dir

This commit is contained in:
Daniel Avila 2023-06-14 13:05:33 -04:00 committed by Danny Avila
parent 71d812403e
commit 1b3215c55d
5 changed files with 48 additions and 26 deletions

View file

@ -12,7 +12,8 @@ const { CallbackManager } = require('langchain/callbacks');
const { HumanChatMessage, AIChatMessage } = require('langchain/schema');
const { initializeCustomAgent, initializeFunctionsAgent } = require('./agents/');
const { getMessages, saveMessage, saveConvo } = require('../../models');
const { loadTools, SelfReflectionTool } = require('./tools');
const { loadTools } = require('./tools/util');
const { SelfReflectionTool } = require('./tools/');
const {
instructions,
imageInstructions,

View file

@ -1,10 +1,19 @@
const GoogleSearchAPI = require('./GoogleSearch');
const HttpRequestTool = require('./HttpRequestTool');
const AIPluginTool = require('./AIPluginTool');
const OpenAICreateImage = require('./DALL-E');
const StructuredSD = require('./structured/StableDiffusion');
const StableDiffusionAPI = require('./StableDiffusion');
const WolframAlphaAPI = require('./Wolfram');
const SelfReflectionTool = require('./SelfReflection');
const availableTools = require('./manifest.json');
const { validateTools, loadTools } = require('./handleTools');
module.exports = {
validateTools,
loadTools,
availableTools,
GoogleSearchAPI,
HttpRequestTool,
AIPluginTool,
OpenAICreateImage,
StructuredSD,
StableDiffusionAPI,
WolframAlphaAPI,
SelfReflectionTool
};
}

View file

@ -1,3 +1,4 @@
const { getUserPluginAuthValue } = require('../../../../server/services/PluginService');
const { OpenAIEmbeddings } = require('langchain/embeddings/openai');
const { ZapierToolKit } = require('langchain/agents');
const {
@ -7,14 +8,16 @@ const {
const { ChatOpenAI } = require('langchain/chat_models/openai');
const { Calculator } = require('langchain/tools/calculator');
const { WebBrowser } = require('langchain/tools/webbrowser');
const GoogleSearchAPI = require('./GoogleSearch');
const HttpRequestTool = require('./HttpRequestTool');
const AIPluginTool = require('./AIPluginTool');
const OpenAICreateImage = require('./DALL-E');
const StableDiffusionAPI = require('./StableDiffusion');
const WolframAlphaAPI = require('./Wolfram');
const availableTools = require('./manifest.json');
const { getUserPluginAuthValue } = require('../../../server/services/PluginService');
const {
AIPluginTool,
GoogleSearchAPI,
WolframAlphaAPI,
HttpRequestTool,
OpenAICreateImage,
StableDiffusionAPI,
StructuredSD,
} = require('../');
const availableTools = require('../manifest.json');
const validateTools = async (user, tools = []) => {
try {
@ -70,12 +73,13 @@ const loadToolWithAuth = async (user, authFields, ToolConstructor, options = {})
};
const loadTools = async ({ user, model, tools = [], options = {} }) => {
const { functions } = options;
const toolConstructors = {
calculator: Calculator,
google: GoogleSearchAPI,
wolfram: WolframAlphaAPI,
'dall-e': OpenAICreateImage,
'stable-diffusion': StableDiffusionAPI
'stable-diffusion': functions ? StructuredSD : StableDiffusionAPI
};
const customConstructors = {
@ -109,9 +113,10 @@ const loadTools = async ({ user, model, tools = [], options = {} }) => {
return [
new HttpRequestTool(),
await AIPluginTool.fromPluginUrl(
"https://www.klarna.com/.well-known/ai-plugin.json", new ChatOpenAI({ openAIApiKey: options.openAIApiKey, temperature: 0 })
),
]
'https://www.klarna.com/.well-known/ai-plugin.json',
new ChatOpenAI({ openAIApiKey: options.openAIApiKey, temperature: 0 })
)
];
}
};

View file

@ -11,21 +11,20 @@ var mockPluginService = {
};
jest.mock('../../../models/User', () => {
jest.mock('../../../../models/User', () => {
return function() {
return mockUser;
};
});
jest.mock('../../../server/services/PluginService', () => mockPluginService);
jest.mock('../../../../server/services/PluginService', () => mockPluginService);
const User = require('../../../models/User');
const { validateTools, loadTools, availableTools } = require('./index');
const PluginService = require('../../../server/services/PluginService');
const User = require('../../../../models/User');
const { validateTools, loadTools, availableTools } = require('./');
const PluginService = require('../../../../server/services/PluginService');
const { BaseChatModel } = require('langchain/chat_models/openai');
const { Calculator } = require('langchain/tools/calculator');
const OpenAICreateImage = require('./DALL-E');
const GoogleSearchAPI = require('./GoogleSearch');
const { OpenAICreateImage, GoogleSearchAPI } = require('../');
describe('Tool Handlers', () => {
let fakeUser;

View file

@ -0,0 +1,8 @@
const availableTools = require('../manifest.json');
const { validateTools, loadTools } = require('./handleTools');
module.exports = {
validateTools,
loadTools,
availableTools
};