langchain 0.1.35 → 0.1.37
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/dist/chains/conversational_retrieval_chain.cjs +61 -19
- package/dist/chains/conversational_retrieval_chain.d.ts +61 -19
- package/dist/chains/conversational_retrieval_chain.js +61 -19
- package/dist/chains/llm_chain.cjs +10 -5
- package/dist/chains/llm_chain.d.ts +10 -5
- package/dist/chains/llm_chain.js +10 -5
- package/dist/chains/openai_functions/base.cjs +2 -0
- package/dist/chains/openai_functions/base.d.ts +2 -0
- package/dist/chains/openai_functions/base.js +2 -0
- package/dist/chains/query_constructor/index.cjs +5 -8
- package/dist/chains/query_constructor/index.d.ts +5 -4
- package/dist/chains/query_constructor/index.js +3 -6
- package/dist/chains/query_constructor/ir.cjs +15 -139
- package/dist/chains/query_constructor/ir.d.ts +1 -138
- package/dist/chains/query_constructor/ir.js +1 -132
- package/dist/chains/query_constructor/prompt.cjs +2 -2
- package/dist/chains/query_constructor/prompt.d.ts +1 -1
- package/dist/chains/query_constructor/prompt.js +1 -1
- package/dist/chains/retrieval_qa.cjs +23 -14
- package/dist/chains/retrieval_qa.d.ts +23 -14
- package/dist/chains/retrieval_qa.js +23 -14
- package/dist/document_loaders/fs/unstructured.cjs +1 -1
- package/dist/document_loaders/fs/unstructured.js +1 -1
- package/dist/document_loaders/web/browserbase.cjs +87 -0
- package/dist/document_loaders/web/browserbase.d.ts +49 -0
- package/dist/document_loaders/web/browserbase.js +80 -0
- package/dist/document_loaders/web/firecrawl.cjs +88 -0
- package/dist/document_loaders/web/firecrawl.d.ts +48 -0
- package/dist/document_loaders/web/firecrawl.js +81 -0
- package/dist/document_loaders/web/s3.cjs +2 -2
- package/dist/document_loaders/web/s3.js +2 -2
- package/dist/load/import_constants.cjs +2 -0
- package/dist/load/import_constants.js +2 -0
- package/dist/output_parsers/expression.cjs +1 -1
- package/dist/output_parsers/expression.d.ts +1 -1
- package/dist/output_parsers/expression.js +1 -1
- package/dist/retrievers/self_query/base.cjs +3 -136
- package/dist/retrievers/self_query/base.d.ts +1 -69
- package/dist/retrievers/self_query/base.js +1 -134
- package/dist/retrievers/self_query/chroma.cjs +9 -10
- package/dist/retrievers/self_query/chroma.d.ts +1 -1
- package/dist/retrievers/self_query/chroma.js +1 -2
- package/dist/retrievers/self_query/functional.cjs +2 -195
- package/dist/retrievers/self_query/functional.d.ts +1 -87
- package/dist/retrievers/self_query/functional.js +1 -194
- package/dist/retrievers/self_query/index.cjs +9 -13
- package/dist/retrievers/self_query/index.d.ts +11 -8
- package/dist/retrievers/self_query/index.js +7 -11
- package/dist/retrievers/self_query/pinecone.cjs +9 -10
- package/dist/retrievers/self_query/pinecone.d.ts +1 -1
- package/dist/retrievers/self_query/pinecone.js +1 -2
- package/dist/retrievers/self_query/supabase.cjs +28 -30
- package/dist/retrievers/self_query/supabase.d.ts +1 -2
- package/dist/retrievers/self_query/supabase.js +1 -3
- package/dist/retrievers/self_query/supabase_utils.cjs +2 -2
- package/dist/retrievers/self_query/supabase_utils.d.ts +1 -1
- package/dist/retrievers/self_query/supabase_utils.js +1 -1
- package/dist/retrievers/self_query/vectara.cjs +15 -17
- package/dist/retrievers/self_query/vectara.d.ts +1 -2
- package/dist/retrievers/self_query/vectara.js +1 -3
- package/dist/retrievers/self_query/weaviate.cjs +19 -21
- package/dist/retrievers/self_query/weaviate.d.ts +1 -2
- package/dist/retrievers/self_query/weaviate.js +1 -3
- package/dist/smith/config.d.ts +4 -4
- package/dist/storage/in_memory.cjs +2 -81
- package/dist/storage/in_memory.d.ts +1 -49
- package/dist/storage/in_memory.js +1 -80
- package/dist/text_splitter.cjs +15 -727
- package/dist/text_splitter.d.ts +1 -77
- package/dist/text_splitter.js +1 -720
- package/dist/vectorstores/qdrant.cjs +2 -0
- package/dist/vectorstores/qdrant.js +2 -0
- package/document_loaders/web/browserbase.cjs +1 -0
- package/document_loaders/web/browserbase.d.cts +1 -0
- package/document_loaders/web/browserbase.d.ts +1 -0
- package/document_loaders/web/browserbase.js +1 -0
- package/document_loaders/web/firecrawl.cjs +1 -0
- package/document_loaders/web/firecrawl.d.cts +1 -0
- package/document_loaders/web/firecrawl.d.ts +1 -0
- package/document_loaders/web/firecrawl.js +1 -0
- package/package.json +40 -3
- package/dist/retrievers/self_query/utils.cjs +0 -94
- package/dist/retrievers/self_query/utils.d.ts +0 -29
- package/dist/retrievers/self_query/utils.js +0 -85
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { Document } from "@langchain/core/documents";
|
|
2
|
+
import Browserbase from "@browserbasehq/sdk";
|
|
3
|
+
import { BaseDocumentLoader } from "../base.js";
|
|
4
|
+
/**
|
|
5
|
+
* Load pre-rendered web pages using a headless browser hosted on Browserbase.
|
|
6
|
+
*
|
|
7
|
+
* Depends on `@browserbasehq/sdk` package.
|
|
8
|
+
* Get your API key from https://browserbase.com
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* import { BrowserbaseLoader } from "langchain/document_loaders/web/browserbase";
|
|
13
|
+
*
|
|
14
|
+
* const loader = new BrowserbaseLoader(["https://example.com"], {
|
|
15
|
+
* apiKey: process.env.BROWSERBASE_API_KEY,
|
|
16
|
+
* textContent: true,
|
|
17
|
+
* });
|
|
18
|
+
*
|
|
19
|
+
* const docs = await loader.load();
|
|
20
|
+
* ```
|
|
21
|
+
*
|
|
22
|
+
* @param {string[]} urls - The URLs of the web pages to load.
|
|
23
|
+
* @param {BrowserbaseLoaderOptions} [options] - Browserbase client options.
|
|
24
|
+
*/
|
|
25
|
+
export class BrowserbaseLoader extends BaseDocumentLoader {
|
|
26
|
+
constructor(urls, options = {}) {
|
|
27
|
+
super();
|
|
28
|
+
Object.defineProperty(this, "urls", {
|
|
29
|
+
enumerable: true,
|
|
30
|
+
configurable: true,
|
|
31
|
+
writable: true,
|
|
32
|
+
value: void 0
|
|
33
|
+
});
|
|
34
|
+
Object.defineProperty(this, "options", {
|
|
35
|
+
enumerable: true,
|
|
36
|
+
configurable: true,
|
|
37
|
+
writable: true,
|
|
38
|
+
value: void 0
|
|
39
|
+
});
|
|
40
|
+
Object.defineProperty(this, "browserbase", {
|
|
41
|
+
enumerable: true,
|
|
42
|
+
configurable: true,
|
|
43
|
+
writable: true,
|
|
44
|
+
value: void 0
|
|
45
|
+
});
|
|
46
|
+
this.urls = urls;
|
|
47
|
+
this.options = options;
|
|
48
|
+
this.browserbase = new Browserbase(options.apiKey);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Load pages from URLs.
|
|
52
|
+
*
|
|
53
|
+
* @returns {Promise<DocumentInterface[]>} - A promise which resolves to a list of documents.
|
|
54
|
+
*/
|
|
55
|
+
async load() {
|
|
56
|
+
const documents = [];
|
|
57
|
+
for await (const doc of this.lazyLoad()) {
|
|
58
|
+
documents.push(doc);
|
|
59
|
+
}
|
|
60
|
+
return documents;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Load pages from URLs.
|
|
64
|
+
*
|
|
65
|
+
* @returns {Generator<DocumentInterface>} - A generator that yields documents.
|
|
66
|
+
*/
|
|
67
|
+
async *lazyLoad() {
|
|
68
|
+
const pages = await this.browserbase.loadURLs(this.urls, this.options);
|
|
69
|
+
let index = 0;
|
|
70
|
+
for await (const page of pages) {
|
|
71
|
+
yield new Document({
|
|
72
|
+
pageContent: page,
|
|
73
|
+
metadata: {
|
|
74
|
+
url: this.urls[index],
|
|
75
|
+
},
|
|
76
|
+
});
|
|
77
|
+
index += index + 1;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.FireCrawlLoader = void 0;
|
|
7
|
+
const firecrawl_js_1 = __importDefault(require("@mendable/firecrawl-js"));
|
|
8
|
+
const documents_1 = require("@langchain/core/documents");
|
|
9
|
+
const env_1 = require("@langchain/core/utils/env");
|
|
10
|
+
const base_js_1 = require("../base.cjs");
|
|
11
|
+
/**
|
|
12
|
+
* Class representing a document loader for loading data from
|
|
13
|
+
* Firecrawl (firecrawl.dev). It extends the BaseDocumentLoader class.
|
|
14
|
+
* @example
|
|
15
|
+
* ```typescript
|
|
16
|
+
* const loader = new FireCrawlLoader({
|
|
17
|
+
* url: "{url}",
|
|
18
|
+
* apiKey: "{apiKey}",
|
|
19
|
+
* mode: "crawl"
|
|
20
|
+
* });
|
|
21
|
+
* const docs = await loader.load();
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
class FireCrawlLoader extends base_js_1.BaseDocumentLoader {
|
|
25
|
+
constructor(loaderParams) {
|
|
26
|
+
super();
|
|
27
|
+
Object.defineProperty(this, "apiKey", {
|
|
28
|
+
enumerable: true,
|
|
29
|
+
configurable: true,
|
|
30
|
+
writable: true,
|
|
31
|
+
value: void 0
|
|
32
|
+
});
|
|
33
|
+
Object.defineProperty(this, "url", {
|
|
34
|
+
enumerable: true,
|
|
35
|
+
configurable: true,
|
|
36
|
+
writable: true,
|
|
37
|
+
value: void 0
|
|
38
|
+
});
|
|
39
|
+
Object.defineProperty(this, "mode", {
|
|
40
|
+
enumerable: true,
|
|
41
|
+
configurable: true,
|
|
42
|
+
writable: true,
|
|
43
|
+
value: void 0
|
|
44
|
+
});
|
|
45
|
+
Object.defineProperty(this, "params", {
|
|
46
|
+
enumerable: true,
|
|
47
|
+
configurable: true,
|
|
48
|
+
writable: true,
|
|
49
|
+
value: void 0
|
|
50
|
+
});
|
|
51
|
+
const { apiKey = (0, env_1.getEnvironmentVariable)("FIRECRAWL_API_KEY"), url, mode = "crawl", params, } = loaderParams;
|
|
52
|
+
if (!apiKey) {
|
|
53
|
+
throw new Error("Firecrawl API key not set. You can set it as FIRECRAWL_API_KEY in your .env file, or pass it to Firecrawl.");
|
|
54
|
+
}
|
|
55
|
+
this.apiKey = apiKey;
|
|
56
|
+
this.url = url;
|
|
57
|
+
this.mode = mode;
|
|
58
|
+
this.params = params;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Loads the data from the Firecrawl.
|
|
62
|
+
* @returns An array of Documents representing the retrieved data.
|
|
63
|
+
* @throws An error if the data could not be loaded.
|
|
64
|
+
*/
|
|
65
|
+
async load() {
|
|
66
|
+
const app = new firecrawl_js_1.default({ apiKey: this.apiKey });
|
|
67
|
+
let firecrawlDocs;
|
|
68
|
+
if (this.mode === "scrape") {
|
|
69
|
+
const response = await app.scrapeUrl(this.url, this.params);
|
|
70
|
+
if (!response.success) {
|
|
71
|
+
throw new Error(`Firecrawl: Failed to scrape URL. Error: ${response.error}`);
|
|
72
|
+
}
|
|
73
|
+
firecrawlDocs = [response.data];
|
|
74
|
+
}
|
|
75
|
+
else if (this.mode === "crawl") {
|
|
76
|
+
const response = await app.crawlUrl(this.url, this.params, true);
|
|
77
|
+
firecrawlDocs = response;
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
throw new Error(`Unrecognized mode '${this.mode}'. Expected one of 'crawl', 'scrape'.`);
|
|
81
|
+
}
|
|
82
|
+
return firecrawlDocs.map((doc) => new documents_1.Document({
|
|
83
|
+
pageContent: doc.markdown || "",
|
|
84
|
+
metadata: doc.metadata || {},
|
|
85
|
+
}));
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
exports.FireCrawlLoader = FireCrawlLoader;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { type DocumentInterface } from "@langchain/core/documents";
|
|
2
|
+
import { BaseDocumentLoader } from "../base.js";
|
|
3
|
+
/**
|
|
4
|
+
* Interface representing the parameters for the Firecrawl loader. It
|
|
5
|
+
* includes properties such as the URL to scrape or crawl and the API key.
|
|
6
|
+
*/
|
|
7
|
+
interface FirecrawlLoaderParameters {
|
|
8
|
+
/**
|
|
9
|
+
* URL to scrape or crawl
|
|
10
|
+
*/
|
|
11
|
+
url: string;
|
|
12
|
+
/**
|
|
13
|
+
* API key for Firecrawl. If not provided, the default value is the value of the FIRECRAWL_API_KEY environment variable.
|
|
14
|
+
*/
|
|
15
|
+
apiKey?: string;
|
|
16
|
+
/**
|
|
17
|
+
* Mode of operation. Can be either "crawl" or "scrape". If not provided, the default value is "crawl".
|
|
18
|
+
*/
|
|
19
|
+
mode?: "crawl" | "scrape";
|
|
20
|
+
params?: Record<string, unknown>;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Class representing a document loader for loading data from
|
|
24
|
+
* Firecrawl (firecrawl.dev). It extends the BaseDocumentLoader class.
|
|
25
|
+
* @example
|
|
26
|
+
* ```typescript
|
|
27
|
+
* const loader = new FireCrawlLoader({
|
|
28
|
+
* url: "{url}",
|
|
29
|
+
* apiKey: "{apiKey}",
|
|
30
|
+
* mode: "crawl"
|
|
31
|
+
* });
|
|
32
|
+
* const docs = await loader.load();
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export declare class FireCrawlLoader extends BaseDocumentLoader {
|
|
36
|
+
private apiKey;
|
|
37
|
+
private url;
|
|
38
|
+
private mode;
|
|
39
|
+
private params?;
|
|
40
|
+
constructor(loaderParams: FirecrawlLoaderParameters);
|
|
41
|
+
/**
|
|
42
|
+
* Loads the data from the Firecrawl.
|
|
43
|
+
* @returns An array of Documents representing the retrieved data.
|
|
44
|
+
* @throws An error if the data could not be loaded.
|
|
45
|
+
*/
|
|
46
|
+
load(): Promise<DocumentInterface[]>;
|
|
47
|
+
}
|
|
48
|
+
export {};
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import FirecrawlApp from "@mendable/firecrawl-js";
|
|
2
|
+
import { Document } from "@langchain/core/documents";
|
|
3
|
+
import { getEnvironmentVariable } from "@langchain/core/utils/env";
|
|
4
|
+
import { BaseDocumentLoader } from "../base.js";
|
|
5
|
+
/**
|
|
6
|
+
* Class representing a document loader for loading data from
|
|
7
|
+
* Firecrawl (firecrawl.dev). It extends the BaseDocumentLoader class.
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* const loader = new FireCrawlLoader({
|
|
11
|
+
* url: "{url}",
|
|
12
|
+
* apiKey: "{apiKey}",
|
|
13
|
+
* mode: "crawl"
|
|
14
|
+
* });
|
|
15
|
+
* const docs = await loader.load();
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
export class FireCrawlLoader extends BaseDocumentLoader {
|
|
19
|
+
constructor(loaderParams) {
|
|
20
|
+
super();
|
|
21
|
+
Object.defineProperty(this, "apiKey", {
|
|
22
|
+
enumerable: true,
|
|
23
|
+
configurable: true,
|
|
24
|
+
writable: true,
|
|
25
|
+
value: void 0
|
|
26
|
+
});
|
|
27
|
+
Object.defineProperty(this, "url", {
|
|
28
|
+
enumerable: true,
|
|
29
|
+
configurable: true,
|
|
30
|
+
writable: true,
|
|
31
|
+
value: void 0
|
|
32
|
+
});
|
|
33
|
+
Object.defineProperty(this, "mode", {
|
|
34
|
+
enumerable: true,
|
|
35
|
+
configurable: true,
|
|
36
|
+
writable: true,
|
|
37
|
+
value: void 0
|
|
38
|
+
});
|
|
39
|
+
Object.defineProperty(this, "params", {
|
|
40
|
+
enumerable: true,
|
|
41
|
+
configurable: true,
|
|
42
|
+
writable: true,
|
|
43
|
+
value: void 0
|
|
44
|
+
});
|
|
45
|
+
const { apiKey = getEnvironmentVariable("FIRECRAWL_API_KEY"), url, mode = "crawl", params, } = loaderParams;
|
|
46
|
+
if (!apiKey) {
|
|
47
|
+
throw new Error("Firecrawl API key not set. You can set it as FIRECRAWL_API_KEY in your .env file, or pass it to Firecrawl.");
|
|
48
|
+
}
|
|
49
|
+
this.apiKey = apiKey;
|
|
50
|
+
this.url = url;
|
|
51
|
+
this.mode = mode;
|
|
52
|
+
this.params = params;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Loads the data from the Firecrawl.
|
|
56
|
+
* @returns An array of Documents representing the retrieved data.
|
|
57
|
+
* @throws An error if the data could not be loaded.
|
|
58
|
+
*/
|
|
59
|
+
async load() {
|
|
60
|
+
const app = new FirecrawlApp({ apiKey: this.apiKey });
|
|
61
|
+
let firecrawlDocs;
|
|
62
|
+
if (this.mode === "scrape") {
|
|
63
|
+
const response = await app.scrapeUrl(this.url, this.params);
|
|
64
|
+
if (!response.success) {
|
|
65
|
+
throw new Error(`Firecrawl: Failed to scrape URL. Error: ${response.error}`);
|
|
66
|
+
}
|
|
67
|
+
firecrawlDocs = [response.data];
|
|
68
|
+
}
|
|
69
|
+
else if (this.mode === "crawl") {
|
|
70
|
+
const response = await app.crawlUrl(this.url, this.params, true);
|
|
71
|
+
firecrawlDocs = response;
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
throw new Error(`Unrecognized mode '${this.mode}'. Expected one of 'crawl', 'scrape'.`);
|
|
75
|
+
}
|
|
76
|
+
return firecrawlDocs.map((doc) => new Document({
|
|
77
|
+
pageContent: doc.markdown || "",
|
|
78
|
+
metadata: doc.metadata || {},
|
|
79
|
+
}));
|
|
80
|
+
}
|
|
81
|
+
}
|
|
@@ -148,8 +148,8 @@ class S3Loader extends base_js_1.BaseDocumentLoader {
|
|
|
148
148
|
const docs = await unstructuredLoader.load();
|
|
149
149
|
return docs;
|
|
150
150
|
}
|
|
151
|
-
catch {
|
|
152
|
-
throw new Error(`Failed to load file ${filePath} using unstructured loader
|
|
151
|
+
catch (e) {
|
|
152
|
+
throw new Error(`Failed to load file ${filePath} using unstructured loader: ${e.message}`);
|
|
153
153
|
}
|
|
154
154
|
}
|
|
155
155
|
}
|
|
@@ -122,8 +122,8 @@ export class S3Loader extends BaseDocumentLoader {
|
|
|
122
122
|
const docs = await unstructuredLoader.load();
|
|
123
123
|
return docs;
|
|
124
124
|
}
|
|
125
|
-
catch {
|
|
126
|
-
throw new Error(`Failed to load file ${filePath} using unstructured loader
|
|
125
|
+
catch (e) {
|
|
126
|
+
throw new Error(`Failed to load file ${filePath} using unstructured loader: ${e.message}`);
|
|
127
127
|
}
|
|
128
128
|
}
|
|
129
129
|
}
|
|
@@ -85,6 +85,7 @@ exports.optionalImportEntrypoints = [
|
|
|
85
85
|
"langchain/document_loaders/web/assemblyai",
|
|
86
86
|
"langchain/document_loaders/web/azure_blob_storage_container",
|
|
87
87
|
"langchain/document_loaders/web/azure_blob_storage_file",
|
|
88
|
+
"langchain/document_loaders/web/browserbase",
|
|
88
89
|
"langchain/document_loaders/web/cheerio",
|
|
89
90
|
"langchain/document_loaders/web/puppeteer",
|
|
90
91
|
"langchain/document_loaders/web/playwright",
|
|
@@ -93,6 +94,7 @@ exports.optionalImportEntrypoints = [
|
|
|
93
94
|
"langchain/document_loaders/web/hn",
|
|
94
95
|
"langchain/document_loaders/web/imsdb",
|
|
95
96
|
"langchain/document_loaders/web/figma",
|
|
97
|
+
"langchain/document_loaders/web/firecrawl",
|
|
96
98
|
"langchain/document_loaders/web/github",
|
|
97
99
|
"langchain/document_loaders/web/notiondb",
|
|
98
100
|
"langchain/document_loaders/web/notionapi",
|
|
@@ -82,6 +82,7 @@ export const optionalImportEntrypoints = [
|
|
|
82
82
|
"langchain/document_loaders/web/assemblyai",
|
|
83
83
|
"langchain/document_loaders/web/azure_blob_storage_container",
|
|
84
84
|
"langchain/document_loaders/web/azure_blob_storage_file",
|
|
85
|
+
"langchain/document_loaders/web/browserbase",
|
|
85
86
|
"langchain/document_loaders/web/cheerio",
|
|
86
87
|
"langchain/document_loaders/web/puppeteer",
|
|
87
88
|
"langchain/document_loaders/web/playwright",
|
|
@@ -90,6 +91,7 @@ export const optionalImportEntrypoints = [
|
|
|
90
91
|
"langchain/document_loaders/web/hn",
|
|
91
92
|
"langchain/document_loaders/web/imsdb",
|
|
92
93
|
"langchain/document_loaders/web/figma",
|
|
94
|
+
"langchain/document_loaders/web/firecrawl",
|
|
93
95
|
"langchain/document_loaders/web/github",
|
|
94
96
|
"langchain/document_loaders/web/notiondb",
|
|
95
97
|
"langchain/document_loaders/web/notionapi",
|
|
@@ -19,7 +19,7 @@ const output_parsers_1 = require("@langchain/core/output_parsers");
|
|
|
19
19
|
const factory_js_1 = require("./expression_type_handlers/factory.cjs");
|
|
20
20
|
const base_js_1 = require("./expression_type_handlers/base.cjs");
|
|
21
21
|
/**
|
|
22
|
-
*
|
|
22
|
+
* We need to be able to handle the following cases:
|
|
23
23
|
* ExpressionStatement
|
|
24
24
|
* CallExpression
|
|
25
25
|
* Identifier | MemberExpression
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { BaseOutputParser } from "@langchain/core/output_parsers";
|
|
2
2
|
import { ParsedType } from "./expression_type_handlers/types.js";
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
4
|
+
* We need to be able to handle the following cases:
|
|
5
5
|
* ExpressionStatement
|
|
6
6
|
* CallExpression
|
|
7
7
|
* Identifier | MemberExpression
|
|
@@ -2,7 +2,7 @@ import { BaseOutputParser } from "@langchain/core/output_parsers";
|
|
|
2
2
|
import { MasterHandler } from "./expression_type_handlers/factory.js";
|
|
3
3
|
import { ASTParser } from "./expression_type_handlers/base.js";
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
5
|
+
* We need to be able to handle the following cases:
|
|
6
6
|
* ExpressionStatement
|
|
7
7
|
* CallExpression
|
|
8
8
|
* Identifier | MemberExpression
|
|
@@ -1,139 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.BasicTranslator = exports.BaseTranslator = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
* Abstract class that provides a blueprint for creating specific
|
|
8
|
-
* translator classes. Defines two abstract methods: formatFunction and
|
|
9
|
-
* mergeFilters.
|
|
10
|
-
*/
|
|
11
|
-
class BaseTranslator extends ir_js_1.Visitor {
|
|
12
|
-
}
|
|
13
|
-
exports.BaseTranslator = BaseTranslator;
|
|
14
|
-
/**
|
|
15
|
-
* Class that extends the BaseTranslator class and provides concrete
|
|
16
|
-
* implementations for the abstract methods. Also declares three types:
|
|
17
|
-
* VisitOperationOutput, VisitComparisonOutput, and
|
|
18
|
-
* VisitStructuredQueryOutput, which are used as the return types for the
|
|
19
|
-
* visitOperation, visitComparison, and visitStructuredQuery methods
|
|
20
|
-
* respectively.
|
|
21
|
-
*/
|
|
22
|
-
class BasicTranslator extends BaseTranslator {
|
|
23
|
-
constructor(opts) {
|
|
24
|
-
super();
|
|
25
|
-
Object.defineProperty(this, "allowedOperators", {
|
|
26
|
-
enumerable: true,
|
|
27
|
-
configurable: true,
|
|
28
|
-
writable: true,
|
|
29
|
-
value: void 0
|
|
30
|
-
});
|
|
31
|
-
Object.defineProperty(this, "allowedComparators", {
|
|
32
|
-
enumerable: true,
|
|
33
|
-
configurable: true,
|
|
34
|
-
writable: true,
|
|
35
|
-
value: void 0
|
|
36
|
-
});
|
|
37
|
-
this.allowedOperators = opts?.allowedOperators ?? [
|
|
38
|
-
ir_js_1.Operators.and,
|
|
39
|
-
ir_js_1.Operators.or,
|
|
40
|
-
];
|
|
41
|
-
this.allowedComparators = opts?.allowedComparators ?? [
|
|
42
|
-
ir_js_1.Comparators.eq,
|
|
43
|
-
ir_js_1.Comparators.ne,
|
|
44
|
-
ir_js_1.Comparators.gt,
|
|
45
|
-
ir_js_1.Comparators.gte,
|
|
46
|
-
ir_js_1.Comparators.lt,
|
|
47
|
-
ir_js_1.Comparators.lte,
|
|
48
|
-
];
|
|
49
|
-
}
|
|
50
|
-
formatFunction(func) {
|
|
51
|
-
if (func in ir_js_1.Comparators) {
|
|
52
|
-
if (this.allowedComparators.length > 0 &&
|
|
53
|
-
this.allowedComparators.indexOf(func) === -1) {
|
|
54
|
-
throw new Error(`Comparator ${func} not allowed. Allowed operators: ${this.allowedComparators.join(", ")}`);
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
else if (func in ir_js_1.Operators) {
|
|
58
|
-
if (this.allowedOperators.length > 0 &&
|
|
59
|
-
this.allowedOperators.indexOf(func) === -1) {
|
|
60
|
-
throw new Error(`Operator ${func} not allowed. Allowed operators: ${this.allowedOperators.join(", ")}`);
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
else {
|
|
64
|
-
throw new Error("Unknown comparator or operator");
|
|
65
|
-
}
|
|
66
|
-
return `$${func}`;
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Visits an operation and returns a result.
|
|
70
|
-
* @param operation The operation to visit.
|
|
71
|
-
* @returns The result of visiting the operation.
|
|
72
|
-
*/
|
|
73
|
-
visitOperation(operation) {
|
|
74
|
-
const args = operation.args?.map((arg) => arg.accept(this));
|
|
75
|
-
return {
|
|
76
|
-
[this.formatFunction(operation.operator)]: args,
|
|
77
|
-
};
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* Visits a comparison and returns a result.
|
|
81
|
-
* @param comparison The comparison to visit.
|
|
82
|
-
* @returns The result of visiting the comparison.
|
|
83
|
-
*/
|
|
84
|
-
visitComparison(comparison) {
|
|
85
|
-
return {
|
|
86
|
-
[comparison.attribute]: {
|
|
87
|
-
[this.formatFunction(comparison.comparator)]: (0, utils_js_1.castValue)(comparison.value),
|
|
88
|
-
},
|
|
89
|
-
};
|
|
90
|
-
}
|
|
91
|
-
/**
|
|
92
|
-
* Visits a structured query and returns a result.
|
|
93
|
-
* @param query The structured query to visit.
|
|
94
|
-
* @returns The result of visiting the structured query.
|
|
95
|
-
*/
|
|
96
|
-
visitStructuredQuery(query) {
|
|
97
|
-
let nextArg = {};
|
|
98
|
-
if (query.filter) {
|
|
99
|
-
nextArg = {
|
|
100
|
-
filter: query.filter.accept(this),
|
|
101
|
-
};
|
|
102
|
-
}
|
|
103
|
-
return nextArg;
|
|
104
|
-
}
|
|
105
|
-
mergeFilters(defaultFilter, generatedFilter, mergeType = "and", forceDefaultFilter = false) {
|
|
106
|
-
if ((0, utils_js_1.isFilterEmpty)(defaultFilter) && (0, utils_js_1.isFilterEmpty)(generatedFilter)) {
|
|
107
|
-
return undefined;
|
|
108
|
-
}
|
|
109
|
-
if ((0, utils_js_1.isFilterEmpty)(defaultFilter) || mergeType === "replace") {
|
|
110
|
-
if ((0, utils_js_1.isFilterEmpty)(generatedFilter)) {
|
|
111
|
-
return undefined;
|
|
112
|
-
}
|
|
113
|
-
return generatedFilter;
|
|
114
|
-
}
|
|
115
|
-
if ((0, utils_js_1.isFilterEmpty)(generatedFilter)) {
|
|
116
|
-
if (forceDefaultFilter) {
|
|
117
|
-
return defaultFilter;
|
|
118
|
-
}
|
|
119
|
-
if (mergeType === "and") {
|
|
120
|
-
return undefined;
|
|
121
|
-
}
|
|
122
|
-
return defaultFilter;
|
|
123
|
-
}
|
|
124
|
-
if (mergeType === "and") {
|
|
125
|
-
return {
|
|
126
|
-
$and: [defaultFilter, generatedFilter],
|
|
127
|
-
};
|
|
128
|
-
}
|
|
129
|
-
else if (mergeType === "or") {
|
|
130
|
-
return {
|
|
131
|
-
$or: [defaultFilter, generatedFilter],
|
|
132
|
-
};
|
|
133
|
-
}
|
|
134
|
-
else {
|
|
135
|
-
throw new Error("Unknown merge type");
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
exports.BasicTranslator = BasicTranslator;
|
|
4
|
+
var structured_query_1 = require("@langchain/core/structured_query");
|
|
5
|
+
Object.defineProperty(exports, "BaseTranslator", { enumerable: true, get: function () { return structured_query_1.BaseTranslator; } });
|
|
6
|
+
Object.defineProperty(exports, "BasicTranslator", { enumerable: true, get: function () { return structured_query_1.BasicTranslator; } });
|
|
@@ -1,69 +1 @@
|
|
|
1
|
-
|
|
2
|
-
import { Comparator, Comparison, Operation, Operator, StructuredQuery, Visitor, VisitorComparisonResult, VisitorOperationResult, VisitorStructuredQueryResult } from "../../chains/query_constructor/ir.js";
|
|
3
|
-
/**
|
|
4
|
-
* Options object for the BasicTranslator class. Specifies the allowed
|
|
5
|
-
* operators and comparators.
|
|
6
|
-
*/
|
|
7
|
-
export type TranslatorOpts = {
|
|
8
|
-
allowedOperators: Operator[];
|
|
9
|
-
allowedComparators: Comparator[];
|
|
10
|
-
};
|
|
11
|
-
/**
|
|
12
|
-
* Abstract class that provides a blueprint for creating specific
|
|
13
|
-
* translator classes. Defines two abstract methods: formatFunction and
|
|
14
|
-
* mergeFilters.
|
|
15
|
-
*/
|
|
16
|
-
export declare abstract class BaseTranslator<T extends VectorStore = VectorStore> extends Visitor<T> {
|
|
17
|
-
/**
|
|
18
|
-
* Formats a given function (either an operator or a comparator) into a
|
|
19
|
-
* string.
|
|
20
|
-
* @param func The function to format.
|
|
21
|
-
* @returns Formatted string representation of the function.
|
|
22
|
-
*/
|
|
23
|
-
abstract formatFunction(func: Operator | Comparator): string;
|
|
24
|
-
/**
|
|
25
|
-
* Merges two filters into one, using a specified merge type.
|
|
26
|
-
* @param defaultFilter The default filter.
|
|
27
|
-
* @param generatedFilter The generated filter.
|
|
28
|
-
* @param mergeType The type of merge to perform. Can be 'and', 'or', or 'replace'.
|
|
29
|
-
* @param forceDefaultFilter If true, the default filter will be used even if the generated filter is not empty.
|
|
30
|
-
* @returns The merged filter, or undefined if both filters are empty.
|
|
31
|
-
*/
|
|
32
|
-
abstract mergeFilters(defaultFilter: this["VisitStructuredQueryOutput"]["filter"] | undefined, generatedFilter: this["VisitStructuredQueryOutput"]["filter"] | undefined, mergeType?: "and" | "or" | "replace", forceDefaultFilter?: boolean): this["VisitStructuredQueryOutput"]["filter"] | undefined;
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Class that extends the BaseTranslator class and provides concrete
|
|
36
|
-
* implementations for the abstract methods. Also declares three types:
|
|
37
|
-
* VisitOperationOutput, VisitComparisonOutput, and
|
|
38
|
-
* VisitStructuredQueryOutput, which are used as the return types for the
|
|
39
|
-
* visitOperation, visitComparison, and visitStructuredQuery methods
|
|
40
|
-
* respectively.
|
|
41
|
-
*/
|
|
42
|
-
export declare class BasicTranslator<T extends VectorStore = VectorStore> extends BaseTranslator<T> {
|
|
43
|
-
VisitOperationOutput: VisitorOperationResult;
|
|
44
|
-
VisitComparisonOutput: VisitorComparisonResult;
|
|
45
|
-
VisitStructuredQueryOutput: VisitorStructuredQueryResult;
|
|
46
|
-
allowedOperators: Operator[];
|
|
47
|
-
allowedComparators: Comparator[];
|
|
48
|
-
constructor(opts?: TranslatorOpts);
|
|
49
|
-
formatFunction(func: Operator | Comparator): string;
|
|
50
|
-
/**
|
|
51
|
-
* Visits an operation and returns a result.
|
|
52
|
-
* @param operation The operation to visit.
|
|
53
|
-
* @returns The result of visiting the operation.
|
|
54
|
-
*/
|
|
55
|
-
visitOperation(operation: Operation): this["VisitOperationOutput"];
|
|
56
|
-
/**
|
|
57
|
-
* Visits a comparison and returns a result.
|
|
58
|
-
* @param comparison The comparison to visit.
|
|
59
|
-
* @returns The result of visiting the comparison.
|
|
60
|
-
*/
|
|
61
|
-
visitComparison(comparison: Comparison): this["VisitComparisonOutput"];
|
|
62
|
-
/**
|
|
63
|
-
* Visits a structured query and returns a result.
|
|
64
|
-
* @param query The structured query to visit.
|
|
65
|
-
* @returns The result of visiting the structured query.
|
|
66
|
-
*/
|
|
67
|
-
visitStructuredQuery(query: StructuredQuery): this["VisitStructuredQueryOutput"];
|
|
68
|
-
mergeFilters(defaultFilter: VisitorStructuredQueryResult["filter"] | undefined, generatedFilter: VisitorStructuredQueryResult["filter"] | undefined, mergeType?: string, forceDefaultFilter?: boolean): VisitorStructuredQueryResult["filter"] | undefined;
|
|
69
|
-
}
|
|
1
|
+
export { type TranslatorOpts, BaseTranslator, BasicTranslator, } from "@langchain/core/structured_query";
|