@botonic/plugin-knowledge-bases 0.32.0 → 0.33.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,9 +1,20 @@
1
1
  import { AxiosResponse } from 'axios';
2
+ import { Chunk } from './types';
3
+ export interface HtApiKnowledgeBaseResponse {
4
+ inference_id: string;
5
+ query: string;
6
+ chunks: Chunk[];
7
+ has_knowledge: boolean;
8
+ is_faithful: boolean;
9
+ answer: string;
10
+ }
2
11
  export declare class HubtypeApiService {
3
12
  private host;
4
13
  private timeout;
5
14
  constructor(host: string, timeout?: number);
6
- inference(authToken: string, question: string, sources: string[]): Promise<AxiosResponse<{
15
+ inferenceV2(authToken: string, sources: string[], instructions: string, messageId: string, memoryLength: number): Promise<AxiosResponse<HtApiKnowledgeBaseResponse>>;
16
+ testInference(authToken: string, instructions: string, messages: any[], sources: string[]): Promise<AxiosResponse<HtApiKnowledgeBaseResponse>>;
17
+ inferenceV1(authToken: string, question: string, sources: string[]): Promise<AxiosResponse<{
7
18
  inference_id: string;
8
19
  question: string;
9
20
  answer: string;
@@ -10,7 +10,44 @@ class HubtypeApiService {
10
10
  this.host = host;
11
11
  this.timeout = timeout || DEFAULT_TIMEOUT;
12
12
  }
13
- inference(authToken, question, sources) {
13
+ inferenceV2(authToken, sources, instructions, messageId, memoryLength) {
14
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
15
+ return yield (0, axios_1.default)({
16
+ method: 'POST',
17
+ url: `${this.host}/external/v2/ai/knowledge_base/inference/`,
18
+ headers: {
19
+ Authorization: `Bearer ${authToken}`,
20
+ 'Content-Type': 'application/json',
21
+ },
22
+ data: {
23
+ sources,
24
+ instructions,
25
+ message: messageId,
26
+ memory_length: memoryLength,
27
+ },
28
+ timeout: this.timeout,
29
+ });
30
+ });
31
+ }
32
+ testInference(authToken, instructions, messages, sources) {
33
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
34
+ return yield (0, axios_1.default)({
35
+ method: 'POST',
36
+ url: `${this.host}/external/v1/ai/knowledge_base/test/`,
37
+ headers: {
38
+ Authorization: `Bearer ${authToken}`,
39
+ 'Content-Type': 'application/json',
40
+ },
41
+ data: {
42
+ sources,
43
+ instructions,
44
+ messages,
45
+ },
46
+ timeout: this.timeout,
47
+ });
48
+ });
49
+ }
50
+ inferenceV1(authToken, question, sources) {
14
51
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
15
52
  return yield (0, axios_1.default)({
16
53
  method: 'POST',
@@ -1 +1 @@
1
- {"version":3,"file":"hubtype-knowledge-api-service.js","sourceRoot":"","sources":["../../src/hubtype-knowledge-api-service.ts"],"names":[],"mappings":";;;;AAAA,yDAAyD;AACzD,0DAA4C;AAE5C,MAAM,eAAe,GAAG,KAAK,CAAA;AAE7B,MAAa,iBAAiB;IAI5B,YAAY,IAAY,EAAE,OAAgB;QACxC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,eAAe,CAAA;IAC3C,CAAC;IAEK,SAAS,CACb,SAAiB,EACjB,QAAgB,EAChB,OAAiB;;YAWjB,OAAO,MAAM,IAAA,eAAK,EAAC;gBACjB,MAAM,EAAE,MAAM;gBACd,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,2CAA2C;gBAC5D,OAAO,EAAE;oBACP,aAAa,EAAE,UAAU,SAAS,EAAE;oBACpC,cAAc,EAAE,kBAAkB;iBACnC;gBACD,IAAI,EAAE;oBACJ,QAAQ;oBACR,OAAO;iBACR;gBACD,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB,CAAC,CAAA;QACJ,CAAC;KAAA;CACF;AArCD,8CAqCC"}
1
+ {"version":3,"file":"hubtype-knowledge-api-service.js","sourceRoot":"","sources":["../../src/hubtype-knowledge-api-service.ts"],"names":[],"mappings":";;;;AAAA,yDAAyD;AACzD,0DAA4C;AAI5C,MAAM,eAAe,GAAG,KAAK,CAAA;AAU7B,MAAa,iBAAiB;IAI5B,YAAY,IAAY,EAAE,OAAgB;QACxC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,eAAe,CAAA;IAC3C,CAAC;IAEK,WAAW,CACf,SAAiB,EACjB,OAAiB,EACjB,YAAoB,EACpB,SAAiB,EACjB,YAAoB;;YAEpB,OAAO,MAAM,IAAA,eAAK,EAAC;gBACjB,MAAM,EAAE,MAAM;gBACd,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,2CAA2C;gBAC5D,OAAO,EAAE;oBACP,aAAa,EAAE,UAAU,SAAS,EAAE;oBACpC,cAAc,EAAE,kBAAkB;iBACnC;gBACD,IAAI,EAAE;oBACJ,OAAO;oBACP,YAAY;oBACZ,OAAO,EAAE,SAAS;oBAClB,aAAa,EAAE,YAAY;iBAC5B;gBACD,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB,CAAC,CAAA;QACJ,CAAC;KAAA;IAEK,aAAa,CACjB,SAAiB,EACjB,YAAoB,EACpB,QAAe,EACf,OAAiB;;YAEjB,OAAO,MAAM,IAAA,eAAK,EAAC;gBACjB,MAAM,EAAE,MAAM;gBACd,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,sCAAsC;gBACvD,OAAO,EAAE;oBACP,aAAa,EAAE,UAAU,SAAS,EAAE;oBACpC,cAAc,EAAE,kBAAkB;iBACnC;gBACD,IAAI,EAAE;oBACJ,OAAO;oBACP,YAAY;oBACZ,QAAQ;iBACT;gBACD,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB,CAAC,CAAA;QACJ,CAAC;KAAA;IAEK,WAAW,CACf,SAAiB,EACjB,QAAgB,EAChB,OAAiB;;YAWjB,OAAO,MAAM,IAAA,eAAK,EAAC;gBACjB,MAAM,EAAE,MAAM;gBACd,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,2CAA2C;gBAC5D,OAAO,EAAE;oBACP,aAAa,EAAE,UAAU,SAAS,EAAE;oBACpC,cAAc,EAAE,kBAAkB;iBACnC;gBACD,IAAI,EAAE;oBACJ,QAAQ;oBACR,OAAO;iBACR;gBACD,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB,CAAC,CAAA;QACJ,CAAC;KAAA;CACF;AAnFD,8CAmFC"}
@@ -1,10 +1,14 @@
1
- import type { Plugin, PluginPreRequest, Session } from '@botonic/core';
1
+ import type { BotRequest, Plugin, PluginPreRequest } from '@botonic/core';
2
2
  import { KnowledgeBaseResponse, PluginKnowledgeBaseOptions } from './types';
3
3
  export default class BotonicPluginKnowledgeBases implements Plugin {
4
4
  private readonly apiService;
5
5
  private readonly authToken;
6
6
  constructor(options: PluginKnowledgeBaseOptions);
7
7
  pre(_request: PluginPreRequest): Promise<void>;
8
- getInference(session: Session, userInput: string, sources: string[]): Promise<KnowledgeBaseResponse>;
8
+ getInference(request: BotRequest, sources: string[], instructions: string, messageId: string, memoryLength: number): Promise<KnowledgeBaseResponse>;
9
+ getTestInference(request: BotRequest, instructions: string, sources: string[]): Promise<KnowledgeBaseResponse>;
10
+ getInferenceV1(authToken: string, request: BotRequest, sources: string[]): Promise<KnowledgeBaseResponse>;
11
+ getInferenceV2(authToken: string, sources: string[], instructions: string, messageId: string, memoryLength: number): Promise<KnowledgeBaseResponse>;
12
+ private mapApiResponse;
9
13
  }
10
14
  export { PluginKnowledgeBaseOptions } from './types';
package/lib/cjs/index.js CHANGED
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
4
  const hubtype_knowledge_api_service_1 = require("./hubtype-knowledge-api-service");
5
5
  const isProd = process.env.NODE_ENV === 'production';
6
+ const isDev = process.env.NODE_ENV === 'development';
6
7
  class BotonicPluginKnowledgeBases {
7
8
  constructor(options) {
8
9
  this.apiService = new hubtype_knowledge_api_service_1.HubtypeApiService(options.host, options.timeout);
@@ -13,20 +14,52 @@ class BotonicPluginKnowledgeBases {
13
14
  return;
14
15
  });
15
16
  }
16
- getInference(session, userInput, sources) {
17
+ getInference(request, sources, instructions, messageId, memoryLength) {
17
18
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
18
- const authToken = isProd ? session._access_token : this.authToken;
19
- const response = yield this.apiService.inference(authToken, userInput, sources);
19
+ const authToken = isProd ? request.session._access_token : this.authToken;
20
+ if (isDev) {
21
+ return this.getTestInference(request, instructions, sources);
22
+ }
23
+ if (!instructions) {
24
+ return this.getInferenceV1(authToken, request, sources);
25
+ }
26
+ return this.getInferenceV2(authToken, sources, instructions, messageId, memoryLength);
27
+ });
28
+ }
29
+ getTestInference(request, instructions, sources) {
30
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
31
+ const messages = [{ role: 'human', content: request.input.data }];
32
+ const response = yield this.apiService.testInference(request.session._access_token, instructions, messages, sources);
33
+ return this.mapApiResponse(response);
34
+ });
35
+ }
36
+ getInferenceV1(authToken, request, sources) {
37
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
38
+ const response = yield this.apiService.inferenceV1(authToken, request.input.data, sources);
20
39
  return {
21
40
  inferenceId: response.data.inference_id,
22
- question: response.data.question,
23
41
  answer: response.data.answer,
24
42
  hasKnowledge: response.data.has_knowledge,
25
- isFaithuful: response.data.is_faithful,
43
+ isFaithful: response.data.is_faithful,
26
44
  chunkIds: response.data.chunk_ids,
27
45
  };
28
46
  });
29
47
  }
48
+ getInferenceV2(authToken, sources, instructions, messageId, memoryLength) {
49
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
50
+ const response = yield this.apiService.inferenceV2(authToken, sources, instructions, messageId, memoryLength);
51
+ return this.mapApiResponse(response);
52
+ });
53
+ }
54
+ mapApiResponse(response) {
55
+ return {
56
+ inferenceId: response.data.inference_id,
57
+ chunkIds: response.data.chunks.map(chunk => chunk.id),
58
+ hasKnowledge: response.data.has_knowledge,
59
+ isFaithful: response.data.is_faithful,
60
+ answer: response.data.answer,
61
+ };
62
+ }
30
63
  }
31
64
  exports.default = BotonicPluginKnowledgeBases;
32
65
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAEA,mFAAmE;AAGnE,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAA;AAEpD,MAAqB,2BAA2B;IAI9C,YAAY,OAAmC;QAC7C,IAAI,CAAC,UAAU,GAAG,IAAI,iDAAiB,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;QACtE,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,EAAE,CAAA;IAC1C,CAAC;IAEK,GAAG,CAAC,QAA0B;;YAClC,OAAM;QACR,CAAC;KAAA;IAEK,YAAY,CAChB,OAAgB,EAChB,SAAiB,EACjB,OAAiB;;YAEjB,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAA;YAEjE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAC9C,SAAS,EACT,SAAS,EACT,OAAO,CACR,CAAA;YAED,OAAO;gBACL,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC,YAAY;gBACvC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ;gBAChC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM;gBAC5B,YAAY,EAAE,QAAQ,CAAC,IAAI,CAAC,aAAa;gBACzC,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC,WAAW;gBACtC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,SAAS;aAClC,CAAA;QACH,CAAC;KAAA;CACF;AAnCD,8CAmCC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -5,9 +5,12 @@ export interface PluginKnowledgeBaseOptions {
5
5
  }
6
6
  export interface KnowledgeBaseResponse {
7
7
  inferenceId: string;
8
- question: string;
9
- answer: string;
10
8
  hasKnowledge: boolean;
11
- isFaithuful: boolean;
9
+ isFaithful: boolean;
12
10
  chunkIds: string[];
11
+ answer: string;
12
+ }
13
+ export interface Chunk {
14
+ id: string;
15
+ text: string;
13
16
  }
@@ -1,9 +1,20 @@
1
1
  import { AxiosResponse } from 'axios';
2
+ import { Chunk } from './types';
3
+ export interface HtApiKnowledgeBaseResponse {
4
+ inference_id: string;
5
+ query: string;
6
+ chunks: Chunk[];
7
+ has_knowledge: boolean;
8
+ is_faithful: boolean;
9
+ answer: string;
10
+ }
2
11
  export declare class HubtypeApiService {
3
12
  private host;
4
13
  private timeout;
5
14
  constructor(host: string, timeout?: number);
6
- inference(authToken: string, question: string, sources: string[]): Promise<AxiosResponse<{
15
+ inferenceV2(authToken: string, sources: string[], instructions: string, messageId: string, memoryLength: number): Promise<AxiosResponse<HtApiKnowledgeBaseResponse>>;
16
+ testInference(authToken: string, instructions: string, messages: any[], sources: string[]): Promise<AxiosResponse<HtApiKnowledgeBaseResponse>>;
17
+ inferenceV1(authToken: string, question: string, sources: string[]): Promise<AxiosResponse<{
7
18
  inference_id: string;
8
19
  question: string;
9
20
  answer: string;
@@ -7,7 +7,44 @@ export class HubtypeApiService {
7
7
  this.host = host;
8
8
  this.timeout = timeout || DEFAULT_TIMEOUT;
9
9
  }
10
- inference(authToken, question, sources) {
10
+ inferenceV2(authToken, sources, instructions, messageId, memoryLength) {
11
+ return __awaiter(this, void 0, void 0, function* () {
12
+ return yield axios({
13
+ method: 'POST',
14
+ url: `${this.host}/external/v2/ai/knowledge_base/inference/`,
15
+ headers: {
16
+ Authorization: `Bearer ${authToken}`,
17
+ 'Content-Type': 'application/json',
18
+ },
19
+ data: {
20
+ sources,
21
+ instructions,
22
+ message: messageId,
23
+ memory_length: memoryLength,
24
+ },
25
+ timeout: this.timeout,
26
+ });
27
+ });
28
+ }
29
+ testInference(authToken, instructions, messages, sources) {
30
+ return __awaiter(this, void 0, void 0, function* () {
31
+ return yield axios({
32
+ method: 'POST',
33
+ url: `${this.host}/external/v1/ai/knowledge_base/test/`,
34
+ headers: {
35
+ Authorization: `Bearer ${authToken}`,
36
+ 'Content-Type': 'application/json',
37
+ },
38
+ data: {
39
+ sources,
40
+ instructions,
41
+ messages,
42
+ },
43
+ timeout: this.timeout,
44
+ });
45
+ });
46
+ }
47
+ inferenceV1(authToken, question, sources) {
11
48
  return __awaiter(this, void 0, void 0, function* () {
12
49
  return yield axios({
13
50
  method: 'POST',
@@ -1 +1 @@
1
- {"version":3,"file":"hubtype-knowledge-api-service.js","sourceRoot":"","sources":["../../src/hubtype-knowledge-api-service.ts"],"names":[],"mappings":";AAAA,yDAAyD;AACzD,OAAO,KAAwB,MAAM,OAAO,CAAA;AAE5C,MAAM,eAAe,GAAG,KAAK,CAAA;AAE7B,MAAM,OAAO,iBAAiB;IAI5B,YAAY,IAAY,EAAE,OAAgB;QACxC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,eAAe,CAAA;IAC3C,CAAC;IAEK,SAAS,CACb,SAAiB,EACjB,QAAgB,EAChB,OAAiB;;YAWjB,OAAO,MAAM,KAAK,CAAC;gBACjB,MAAM,EAAE,MAAM;gBACd,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,2CAA2C;gBAC5D,OAAO,EAAE;oBACP,aAAa,EAAE,UAAU,SAAS,EAAE;oBACpC,cAAc,EAAE,kBAAkB;iBACnC;gBACD,IAAI,EAAE;oBACJ,QAAQ;oBACR,OAAO;iBACR;gBACD,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB,CAAC,CAAA;QACJ,CAAC;KAAA;CACF"}
1
+ {"version":3,"file":"hubtype-knowledge-api-service.js","sourceRoot":"","sources":["../../src/hubtype-knowledge-api-service.ts"],"names":[],"mappings":";AAAA,yDAAyD;AACzD,OAAO,KAAwB,MAAM,OAAO,CAAA;AAI5C,MAAM,eAAe,GAAG,KAAK,CAAA;AAU7B,MAAM,OAAO,iBAAiB;IAI5B,YAAY,IAAY,EAAE,OAAgB;QACxC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,eAAe,CAAA;IAC3C,CAAC;IAEK,WAAW,CACf,SAAiB,EACjB,OAAiB,EACjB,YAAoB,EACpB,SAAiB,EACjB,YAAoB;;YAEpB,OAAO,MAAM,KAAK,CAAC;gBACjB,MAAM,EAAE,MAAM;gBACd,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,2CAA2C;gBAC5D,OAAO,EAAE;oBACP,aAAa,EAAE,UAAU,SAAS,EAAE;oBACpC,cAAc,EAAE,kBAAkB;iBACnC;gBACD,IAAI,EAAE;oBACJ,OAAO;oBACP,YAAY;oBACZ,OAAO,EAAE,SAAS;oBAClB,aAAa,EAAE,YAAY;iBAC5B;gBACD,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB,CAAC,CAAA;QACJ,CAAC;KAAA;IAEK,aAAa,CACjB,SAAiB,EACjB,YAAoB,EACpB,QAAe,EACf,OAAiB;;YAEjB,OAAO,MAAM,KAAK,CAAC;gBACjB,MAAM,EAAE,MAAM;gBACd,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,sCAAsC;gBACvD,OAAO,EAAE;oBACP,aAAa,EAAE,UAAU,SAAS,EAAE;oBACpC,cAAc,EAAE,kBAAkB;iBACnC;gBACD,IAAI,EAAE;oBACJ,OAAO;oBACP,YAAY;oBACZ,QAAQ;iBACT;gBACD,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB,CAAC,CAAA;QACJ,CAAC;KAAA;IAEK,WAAW,CACf,SAAiB,EACjB,QAAgB,EAChB,OAAiB;;YAWjB,OAAO,MAAM,KAAK,CAAC;gBACjB,MAAM,EAAE,MAAM;gBACd,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,2CAA2C;gBAC5D,OAAO,EAAE;oBACP,aAAa,EAAE,UAAU,SAAS,EAAE;oBACpC,cAAc,EAAE,kBAAkB;iBACnC;gBACD,IAAI,EAAE;oBACJ,QAAQ;oBACR,OAAO;iBACR;gBACD,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB,CAAC,CAAA;QACJ,CAAC;KAAA;CACF"}
@@ -1,10 +1,14 @@
1
- import type { Plugin, PluginPreRequest, Session } from '@botonic/core';
1
+ import type { BotRequest, Plugin, PluginPreRequest } from '@botonic/core';
2
2
  import { KnowledgeBaseResponse, PluginKnowledgeBaseOptions } from './types';
3
3
  export default class BotonicPluginKnowledgeBases implements Plugin {
4
4
  private readonly apiService;
5
5
  private readonly authToken;
6
6
  constructor(options: PluginKnowledgeBaseOptions);
7
7
  pre(_request: PluginPreRequest): Promise<void>;
8
- getInference(session: Session, userInput: string, sources: string[]): Promise<KnowledgeBaseResponse>;
8
+ getInference(request: BotRequest, sources: string[], instructions: string, messageId: string, memoryLength: number): Promise<KnowledgeBaseResponse>;
9
+ getTestInference(request: BotRequest, instructions: string, sources: string[]): Promise<KnowledgeBaseResponse>;
10
+ getInferenceV1(authToken: string, request: BotRequest, sources: string[]): Promise<KnowledgeBaseResponse>;
11
+ getInferenceV2(authToken: string, sources: string[], instructions: string, messageId: string, memoryLength: number): Promise<KnowledgeBaseResponse>;
12
+ private mapApiResponse;
9
13
  }
10
14
  export { PluginKnowledgeBaseOptions } from './types';
package/lib/esm/index.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { __awaiter } from "tslib";
2
- import { HubtypeApiService } from './hubtype-knowledge-api-service';
2
+ import { HubtypeApiService, } from './hubtype-knowledge-api-service';
3
3
  const isProd = process.env.NODE_ENV === 'production';
4
+ const isDev = process.env.NODE_ENV === 'development';
4
5
  export default class BotonicPluginKnowledgeBases {
5
6
  constructor(options) {
6
7
  this.apiService = new HubtypeApiService(options.host, options.timeout);
@@ -11,19 +12,51 @@ export default class BotonicPluginKnowledgeBases {
11
12
  return;
12
13
  });
13
14
  }
14
- getInference(session, userInput, sources) {
15
+ getInference(request, sources, instructions, messageId, memoryLength) {
15
16
  return __awaiter(this, void 0, void 0, function* () {
16
- const authToken = isProd ? session._access_token : this.authToken;
17
- const response = yield this.apiService.inference(authToken, userInput, sources);
17
+ const authToken = isProd ? request.session._access_token : this.authToken;
18
+ if (isDev) {
19
+ return this.getTestInference(request, instructions, sources);
20
+ }
21
+ if (!instructions) {
22
+ return this.getInferenceV1(authToken, request, sources);
23
+ }
24
+ return this.getInferenceV2(authToken, sources, instructions, messageId, memoryLength);
25
+ });
26
+ }
27
+ getTestInference(request, instructions, sources) {
28
+ return __awaiter(this, void 0, void 0, function* () {
29
+ const messages = [{ role: 'human', content: request.input.data }];
30
+ const response = yield this.apiService.testInference(request.session._access_token, instructions, messages, sources);
31
+ return this.mapApiResponse(response);
32
+ });
33
+ }
34
+ getInferenceV1(authToken, request, sources) {
35
+ return __awaiter(this, void 0, void 0, function* () {
36
+ const response = yield this.apiService.inferenceV1(authToken, request.input.data, sources);
18
37
  return {
19
38
  inferenceId: response.data.inference_id,
20
- question: response.data.question,
21
39
  answer: response.data.answer,
22
40
  hasKnowledge: response.data.has_knowledge,
23
- isFaithuful: response.data.is_faithful,
41
+ isFaithful: response.data.is_faithful,
24
42
  chunkIds: response.data.chunk_ids,
25
43
  };
26
44
  });
27
45
  }
46
+ getInferenceV2(authToken, sources, instructions, messageId, memoryLength) {
47
+ return __awaiter(this, void 0, void 0, function* () {
48
+ const response = yield this.apiService.inferenceV2(authToken, sources, instructions, messageId, memoryLength);
49
+ return this.mapApiResponse(response);
50
+ });
51
+ }
52
+ mapApiResponse(response) {
53
+ return {
54
+ inferenceId: response.data.inference_id,
55
+ chunkIds: response.data.chunks.map(chunk => chunk.id),
56
+ hasKnowledge: response.data.has_knowledge,
57
+ isFaithful: response.data.is_faithful,
58
+ answer: response.data.answer,
59
+ };
60
+ }
28
61
  }
29
62
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAGnE,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAA;AAEpD,MAAM,CAAC,OAAO,OAAO,2BAA2B;IAI9C,YAAY,OAAmC;QAC7C,IAAI,CAAC,UAAU,GAAG,IAAI,iBAAiB,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;QACtE,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,EAAE,CAAA;IAC1C,CAAC;IAEK,GAAG,CAAC,QAA0B;;YAClC,OAAM;QACR,CAAC;KAAA;IAEK,YAAY,CAChB,OAAgB,EAChB,SAAiB,EACjB,OAAiB;;YAEjB,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAA;YAEjE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAC9C,SAAS,EACT,SAAS,EACT,OAAO,CACR,CAAA;YAED,OAAO;gBACL,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC,YAAY;gBACvC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ;gBAChC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM;gBAC5B,YAAY,EAAE,QAAQ,CAAC,IAAI,CAAC,aAAa;gBACzC,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC,WAAW;gBACtC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,SAAS;aAClC,CAAA;QACH,CAAC;KAAA;CACF"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -5,9 +5,12 @@ export interface PluginKnowledgeBaseOptions {
5
5
  }
6
6
  export interface KnowledgeBaseResponse {
7
7
  inferenceId: string;
8
- question: string;
9
- answer: string;
10
8
  hasKnowledge: boolean;
11
- isFaithuful: boolean;
9
+ isFaithful: boolean;
12
10
  chunkIds: string[];
11
+ answer: string;
12
+ }
13
+ export interface Chunk {
14
+ id: string;
15
+ text: string;
13
16
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@botonic/plugin-knowledge-bases",
3
- "version": "0.32.0",
3
+ "version": "0.33.0-alpha.1",
4
4
  "description": "Use a Hubtype to make the bot respond through a knowledge base.",
5
5
  "main": "./lib/cjs/index.js",
6
6
  "module": "./lib/esm/index.js",
@@ -1,8 +1,18 @@
1
1
  /* eslint-disable @typescript-eslint/naming-convention */
2
2
  import axios, { AxiosResponse } from 'axios'
3
3
 
4
+ import { Chunk } from './types'
5
+
4
6
  const DEFAULT_TIMEOUT = 10000
5
7
 
8
+ export interface HtApiKnowledgeBaseResponse {
9
+ inference_id: string
10
+ query: string
11
+ chunks: Chunk[]
12
+ has_knowledge: boolean
13
+ is_faithful: boolean
14
+ answer: string
15
+ }
6
16
  export class HubtypeApiService {
7
17
  private host: string
8
18
  private timeout: number
@@ -12,7 +22,53 @@ export class HubtypeApiService {
12
22
  this.timeout = timeout || DEFAULT_TIMEOUT
13
23
  }
14
24
 
15
- async inference(
25
+ async inferenceV2(
26
+ authToken: string,
27
+ sources: string[],
28
+ instructions: string,
29
+ messageId: string,
30
+ memoryLength: number
31
+ ): Promise<AxiosResponse<HtApiKnowledgeBaseResponse>> {
32
+ return await axios({
33
+ method: 'POST',
34
+ url: `${this.host}/external/v2/ai/knowledge_base/inference/`,
35
+ headers: {
36
+ Authorization: `Bearer ${authToken}`,
37
+ 'Content-Type': 'application/json',
38
+ },
39
+ data: {
40
+ sources,
41
+ instructions,
42
+ message: messageId,
43
+ memory_length: memoryLength,
44
+ },
45
+ timeout: this.timeout,
46
+ })
47
+ }
48
+
49
+ async testInference(
50
+ authToken: string,
51
+ instructions: string,
52
+ messages: any[],
53
+ sources: string[]
54
+ ): Promise<AxiosResponse<HtApiKnowledgeBaseResponse>> {
55
+ return await axios({
56
+ method: 'POST',
57
+ url: `${this.host}/external/v1/ai/knowledge_base/test/`,
58
+ headers: {
59
+ Authorization: `Bearer ${authToken}`,
60
+ 'Content-Type': 'application/json',
61
+ },
62
+ data: {
63
+ sources,
64
+ instructions,
65
+ messages,
66
+ },
67
+ timeout: this.timeout,
68
+ })
69
+ }
70
+
71
+ async inferenceV1(
16
72
  authToken: string,
17
73
  question: string,
18
74
  sources: string[]
package/src/index.ts CHANGED
@@ -1,9 +1,14 @@
1
- import type { Plugin, PluginPreRequest, Session } from '@botonic/core'
1
+ import type { BotRequest, Plugin, PluginPreRequest } from '@botonic/core'
2
+ import { AxiosResponse } from 'axios'
2
3
 
3
- import { HubtypeApiService } from './hubtype-knowledge-api-service'
4
+ import {
5
+ HtApiKnowledgeBaseResponse,
6
+ HubtypeApiService,
7
+ } from './hubtype-knowledge-api-service'
4
8
  import { KnowledgeBaseResponse, PluginKnowledgeBaseOptions } from './types'
5
9
 
6
10
  const isProd = process.env.NODE_ENV === 'production'
11
+ const isDev = process.env.NODE_ENV === 'development'
7
12
 
8
13
  export default class BotonicPluginKnowledgeBases implements Plugin {
9
14
  private readonly apiService: HubtypeApiService
@@ -19,27 +24,96 @@ export default class BotonicPluginKnowledgeBases implements Plugin {
19
24
  }
20
25
 
21
26
  async getInference(
22
- session: Session,
23
- userInput: string,
24
- sources: string[]
27
+ request: BotRequest,
28
+ sources: string[],
29
+ instructions: string,
30
+ messageId: string,
31
+ memoryLength: number
25
32
  ): Promise<KnowledgeBaseResponse> {
26
- const authToken = isProd ? session._access_token : this.authToken
33
+ const authToken = isProd ? request.session._access_token : this.authToken
34
+
35
+ if (isDev) {
36
+ return this.getTestInference(request, instructions, sources)
37
+ }
38
+
39
+ if (!instructions) {
40
+ return this.getInferenceV1(authToken, request, sources)
41
+ }
27
42
 
28
- const response = await this.apiService.inference(
43
+ return this.getInferenceV2(
29
44
  authToken,
30
- userInput,
45
+ sources,
46
+ instructions,
47
+ messageId,
48
+ memoryLength
49
+ )
50
+ }
51
+
52
+ async getTestInference(
53
+ request: BotRequest,
54
+ instructions: string,
55
+ sources: string[]
56
+ ): Promise<KnowledgeBaseResponse> {
57
+ const messages = [{ role: 'human', content: request.input.data }]
58
+
59
+ const response = await this.apiService.testInference(
60
+ request.session._access_token,
61
+ instructions,
62
+ messages,
31
63
  sources
32
64
  )
33
65
 
66
+ return this.mapApiResponse(response)
67
+ }
68
+
69
+ async getInferenceV1(
70
+ authToken: string,
71
+ request: BotRequest,
72
+ sources: string[]
73
+ ): Promise<KnowledgeBaseResponse> {
74
+ const response = await this.apiService.inferenceV1(
75
+ authToken,
76
+ request.input.data!,
77
+ sources
78
+ )
34
79
  return {
35
80
  inferenceId: response.data.inference_id,
36
- question: response.data.question,
37
81
  answer: response.data.answer,
38
82
  hasKnowledge: response.data.has_knowledge,
39
- isFaithuful: response.data.is_faithful,
83
+ isFaithful: response.data.is_faithful,
40
84
  chunkIds: response.data.chunk_ids,
41
85
  }
42
86
  }
87
+
88
+ async getInferenceV2(
89
+ authToken: string,
90
+ sources: string[],
91
+ instructions: string,
92
+ messageId: string,
93
+ memoryLength: number
94
+ ): Promise<KnowledgeBaseResponse> {
95
+ const response = await this.apiService.inferenceV2(
96
+ authToken,
97
+ sources,
98
+ instructions,
99
+ messageId,
100
+ memoryLength
101
+ )
102
+
103
+ return this.mapApiResponse(response)
104
+ }
105
+
106
+ private mapApiResponse(
107
+ response: AxiosResponse<HtApiKnowledgeBaseResponse>
108
+ ): KnowledgeBaseResponse {
109
+ return {
110
+ inferenceId: response.data.inference_id,
111
+ chunkIds: response.data.chunks.map(chunk => chunk.id),
112
+ hasKnowledge: response.data.has_knowledge,
113
+ isFaithful: response.data.is_faithful,
114
+ answer: response.data.answer,
115
+ }
116
+ }
43
117
  }
44
118
 
45
119
  export { PluginKnowledgeBaseOptions } from './types'
package/src/types.ts CHANGED
@@ -6,9 +6,13 @@ export interface PluginKnowledgeBaseOptions {
6
6
 
7
7
  export interface KnowledgeBaseResponse {
8
8
  inferenceId: string
9
- question: string
10
- answer: string
11
9
  hasKnowledge: boolean
12
- isFaithuful: boolean
10
+ isFaithful: boolean
13
11
  chunkIds: string[]
12
+ answer: string
13
+ }
14
+
15
+ export interface Chunk {
16
+ id: string
17
+ text: string
14
18
  }