@tiledesk/tiledesk-server 2.8.4 → 2.8.6
Sign up to get free protection for your applications and to get access to all the features.
- package/CHANGELOG.md +6 -0
- package/package.json +1 -1
- package/routes/kb.js +39 -14
- package/services/QuoteManager.js +1 -1
- package/test/kbRoute.js +87 -0
package/CHANGELOG.md
CHANGED
@@ -5,6 +5,12 @@
|
|
5
5
|
🚀 IN PRODUCTION 🚀
|
6
6
|
(https://www.npmjs.com/package/@tiledesk/tiledesk-server/v/2.3.77)
|
7
7
|
|
8
|
+
# 2.8.6
|
9
|
+
- Bug fix: token count was incremented in action preview and kb preview even with a private key in integration
|
10
|
+
|
11
|
+
# 2.8.5
|
12
|
+
- Restored sandbox limits for free trial plan
|
13
|
+
|
8
14
|
# 2.8.4
|
9
15
|
- Updated tybot-connector to 0.2.83
|
10
16
|
|
package/package.json
CHANGED
package/routes/kb.js
CHANGED
@@ -13,6 +13,7 @@ const Sitemapper = require('sitemapper');
|
|
13
13
|
var mongoose = require('mongoose');
|
14
14
|
const faq = require('../models/faq');
|
15
15
|
const faq_kb = require('../models/faq_kb');
|
16
|
+
let Integration = require('../models/integrations');
|
16
17
|
|
17
18
|
const { MODELS_MULTIPLIER } = require('../utils/aiUtils');
|
18
19
|
|
@@ -186,20 +187,22 @@ router.post('/qa', async (req, res) => {
|
|
186
187
|
}
|
187
188
|
|
188
189
|
let namespaceIds = namespaces.map(namespace => namespace.id);
|
189
|
-
|
190
190
|
if (!namespaceIds.includes(data.namespace)) {
|
191
191
|
return res.status(403).send({ success: false, error: "Not allowed. The namespace does not belong to the current project." })
|
192
192
|
}
|
193
|
-
|
193
|
+
|
194
194
|
winston.debug("/qa data: ", data);
|
195
195
|
|
196
196
|
if (!data.gptkey) {
|
197
|
-
let gptkey =
|
197
|
+
let gptkey = await getKeyFromIntegrations(project_id);
|
198
|
+
if (!gptkey) {
|
199
|
+
gptkey = process.env.GPTKEY;
|
200
|
+
publicKey = true;
|
201
|
+
}
|
198
202
|
if (!gptkey) {
|
199
203
|
return res.status(403).send({ success: false, error: "GPT apikey undefined" })
|
200
204
|
}
|
201
205
|
data.gptkey = gptkey;
|
202
|
-
publicKey = true;
|
203
206
|
}
|
204
207
|
|
205
208
|
let obj = { createdAt: new Date() };
|
@@ -221,6 +224,10 @@ router.post('/qa', async (req, res) => {
|
|
221
224
|
}
|
222
225
|
}
|
223
226
|
|
227
|
+
// if (process.env.NODE_ENV === 'test') {
|
228
|
+
// return res.status(200).send({ success: true, message: "Question skipped in test environment"});
|
229
|
+
// }
|
230
|
+
|
224
231
|
openaiService.askNamespace(data).then((resp) => {
|
225
232
|
winston.debug("qa resp: ", resp.data);
|
226
233
|
let answer = resp.data;
|
@@ -233,16 +240,18 @@ router.post('/qa', async (req, res) => {
|
|
233
240
|
|
234
241
|
KB.findById(id, (err, resource) => {
|
235
242
|
|
236
|
-
|
237
|
-
|
238
|
-
multiplier
|
239
|
-
|
243
|
+
if (publicKey === true) {
|
244
|
+
let multiplier = MODELS_MULTIPLIER[data.model];
|
245
|
+
if (!multiplier) {
|
246
|
+
multiplier = 1;
|
247
|
+
winston.info("No multiplier found for AI model")
|
248
|
+
}
|
249
|
+
obj.multiplier = multiplier;
|
250
|
+
obj.tokens = answer.prompt_token_size;
|
251
|
+
|
252
|
+
let incremented_key = quoteManager.incrementTokenCount(req.project, obj);
|
253
|
+
winston.verbose("incremented_key: ", incremented_key);
|
240
254
|
}
|
241
|
-
obj.multiplier = multiplier;
|
242
|
-
obj.tokens = answer.prompt_token_size;
|
243
|
-
|
244
|
-
let incremented_key = quoteManager.incrementTokenCount(req.project, obj);
|
245
|
-
winston.verbose("incremented_key: ", incremented_key);
|
246
255
|
|
247
256
|
if (err) {
|
248
257
|
winston.error("Unable to find resource with id " + id + " in namespace " + answer.namespace + ". The standard answer is returned.")
|
@@ -517,7 +526,7 @@ router.post('/namespace', async (req, res) => {
|
|
517
526
|
let quoteManager = req.app.get('quote_manager');
|
518
527
|
let limits = await quoteManager.getPlanLimits(req.project);
|
519
528
|
let ns_limit = limits.namespace;
|
520
|
-
console.log("Limit of namespaces for current plan " + ns_limit);
|
529
|
+
//console.log("Limit of namespaces for current plan " + ns_limit);
|
521
530
|
|
522
531
|
if (namespaces.length >= ns_limit) {
|
523
532
|
return res.status(403).send({ success: false, error: "Maximum number of resources reached for the current plan", plan_limit: ns_limit });
|
@@ -1199,6 +1208,22 @@ async function startScrape(data) {
|
|
1199
1208
|
})
|
1200
1209
|
})
|
1201
1210
|
}
|
1211
|
+
|
1212
|
+
async function getKeyFromIntegrations(project_id) {
|
1213
|
+
|
1214
|
+
return new Promise( async (resolve) => {
|
1215
|
+
|
1216
|
+
let integration = await Integration.findOne({ id_project: project_id, name: 'openai' }).catch((err) => {
|
1217
|
+
winston.error("Unable to find openai integration for the current project " + project_id);
|
1218
|
+
resolve(null);
|
1219
|
+
})
|
1220
|
+
if (integration && integration.value && integration.value.apikey) {
|
1221
|
+
resolve(integration.value.apikey);
|
1222
|
+
} else {
|
1223
|
+
resolve(null);
|
1224
|
+
}
|
1225
|
+
})
|
1226
|
+
}
|
1202
1227
|
/**
|
1203
1228
|
* ****************************************
|
1204
1229
|
* Utils Methods Section - End
|
package/services/QuoteManager.js
CHANGED
@@ -14,7 +14,7 @@ const emailEvent = require('../event/emailEvent');
|
|
14
14
|
// }
|
15
15
|
|
16
16
|
const PLANS_LIST = {
|
17
|
-
FREE_TRIAL: { requests:
|
17
|
+
FREE_TRIAL: { requests: 200, messages: 0, tokens: 100000, email: 200, chatbots: 20, namespace: 3, kbs: 50 }, // same as PREMIUM
|
18
18
|
SANDBOX: { requests: 200, messages: 0, tokens: 100000, email: 200, chatbots: 2, namespace: 1, kbs: 50 },
|
19
19
|
BASIC: { requests: 800, messages: 0, tokens: 2000000, email: 200, chatbots: 5, namespace: 1, kbs: 150 },
|
20
20
|
PREMIUM: { requests: 3000, messages: 0, tokens: 5000000, email: 200, chatbots: 20, namespace: 3, kbs: 300 },
|
package/test/kbRoute.js
CHANGED
@@ -1003,6 +1003,93 @@ describe('KbRoute', () => {
|
|
1003
1003
|
|
1004
1004
|
// }).timeout(10000)
|
1005
1005
|
|
1006
|
+
// Ask KB
|
1007
|
+
// it('askkb-key-from-integrations', (done) => {
|
1008
|
+
|
1009
|
+
// var email = "test-signup-" + Date.now() + "@email.com";
|
1010
|
+
// var pwd = "pwd";
|
1011
|
+
|
1012
|
+
// userService.signup(email, pwd, "Test Firstname", "Test Lastname").then((savedUser) => {
|
1013
|
+
// projectService.create("test-kb-qa", savedUser._id).then((savedProject) => {
|
1014
|
+
|
1015
|
+
// chai.request(server)
|
1016
|
+
// .post('/' + savedProject._id + "/integration/")
|
1017
|
+
// .auth(email, pwd)
|
1018
|
+
// .send({ name: "openai", value: { apikey: "sk-testkey", organization: "Testkey" } })
|
1019
|
+
// .end((err, res) => {
|
1020
|
+
|
1021
|
+
// if (err) { console.error("err: ", err) };
|
1022
|
+
// if (log) { console.log("res.body: ", res.body) };
|
1023
|
+
// console.log("Integration created..")
|
1024
|
+
|
1025
|
+
// chai.request(server)
|
1026
|
+
// .get('/' + savedProject._id + '/kb/namespace/all')
|
1027
|
+
// .auth(email, pwd)
|
1028
|
+
// .end((err, res) => {
|
1029
|
+
|
1030
|
+
// if (err) { console.error("err: ", err); }
|
1031
|
+
// if (log) { console.log("get all namespaces res.body: ", res.body); }
|
1032
|
+
|
1033
|
+
// console.log("namespace created..")
|
1034
|
+
|
1035
|
+
// chai.request(server)
|
1036
|
+
// .post('/' + savedProject._id + "/kb/qa")
|
1037
|
+
// .auth(email, pwd)
|
1038
|
+
// .send({ model: "gpt-4o", namespace: savedProject._id, question: "sample question" })
|
1039
|
+
// .end((err, res) => {
|
1040
|
+
|
1041
|
+
// if (err) { console.error("err: ", err) };
|
1042
|
+
// if (log) { console.log("res.body: ", res.body) };
|
1043
|
+
// console.log("res.body: ", res.body)
|
1044
|
+
// done();
|
1045
|
+
// })
|
1046
|
+
|
1047
|
+
|
1048
|
+
// })
|
1049
|
+
|
1050
|
+
// })
|
1051
|
+
// })
|
1052
|
+
// })
|
1053
|
+
// }).timeout(10000)
|
1054
|
+
|
1055
|
+
// Ask KB
|
1056
|
+
// it('askkb-key-from-env', (done) => {
|
1057
|
+
|
1058
|
+
// var email = "test-signup-" + Date.now() + "@email.com";
|
1059
|
+
// var pwd = "pwd";
|
1060
|
+
|
1061
|
+
// userService.signup(email, pwd, "Test Firstname", "Test Lastname").then((savedUser) => {
|
1062
|
+
// projectService.create("test-kb-qa", savedUser._id).then((savedProject) => {
|
1063
|
+
|
1064
|
+
// chai.request(server)
|
1065
|
+
// .get('/' + savedProject._id + '/kb/namespace/all')
|
1066
|
+
// .auth(email, pwd)
|
1067
|
+
// .end((err, res) => {
|
1068
|
+
|
1069
|
+
// if (err) { console.error("err: ", err); }
|
1070
|
+
// if (log) { console.log("get all namespaces res.body: ", res.body); }
|
1071
|
+
|
1072
|
+
// console.log("namespace created..")
|
1073
|
+
|
1074
|
+
// chai.request(server)
|
1075
|
+
// .post('/' + savedProject._id + "/kb/qa")
|
1076
|
+
// .auth(email, pwd)
|
1077
|
+
// .send({ model: "gpt-4o", namespace: savedProject._id, question: "sample question" })
|
1078
|
+
// .end((err, res) => {
|
1079
|
+
|
1080
|
+
// if (err) { console.error("err: ", err) };
|
1081
|
+
// if (log) { console.log("res.body: ", res.body) };
|
1082
|
+
// console.log("res.body: ", res.body)
|
1083
|
+
// done();
|
1084
|
+
// })
|
1085
|
+
|
1086
|
+
|
1087
|
+
// })
|
1088
|
+
// })
|
1089
|
+
// })
|
1090
|
+
// }).timeout(10000)
|
1091
|
+
|
1092
|
+
|
1006
1093
|
it('webhook', (done) => {
|
1007
1094
|
|
1008
1095
|
var email = "test-signup-" + Date.now() + "@email.com";
|