UNPKG

json-object-editor

Version:

JOE the Json Object Editor | Platform Edition

80 lines (61 loc) 1.84 kB
const OpenAI = require("openai"); function ChatGPTTools() { const self = this; function coloredLog(message) { console.log(JOE.Utils.color('[chatgpt-tools]', 'plugin', false), message); } function getAPIKey() { const setting = JOE.Utils.Settings('OPENAI_API_KEY'); if (!setting) throw new Error("Missing OPENAI_API_KEY setting"); return setting; } //search JOE data for ai_tool objects function getTools(data){ var query = Object.assign({itemtype:'ai_tool'}, data||{}); var tools = JOE.Cache.search(query); var functionalTools = {}; for(var i=0; i<tools.length; i++){ var tool = tools[i]; functionalTools[tool._id] = Object.assign(tool,{ tool_properties:JSON.parse(tool.tool_properties), }); } return functionalTools; } function newClient() { return new OpenAI({ apiKey: getAPIKey() }); } this.default = function(data, req, res) { try { var payload = { params: req.params, data: data, tools:getTools(data), success:true }; } catch (e) { return { errors: 'plugin error: ' + e, failedat: 'plugin' }; } return payload; }; this.flattened = function(data, req, res){ try { var flattened = JOE.Utils.flattenObject(data._id); var payload = { params: req.params, data: data, object:flattened, success:true }; } catch (e) { return { errors: 'plugin error: ' + e, failedat: 'plugin' }; } return payload; } //1. start or continue a conversation //self.profileBusinessFromURL = profileBusinessFromURL; this.async = { }; return self; } module.exports = new ChatGPTTools();