@fonoster/autopilot 0.7.32 → 0.7.35
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.
- package/README.md +27 -3
- package/dist/assistants/AssistantSchema.d.ts +18 -18
- package/dist/createLanguageModel.d.ts +2 -2
- package/dist/handleVoiceRequest.js +2 -2
- package/dist/knowledge/AbstractKnowledgeBase.d.ts +2 -1
- package/dist/knowledge/AbstractKnowledgeBase.js +18 -3
- package/dist/knowledge/FilesKnowledgeBase.d.ts +2 -1
- package/dist/knowledge/FilesKnowledgeBase.js +3 -16
- package/dist/knowledge/S3KnowledgeBase.d.ts +10 -0
- package/dist/knowledge/S3KnowledgeBase.js +44 -0
- package/dist/knowledge/index.d.ts +3 -0
- package/dist/knowledge/index.js +5 -2
- package/dist/knowledge/loadKnowledgeBaseFromFiles.d.ts +3 -0
- package/dist/{loadKnowledgeBaseFromFile.js → knowledge/loadKnowledgeBaseFromFiles.js} +4 -4
- package/dist/knowledge/loadKnowledgeBaseFromS3.d.ts +3 -0
- package/dist/knowledge/loadKnowledgeBaseFromS3.js +27 -0
- package/dist/knowledge/types.d.ts +19 -1
- package/package.json +7 -6
- package/dist/loadKnowledgeBaseFromFile.d.ts +0 -3
package/README.md
CHANGED
|
@@ -94,7 +94,30 @@ The Autopilot supports multiple language model providers. The following is a lis
|
|
|
94
94
|
|
|
95
95
|
## Adding Knowledge Base
|
|
96
96
|
|
|
97
|
-
|
|
97
|
+
A knowledge base provides information to the language model, such as business hours, services, or products.
|
|
98
|
+
|
|
99
|
+
Currently, we support retrieving documents from an S3 bucket.
|
|
100
|
+
|
|
101
|
+
To add a knowledge base, include a new entry in the `knowledgeBase` array in the configuration file. Below is an example of a knowledge for a menu PDF.
|
|
102
|
+
|
|
103
|
+
```json
|
|
104
|
+
{
|
|
105
|
+
"conversationSettings": { ... },
|
|
106
|
+
"languageModel": {
|
|
107
|
+
"provider": "openai",
|
|
108
|
+
"model": "gpt-4o-mini",
|
|
109
|
+
"apiKey": "your-api-key",
|
|
110
|
+
"maxTokens": 100,
|
|
111
|
+
"temperature": 0.4,
|
|
112
|
+
"knowledgeBase": [{
|
|
113
|
+
"type": "s3",
|
|
114
|
+
"title": "Menu PDF",
|
|
115
|
+
"document": "sample.pdf"
|
|
116
|
+
}],
|
|
117
|
+
"tools": []
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
```
|
|
98
121
|
|
|
99
122
|
## Adding Tools
|
|
100
123
|
|
|
@@ -108,8 +131,9 @@ You can configure a new tool by adding a new entry in the `tools` array in the c
|
|
|
108
131
|
"languageModel": {
|
|
109
132
|
"provider": "openai",
|
|
110
133
|
"model": "gpt-4o-mini",
|
|
111
|
-
"
|
|
112
|
-
"
|
|
134
|
+
"apiKey": "your-api-key",
|
|
135
|
+
"maxTokens": 100,
|
|
136
|
+
"temperature": 0.4,
|
|
113
137
|
"knowledgeBase": [],
|
|
114
138
|
"tools": [
|
|
115
139
|
{
|
|
@@ -227,7 +227,10 @@ declare const languageModelConfigSchema: z.ZodObject<{
|
|
|
227
227
|
requestStartMessage?: string | undefined;
|
|
228
228
|
}>, "many">;
|
|
229
229
|
}, "strip", z.ZodTypeAny, {
|
|
230
|
+
provider: LANGUAGE_MODEL_PROVIDER;
|
|
230
231
|
model: string;
|
|
232
|
+
temperature: number;
|
|
233
|
+
maxTokens: number;
|
|
231
234
|
knowledgeBase: {
|
|
232
235
|
type: "s3" | "file";
|
|
233
236
|
url: string;
|
|
@@ -253,13 +256,13 @@ declare const languageModelConfigSchema: z.ZodObject<{
|
|
|
253
256
|
};
|
|
254
257
|
requestStartMessage?: string | undefined;
|
|
255
258
|
}[];
|
|
256
|
-
temperature: number;
|
|
257
|
-
maxTokens: number;
|
|
258
|
-
provider: LANGUAGE_MODEL_PROVIDER;
|
|
259
259
|
apiKey?: string | undefined;
|
|
260
260
|
baseUrl?: string | undefined;
|
|
261
261
|
}, {
|
|
262
|
+
provider: LANGUAGE_MODEL_PROVIDER;
|
|
262
263
|
model: string;
|
|
264
|
+
temperature: number;
|
|
265
|
+
maxTokens: number;
|
|
263
266
|
knowledgeBase: {
|
|
264
267
|
type: "s3" | "file";
|
|
265
268
|
url: string;
|
|
@@ -285,9 +288,6 @@ declare const languageModelConfigSchema: z.ZodObject<{
|
|
|
285
288
|
};
|
|
286
289
|
requestStartMessage?: string | undefined;
|
|
287
290
|
}[];
|
|
288
|
-
temperature: number;
|
|
289
|
-
maxTokens: number;
|
|
290
|
-
provider: LANGUAGE_MODEL_PROVIDER;
|
|
291
291
|
apiKey?: string | undefined;
|
|
292
292
|
baseUrl?: string | undefined;
|
|
293
293
|
}>;
|
|
@@ -519,7 +519,10 @@ declare const assistantSchema: z.ZodObject<{
|
|
|
519
519
|
requestStartMessage?: string | undefined;
|
|
520
520
|
}>, "many">;
|
|
521
521
|
}, "strip", z.ZodTypeAny, {
|
|
522
|
+
provider: LANGUAGE_MODEL_PROVIDER;
|
|
522
523
|
model: string;
|
|
524
|
+
temperature: number;
|
|
525
|
+
maxTokens: number;
|
|
523
526
|
knowledgeBase: {
|
|
524
527
|
type: "s3" | "file";
|
|
525
528
|
url: string;
|
|
@@ -545,13 +548,13 @@ declare const assistantSchema: z.ZodObject<{
|
|
|
545
548
|
};
|
|
546
549
|
requestStartMessage?: string | undefined;
|
|
547
550
|
}[];
|
|
548
|
-
temperature: number;
|
|
549
|
-
maxTokens: number;
|
|
550
|
-
provider: LANGUAGE_MODEL_PROVIDER;
|
|
551
551
|
apiKey?: string | undefined;
|
|
552
552
|
baseUrl?: string | undefined;
|
|
553
553
|
}, {
|
|
554
|
+
provider: LANGUAGE_MODEL_PROVIDER;
|
|
554
555
|
model: string;
|
|
556
|
+
temperature: number;
|
|
557
|
+
maxTokens: number;
|
|
555
558
|
knowledgeBase: {
|
|
556
559
|
type: "s3" | "file";
|
|
557
560
|
url: string;
|
|
@@ -577,9 +580,6 @@ declare const assistantSchema: z.ZodObject<{
|
|
|
577
580
|
};
|
|
578
581
|
requestStartMessage?: string | undefined;
|
|
579
582
|
}[];
|
|
580
|
-
temperature: number;
|
|
581
|
-
maxTokens: number;
|
|
582
|
-
provider: LANGUAGE_MODEL_PROVIDER;
|
|
583
583
|
apiKey?: string | undefined;
|
|
584
584
|
baseUrl?: string | undefined;
|
|
585
585
|
}>;
|
|
@@ -609,7 +609,10 @@ declare const assistantSchema: z.ZodObject<{
|
|
|
609
609
|
} | undefined;
|
|
610
610
|
};
|
|
611
611
|
languageModel: {
|
|
612
|
+
provider: LANGUAGE_MODEL_PROVIDER;
|
|
612
613
|
model: string;
|
|
614
|
+
temperature: number;
|
|
615
|
+
maxTokens: number;
|
|
613
616
|
knowledgeBase: {
|
|
614
617
|
type: "s3" | "file";
|
|
615
618
|
url: string;
|
|
@@ -635,9 +638,6 @@ declare const assistantSchema: z.ZodObject<{
|
|
|
635
638
|
};
|
|
636
639
|
requestStartMessage?: string | undefined;
|
|
637
640
|
}[];
|
|
638
|
-
temperature: number;
|
|
639
|
-
maxTokens: number;
|
|
640
|
-
provider: LANGUAGE_MODEL_PROVIDER;
|
|
641
641
|
apiKey?: string | undefined;
|
|
642
642
|
baseUrl?: string | undefined;
|
|
643
643
|
};
|
|
@@ -667,7 +667,10 @@ declare const assistantSchema: z.ZodObject<{
|
|
|
667
667
|
} | undefined;
|
|
668
668
|
};
|
|
669
669
|
languageModel: {
|
|
670
|
+
provider: LANGUAGE_MODEL_PROVIDER;
|
|
670
671
|
model: string;
|
|
672
|
+
temperature: number;
|
|
673
|
+
maxTokens: number;
|
|
671
674
|
knowledgeBase: {
|
|
672
675
|
type: "s3" | "file";
|
|
673
676
|
url: string;
|
|
@@ -693,9 +696,6 @@ declare const assistantSchema: z.ZodObject<{
|
|
|
693
696
|
};
|
|
694
697
|
requestStartMessage?: string | undefined;
|
|
695
698
|
}[];
|
|
696
|
-
temperature: number;
|
|
697
|
-
maxTokens: number;
|
|
698
|
-
provider: LANGUAGE_MODEL_PROVIDER;
|
|
699
699
|
apiKey?: string | undefined;
|
|
700
700
|
baseUrl?: string | undefined;
|
|
701
701
|
};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { AssistantConfig,
|
|
1
|
+
import { AssistantConfig, KnowledgeBase, TelephonyContext, Voice } from ".";
|
|
2
2
|
declare function createLanguageModel(params: {
|
|
3
3
|
voice: Voice;
|
|
4
4
|
assistantConfig: AssistantConfig;
|
|
5
|
-
knowledgeBase:
|
|
5
|
+
knowledgeBase: KnowledgeBase;
|
|
6
6
|
telephonyContext: TelephonyContext;
|
|
7
7
|
}): import("./models/AbstractLanguageModel").AbstractLanguageModel;
|
|
8
8
|
export { createLanguageModel };
|
|
@@ -56,7 +56,6 @@ const common_1 = require("@fonoster/common");
|
|
|
56
56
|
const logger_1 = require("@fonoster/logger");
|
|
57
57
|
const createLanguageModel_1 = require("./createLanguageModel");
|
|
58
58
|
const loadAssistantConfigFromFile_1 = require("./loadAssistantConfigFromFile");
|
|
59
|
-
const loadKnowledgeBaseFromFile_1 = require("./loadKnowledgeBaseFromFile");
|
|
60
59
|
const _1 = __importStar(require("."));
|
|
61
60
|
const logger = (0, logger_1.getLogger)({ service: "autopilot", filePath: __filename });
|
|
62
61
|
async function handleVoiceRequest(req, res) {
|
|
@@ -68,7 +67,8 @@ async function handleVoiceRequest(req, res) {
|
|
|
68
67
|
metadata: req.metadata
|
|
69
68
|
});
|
|
70
69
|
const assistantConfig = (0, loadAssistantConfigFromFile_1.loadAssistantConfigFromFile)(`${process.cwd()}/config/assistant.json`);
|
|
71
|
-
const knowledgeBase = await (
|
|
70
|
+
// const knowledgeBase = await loadKnowledgeBaseFromS3(["sample.pdf"]);
|
|
71
|
+
const knowledgeBase = await (0, _1.loadKnowledgeBaseFromFiles)(`${process.cwd()}/config/sample.pdf`);
|
|
72
72
|
const voice = new _1.VoiceImpl(sessionRef, res);
|
|
73
73
|
const languageModel = (0, createLanguageModel_1.createLanguageModel)({
|
|
74
74
|
voice,
|
|
@@ -7,7 +7,8 @@ declare abstract class AbstractKnowledgeBase implements KnowledgeBase {
|
|
|
7
7
|
constructor(params?: {
|
|
8
8
|
embeddings?: Embeddings;
|
|
9
9
|
});
|
|
10
|
-
abstract
|
|
10
|
+
abstract getLoaders(): Promise<unknown>;
|
|
11
|
+
load(): Promise<void>;
|
|
11
12
|
queryKnowledgeBase(query: string, k?: number): Promise<string>;
|
|
12
13
|
}
|
|
13
14
|
export { AbstractKnowledgeBase };
|
|
@@ -2,16 +2,31 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.AbstractKnowledgeBase = void 0;
|
|
4
4
|
const openai_1 = require("@langchain/openai");
|
|
5
|
+
const text_splitter_1 = require("langchain/text_splitter");
|
|
6
|
+
const memory_1 = require("langchain/vectorstores/memory");
|
|
5
7
|
class AbstractKnowledgeBase {
|
|
6
8
|
constructor(params) {
|
|
7
9
|
this.embeddings = params?.embeddings || new openai_1.OpenAIEmbeddings();
|
|
8
10
|
}
|
|
11
|
+
async load() {
|
|
12
|
+
const loaders = (await this.getLoaders());
|
|
13
|
+
if (loaders.length === 0) {
|
|
14
|
+
throw new Error("No files provided");
|
|
15
|
+
}
|
|
16
|
+
const loadedDocs = await Promise.all(loaders.map((loader) => loader.load()));
|
|
17
|
+
const textSplitter = new text_splitter_1.RecursiveCharacterTextSplitter({
|
|
18
|
+
chunkSize: 1000,
|
|
19
|
+
chunkOverlap: 200
|
|
20
|
+
});
|
|
21
|
+
const splitDocs = await Promise.all(loadedDocs.map((docs) => textSplitter.splitDocuments(docs)));
|
|
22
|
+
console.log("xxxx splitDocs", splitDocs);
|
|
23
|
+
this.vectorStore = await memory_1.MemoryVectorStore.fromDocuments(splitDocs.flat(), this.embeddings);
|
|
24
|
+
}
|
|
9
25
|
async queryKnowledgeBase(query, k = 2) {
|
|
10
|
-
|
|
11
|
-
if (!vectorStore) {
|
|
26
|
+
if (!this.vectorStore) {
|
|
12
27
|
throw new Error("Vector store is not initialized");
|
|
13
28
|
}
|
|
14
|
-
const results = await vectorStore.similaritySearch(query, k);
|
|
29
|
+
const results = await this.vectorStore.similaritySearch(query, k);
|
|
15
30
|
return results.join("\n");
|
|
16
31
|
}
|
|
17
32
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { PDFLoader } from "@langchain/community/document_loaders/fs/pdf";
|
|
1
2
|
import { Embeddings } from "@langchain/core/embeddings";
|
|
2
3
|
import { AbstractKnowledgeBase } from "./AbstractKnowledgeBase";
|
|
3
4
|
declare class FilesKnowledgeBase extends AbstractKnowledgeBase {
|
|
@@ -7,6 +8,6 @@ declare class FilesKnowledgeBase extends AbstractKnowledgeBase {
|
|
|
7
8
|
embeddings?: Embeddings;
|
|
8
9
|
files: string[];
|
|
9
10
|
});
|
|
10
|
-
|
|
11
|
+
getLoaders(): Promise<PDFLoader[]>;
|
|
11
12
|
}
|
|
12
13
|
export { FilesKnowledgeBase };
|
|
@@ -20,8 +20,6 @@ exports.FilesKnowledgeBase = void 0;
|
|
|
20
20
|
* limitations under the License.
|
|
21
21
|
*/
|
|
22
22
|
const pdf_1 = require("@langchain/community/document_loaders/fs/pdf");
|
|
23
|
-
const text_splitter_1 = require("langchain/text_splitter");
|
|
24
|
-
const memory_1 = require("langchain/vectorstores/memory");
|
|
25
23
|
const AbstractKnowledgeBase_1 = require("./AbstractKnowledgeBase");
|
|
26
24
|
class FilesKnowledgeBase extends AbstractKnowledgeBase_1.AbstractKnowledgeBase {
|
|
27
25
|
constructor(params) {
|
|
@@ -29,22 +27,11 @@ class FilesKnowledgeBase extends AbstractKnowledgeBase_1.AbstractKnowledgeBase {
|
|
|
29
27
|
this.params = params;
|
|
30
28
|
this.files = params?.files || [];
|
|
31
29
|
}
|
|
32
|
-
async
|
|
33
|
-
|
|
34
|
-
if (files.length === 0) {
|
|
35
|
-
throw new Error("No files provided");
|
|
36
|
-
}
|
|
37
|
-
else if (!files.every((file) => file.endsWith(".pdf"))) {
|
|
30
|
+
async getLoaders() {
|
|
31
|
+
if (!this.files.every((file) => file.endsWith(".pdf"))) {
|
|
38
32
|
throw new Error("Only PDF files are supported");
|
|
39
33
|
}
|
|
40
|
-
|
|
41
|
-
const loadedDocs = await Promise.all(loaders.map((loader) => loader.load()));
|
|
42
|
-
const textSplitter = new text_splitter_1.RecursiveCharacterTextSplitter({
|
|
43
|
-
chunkSize: 1000,
|
|
44
|
-
chunkOverlap: 200
|
|
45
|
-
});
|
|
46
|
-
const splitDocs = await Promise.all(loadedDocs.map((docs) => textSplitter.splitDocuments(docs)));
|
|
47
|
-
this.vectorStore = await memory_1.MemoryVectorStore.fromDocuments(splitDocs.flat(), this.embeddings);
|
|
34
|
+
return this.files.map((file) => new pdf_1.PDFLoader(file, { splitPages: false }));
|
|
48
35
|
}
|
|
49
36
|
}
|
|
50
37
|
exports.FilesKnowledgeBase = FilesKnowledgeBase;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { S3Loader } from "@langchain/community/document_loaders/web/s3";
|
|
2
|
+
import { AbstractKnowledgeBase } from "./AbstractKnowledgeBase";
|
|
3
|
+
import { S3KnowledgeBaseParams } from "./types";
|
|
4
|
+
declare class S3KnowledgeBase extends AbstractKnowledgeBase {
|
|
5
|
+
private params;
|
|
6
|
+
documents: string[];
|
|
7
|
+
constructor(params: S3KnowledgeBaseParams);
|
|
8
|
+
getLoaders(): Promise<S3Loader[]>;
|
|
9
|
+
}
|
|
10
|
+
export { S3KnowledgeBase };
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.S3KnowledgeBase = void 0;
|
|
4
|
+
/*
|
|
5
|
+
* Copyright (C) 2024 by Fonoster Inc (https://fonoster.com)
|
|
6
|
+
* http://github.com/fonoster/fonoster
|
|
7
|
+
*
|
|
8
|
+
* This file is part of Fonoster
|
|
9
|
+
*
|
|
10
|
+
* Licensed under the MIT License (the "License");
|
|
11
|
+
* you may not use this file except in compliance with
|
|
12
|
+
* the License. You may obtain a copy of the License at
|
|
13
|
+
*
|
|
14
|
+
* https://opensource.org/licenses/MIT
|
|
15
|
+
*
|
|
16
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
17
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
18
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
19
|
+
* See the License for the specific language governing permissions and
|
|
20
|
+
* limitations under the License.
|
|
21
|
+
*/
|
|
22
|
+
const s3_1 = require("@langchain/community/document_loaders/web/s3");
|
|
23
|
+
const AbstractKnowledgeBase_1 = require("./AbstractKnowledgeBase");
|
|
24
|
+
class S3KnowledgeBase extends AbstractKnowledgeBase_1.AbstractKnowledgeBase {
|
|
25
|
+
constructor(params) {
|
|
26
|
+
super(params);
|
|
27
|
+
this.params = params;
|
|
28
|
+
this.params = params;
|
|
29
|
+
}
|
|
30
|
+
async getLoaders() {
|
|
31
|
+
if (!this.documents.every((file) => file.endsWith(".pdf"))) {
|
|
32
|
+
throw new Error("Only PDF files are supported");
|
|
33
|
+
}
|
|
34
|
+
const { bucket, key, s3Config, unstructuredAPIURL, unstructuredAPIKey } = this.params;
|
|
35
|
+
return this.documents.map(() => new s3_1.S3Loader({
|
|
36
|
+
bucket,
|
|
37
|
+
key,
|
|
38
|
+
s3Config,
|
|
39
|
+
unstructuredAPIURL,
|
|
40
|
+
unstructuredAPIKey
|
|
41
|
+
}));
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
exports.S3KnowledgeBase = S3KnowledgeBase;
|
package/dist/knowledge/index.js
CHANGED
|
@@ -14,8 +14,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./AbstractKnowledgeBase"), exports);
|
|
18
|
-
__exportStar(require("./FilesKnowledgeBase"), exports);
|
|
19
17
|
/*
|
|
20
18
|
* Copyright (C) 2024 by Fonoster Inc (https://fonoster.com)
|
|
21
19
|
* http://github.com/fonoster/fonoster
|
|
@@ -34,4 +32,9 @@ __exportStar(require("./FilesKnowledgeBase"), exports);
|
|
|
34
32
|
* See the License for the specific language governing permissions and
|
|
35
33
|
* limitations under the License.
|
|
36
34
|
*/
|
|
35
|
+
__exportStar(require("./AbstractKnowledgeBase"), exports);
|
|
36
|
+
__exportStar(require("./FilesKnowledgeBase"), exports);
|
|
37
|
+
__exportStar(require("./S3KnowledgeBase"), exports);
|
|
38
|
+
__exportStar(require("./loadKnowledgeBaseFromFiles"), exports);
|
|
39
|
+
__exportStar(require("./loadKnowledgeBaseFromS3"), exports);
|
|
37
40
|
__exportStar(require("./types"), exports);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.loadKnowledgeBaseFromFiles = loadKnowledgeBaseFromFiles;
|
|
4
4
|
/*
|
|
5
5
|
* Copyright (C) 2024 by Fonoster Inc (https://fonoster.com)
|
|
6
6
|
* http://github.com/fonoster/fonoster
|
|
@@ -19,9 +19,9 @@ exports.loadKnowledgeBaseFromFile = loadKnowledgeBaseFromFile;
|
|
|
19
19
|
* See the License for the specific language governing permissions and
|
|
20
20
|
* limitations under the License.
|
|
21
21
|
*/
|
|
22
|
-
const
|
|
23
|
-
async function
|
|
24
|
-
const knowledgeBase = new
|
|
22
|
+
const __1 = require("..");
|
|
23
|
+
async function loadKnowledgeBaseFromFiles(pathToKnowledgeBase) {
|
|
24
|
+
const knowledgeBase = new __1.FilesKnowledgeBase({
|
|
25
25
|
files: [pathToKnowledgeBase]
|
|
26
26
|
});
|
|
27
27
|
await knowledgeBase.load();
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.loadKnowledgeBaseFromS3 = loadKnowledgeBaseFromS3;
|
|
4
|
+
/*
|
|
5
|
+
* Copyright (C) 2024 by Fonoster Inc (https://fonoster.com)
|
|
6
|
+
* http://github.com/fonoster/fonoster
|
|
7
|
+
*
|
|
8
|
+
* This file is part of Fonoster
|
|
9
|
+
*
|
|
10
|
+
* Licensed under the MIT License (the "License");
|
|
11
|
+
* you may not use this file except in compliance with
|
|
12
|
+
* the License. You may obtain a copy of the License at
|
|
13
|
+
*
|
|
14
|
+
* https://opensource.org/licenses/MIT
|
|
15
|
+
*
|
|
16
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
17
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
18
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
19
|
+
* See the License for the specific language governing permissions and
|
|
20
|
+
* limitations under the License.
|
|
21
|
+
*/
|
|
22
|
+
const _1 = require(".");
|
|
23
|
+
async function loadKnowledgeBaseFromS3(params) {
|
|
24
|
+
const knowledgeBase = new _1.S3KnowledgeBase(params);
|
|
25
|
+
await knowledgeBase.load();
|
|
26
|
+
return knowledgeBase;
|
|
27
|
+
}
|
|
@@ -1,4 +1,22 @@
|
|
|
1
|
+
import { Embeddings } from "@langchain/core/embeddings";
|
|
1
2
|
type KnowledgeBase = {
|
|
2
3
|
queryKnowledgeBase: (query: string, k?: number) => Promise<string>;
|
|
3
4
|
};
|
|
4
|
-
|
|
5
|
+
type S3KnowledgeBaseParams = {
|
|
6
|
+
embeddings?: Embeddings;
|
|
7
|
+
documents: string[];
|
|
8
|
+
bucket: string;
|
|
9
|
+
key: string;
|
|
10
|
+
s3Config: {
|
|
11
|
+
endpoint: string;
|
|
12
|
+
region: string;
|
|
13
|
+
credentials: {
|
|
14
|
+
accessKeyId: string;
|
|
15
|
+
secretAccessKey: string;
|
|
16
|
+
};
|
|
17
|
+
forcePathStyle: boolean;
|
|
18
|
+
};
|
|
19
|
+
unstructuredAPIURL: string;
|
|
20
|
+
unstructuredAPIKey: string;
|
|
21
|
+
};
|
|
22
|
+
export { KnowledgeBase, S3KnowledgeBaseParams };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fonoster/autopilot",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.35",
|
|
4
4
|
"description": "Voice AI for the Fonoster platform",
|
|
5
5
|
"author": "Pedro Sanders <psanders@fonoster.com>",
|
|
6
6
|
"homepage": "https://github.com/fonoster/fonoster#readme",
|
|
@@ -35,10 +35,11 @@
|
|
|
35
35
|
"url": "https://github.com/fonoster/fonoster/issues"
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
|
-
"@
|
|
39
|
-
"@fonoster/
|
|
40
|
-
"@fonoster/
|
|
41
|
-
"@fonoster/
|
|
38
|
+
"@aws-sdk/client-s3": "^3.701.0",
|
|
39
|
+
"@fonoster/common": "^0.7.35",
|
|
40
|
+
"@fonoster/logger": "^0.7.35",
|
|
41
|
+
"@fonoster/types": "^0.7.35",
|
|
42
|
+
"@fonoster/voice": "^0.7.35",
|
|
42
43
|
"@langchain/community": "^0.3.16",
|
|
43
44
|
"@langchain/core": "^0.3.19",
|
|
44
45
|
"@langchain/groq": "^0.1.2",
|
|
@@ -56,5 +57,5 @@
|
|
|
56
57
|
"devDependencies": {
|
|
57
58
|
"typescript": "^5.5.4"
|
|
58
59
|
},
|
|
59
|
-
"gitHead": "
|
|
60
|
+
"gitHead": "310b53e483cda3937e2d093c56428c94a15466e6"
|
|
60
61
|
}
|