@langchain/classic 1.0.0 → 1.0.2
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/CHANGELOG.md +17 -0
- package/dist/agents/chat/outputParser.d.cts +2 -2
- package/dist/agents/chat/outputParser.d.cts.map +1 -1
- package/dist/agents/initialize.d.cts +2 -2
- package/dist/agents/initialize.d.cts.map +1 -1
- package/dist/agents/initialize.d.ts +2 -2
- package/dist/agents/initialize.d.ts.map +1 -1
- package/dist/agents/mrkl/outputParser.d.cts +1 -1
- package/dist/agents/mrkl/outputParser.d.cts.map +1 -1
- package/dist/agents/mrkl/outputParser.d.ts +1 -1
- package/dist/agents/mrkl/outputParser.d.ts.map +1 -1
- package/dist/chains/base.cjs +10 -4
- package/dist/chains/base.cjs.map +1 -1
- package/dist/chains/base.js +10 -4
- package/dist/chains/base.js.map +1 -1
- package/dist/chains/index.cjs +3 -0
- package/dist/chains/index.cjs.map +1 -1
- package/dist/chains/index.d.cts +2 -1
- package/dist/chains/index.d.ts +2 -1
- package/dist/chains/index.js +3 -1
- package/dist/chains/index.js.map +1 -1
- package/dist/chains/openai_moderation.cjs +107 -0
- package/dist/chains/openai_moderation.cjs.map +1 -0
- package/dist/chains/openai_moderation.d.cts +74 -0
- package/dist/chains/openai_moderation.d.cts.map +1 -0
- package/dist/chains/openai_moderation.d.ts +74 -0
- package/dist/chains/openai_moderation.d.ts.map +1 -0
- package/dist/chains/openai_moderation.js +106 -0
- package/dist/chains/openai_moderation.js.map +1 -0
- package/dist/chains/question_answering/load.d.cts +2 -2
- package/dist/chains/question_answering/load.d.cts.map +1 -1
- package/dist/chains/question_answering/load.d.ts +2 -2
- package/dist/chains/question_answering/load.d.ts.map +1 -1
- package/dist/chains/summarization/load.d.cts +2 -2
- package/dist/chains/summarization/load.d.cts.map +1 -1
- package/dist/chains/summarization/load.d.ts +2 -2
- package/dist/chains/summarization/load.d.ts.map +1 -1
- package/dist/chat_models/universal.cjs +1 -1
- package/dist/chat_models/universal.cjs.map +1 -1
- package/dist/chat_models/universal.js +1 -1
- package/dist/chat_models/universal.js.map +1 -1
- package/dist/embeddings/cache_backed.d.cts +1 -1
- package/dist/embeddings/cache_backed.d.ts +1 -1
- package/dist/evaluation/agents/trajectory.d.ts.map +1 -1
- package/dist/evaluation/comparison/pairwise.d.cts.map +1 -1
- package/dist/evaluation/comparison/pairwise.d.ts.map +1 -1
- package/dist/evaluation/criteria/criteria.d.cts.map +1 -1
- package/dist/evaluation/criteria/criteria.d.ts.map +1 -1
- package/dist/langchain-core/dist/messages/base.d.cts +2 -0
- package/dist/langchain-core/dist/messages/base.d.cts.map +1 -1
- package/dist/langchain-core/dist/messages/format.d.cts +8 -0
- package/dist/langchain-core/dist/messages/format.d.cts.map +1 -0
- package/dist/langchain-core/dist/tools/types.d.cts.map +1 -1
- package/dist/libs/langchain-core/dist/messages/base.d.ts +2 -0
- package/dist/libs/langchain-core/dist/messages/base.d.ts.map +1 -1
- package/dist/libs/langchain-core/dist/messages/format.d.ts +8 -0
- package/dist/libs/langchain-core/dist/messages/format.d.ts.map +1 -0
- package/dist/libs/langchain-core/dist/tools/types.d.ts.map +1 -1
- package/package.json +33 -34
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
|
|
2
|
+
const require_base = require('./base.cjs');
|
|
3
|
+
const __langchain_core_utils_env = require_rolldown_runtime.__toESM(require("@langchain/core/utils/env"));
|
|
4
|
+
const __langchain_openai = require_rolldown_runtime.__toESM(require("@langchain/openai"));
|
|
5
|
+
const __langchain_core_utils_async_caller = require_rolldown_runtime.__toESM(require("@langchain/core/utils/async_caller"));
|
|
6
|
+
|
|
7
|
+
//#region src/chains/openai_moderation.ts
|
|
8
|
+
/**
|
|
9
|
+
* Class representing a chain for moderating text using the OpenAI
|
|
10
|
+
* Moderation API. It extends the BaseChain class and implements the
|
|
11
|
+
* OpenAIModerationChainInput interface.
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* const moderation = new OpenAIModerationChain({ throwError: true });
|
|
15
|
+
*
|
|
16
|
+
* const badString = "Bad naughty words from user";
|
|
17
|
+
*
|
|
18
|
+
* try {
|
|
19
|
+
* const { output: moderatedContent, results } = await moderation.call({
|
|
20
|
+
* input: badString,
|
|
21
|
+
* });
|
|
22
|
+
*
|
|
23
|
+
* if (results[0].category_scores["harassment/threatening"] > 0.01) {
|
|
24
|
+
* throw new Error("Harassment detected!");
|
|
25
|
+
* }
|
|
26
|
+
*
|
|
27
|
+
* const model = new OpenAI({ temperature: 0 });
|
|
28
|
+
* const promptTemplate = "Hello, how are you today {person}?";
|
|
29
|
+
* const prompt = new PromptTemplate({
|
|
30
|
+
* template: promptTemplate,
|
|
31
|
+
* inputVariables: ["person"],
|
|
32
|
+
* });
|
|
33
|
+
* const chain = new LLMChain({ llm: model, prompt });
|
|
34
|
+
* const response = await chain.call({ person: moderatedContent });
|
|
35
|
+
* console.log({ response });
|
|
36
|
+
* } catch (error) {
|
|
37
|
+
* console.error("Naughty words detected!");
|
|
38
|
+
* }
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
var OpenAIModerationChain = class extends require_base.BaseChain {
|
|
42
|
+
static lc_name() {
|
|
43
|
+
return "OpenAIModerationChain";
|
|
44
|
+
}
|
|
45
|
+
get lc_secrets() {
|
|
46
|
+
return { openAIApiKey: "OPENAI_API_KEY" };
|
|
47
|
+
}
|
|
48
|
+
inputKey = "input";
|
|
49
|
+
outputKey = "output";
|
|
50
|
+
openAIApiKey;
|
|
51
|
+
openAIOrganization;
|
|
52
|
+
clientConfig;
|
|
53
|
+
client;
|
|
54
|
+
throwError;
|
|
55
|
+
caller;
|
|
56
|
+
constructor(fields) {
|
|
57
|
+
super(fields);
|
|
58
|
+
this.throwError = fields?.throwError ?? false;
|
|
59
|
+
this.openAIApiKey = fields?.apiKey ?? fields?.openAIApiKey ?? (0, __langchain_core_utils_env.getEnvironmentVariable)("OPENAI_API_KEY");
|
|
60
|
+
if (!this.openAIApiKey) throw new Error("OpenAI API key not found");
|
|
61
|
+
this.openAIOrganization = fields?.openAIOrganization;
|
|
62
|
+
this.clientConfig = {
|
|
63
|
+
...fields?.configuration,
|
|
64
|
+
apiKey: this.openAIApiKey,
|
|
65
|
+
organization: this.openAIOrganization
|
|
66
|
+
};
|
|
67
|
+
this.client = new __langchain_openai.OpenAIClient(this.clientConfig);
|
|
68
|
+
this.caller = new __langchain_core_utils_async_caller.AsyncCaller(fields ?? {});
|
|
69
|
+
}
|
|
70
|
+
_moderate(text, results) {
|
|
71
|
+
if (results.flagged) {
|
|
72
|
+
const errorStr = "Text was found that violates OpenAI's content policy.";
|
|
73
|
+
if (this.throwError) throw new Error(errorStr);
|
|
74
|
+
else return errorStr;
|
|
75
|
+
}
|
|
76
|
+
return text;
|
|
77
|
+
}
|
|
78
|
+
async _call(values) {
|
|
79
|
+
const text = values[this.inputKey];
|
|
80
|
+
const moderationRequest = { input: text };
|
|
81
|
+
let mod;
|
|
82
|
+
try {
|
|
83
|
+
mod = await this.caller.call(() => this.client.moderations.create(moderationRequest));
|
|
84
|
+
} catch (error) {
|
|
85
|
+
if (error instanceof Error) throw error;
|
|
86
|
+
else throw new Error(error);
|
|
87
|
+
}
|
|
88
|
+
const output = this._moderate(text, mod.results[0]);
|
|
89
|
+
return {
|
|
90
|
+
[this.outputKey]: output,
|
|
91
|
+
results: mod.results
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
_chainType() {
|
|
95
|
+
return "moderation_chain";
|
|
96
|
+
}
|
|
97
|
+
get inputKeys() {
|
|
98
|
+
return [this.inputKey];
|
|
99
|
+
}
|
|
100
|
+
get outputKeys() {
|
|
101
|
+
return [this.outputKey];
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
//#endregion
|
|
106
|
+
exports.OpenAIModerationChain = OpenAIModerationChain;
|
|
107
|
+
//# sourceMappingURL=openai_moderation.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai_moderation.cjs","names":["BaseChain","fields?: OpenAIModerationChainInput","OpenAIClient","AsyncCaller","text: string","results: OpenAIClient.Moderation","values: ChainValues","moderationRequest: OpenAIClient.ModerationCreateParams"],"sources":["../../src/chains/openai_moderation.ts"],"sourcesContent":["import { type ClientOptions, OpenAIClient } from \"@langchain/openai\";\nimport { ChainValues } from \"@langchain/core/utils/types\";\nimport {\n AsyncCaller,\n AsyncCallerParams,\n} from \"@langchain/core/utils/async_caller\";\nimport { getEnvironmentVariable } from \"@langchain/core/utils/env\";\nimport { BaseChain, ChainInputs } from \"./base.js\";\n\n/**\n * Interface for the input parameters of the OpenAIModerationChain class.\n */\nexport interface OpenAIModerationChainInput\n extends ChainInputs,\n AsyncCallerParams {\n apiKey?: string;\n /** @deprecated Use \"apiKey\" instead. */\n openAIApiKey?: string;\n openAIOrganization?: string;\n throwError?: boolean;\n configuration?: ClientOptions;\n}\n\n/**\n * Class representing a chain for moderating text using the OpenAI\n * Moderation API. It extends the BaseChain class and implements the\n * OpenAIModerationChainInput interface.\n * @example\n * ```typescript\n * const moderation = new OpenAIModerationChain({ throwError: true });\n *\n * const badString = \"Bad naughty words from user\";\n *\n * try {\n * const { output: moderatedContent, results } = await moderation.call({\n * input: badString,\n * });\n *\n * if (results[0].category_scores[\"harassment/threatening\"] > 0.01) {\n * throw new Error(\"Harassment detected!\");\n * }\n *\n * const model = new OpenAI({ temperature: 0 });\n * const promptTemplate = \"Hello, how are you today {person}?\";\n * const prompt = new PromptTemplate({\n * template: promptTemplate,\n * inputVariables: [\"person\"],\n * });\n * const chain = new LLMChain({ llm: model, prompt });\n * const response = await chain.call({ person: moderatedContent });\n * console.log({ response });\n * } catch (error) {\n * console.error(\"Naughty words detected!\");\n * }\n * ```\n */\nexport class OpenAIModerationChain\n extends BaseChain\n implements OpenAIModerationChainInput\n{\n static lc_name() {\n return \"OpenAIModerationChain\";\n }\n\n get lc_secrets(): { [key: string]: string } | undefined {\n return {\n openAIApiKey: \"OPENAI_API_KEY\",\n };\n }\n\n inputKey = \"input\";\n\n outputKey = \"output\";\n\n openAIApiKey?: string;\n\n openAIOrganization?: string;\n\n clientConfig: ClientOptions;\n\n client: OpenAIClient;\n\n throwError: boolean;\n\n caller: AsyncCaller;\n\n constructor(fields?: OpenAIModerationChainInput) {\n super(fields);\n this.throwError = fields?.throwError ?? false;\n this.openAIApiKey =\n fields?.apiKey ??\n fields?.openAIApiKey ??\n getEnvironmentVariable(\"OPENAI_API_KEY\");\n\n if (!this.openAIApiKey) {\n throw new Error(\"OpenAI API key not found\");\n }\n\n this.openAIOrganization = fields?.openAIOrganization;\n\n this.clientConfig = {\n ...fields?.configuration,\n apiKey: this.openAIApiKey,\n organization: this.openAIOrganization,\n };\n\n this.client = new OpenAIClient(this.clientConfig);\n\n this.caller = new AsyncCaller(fields ?? {});\n }\n\n _moderate(text: string, results: OpenAIClient.Moderation): string {\n if (results.flagged) {\n const errorStr = \"Text was found that violates OpenAI's content policy.\";\n if (this.throwError) {\n throw new Error(errorStr);\n } else {\n return errorStr;\n }\n }\n return text;\n }\n\n async _call(values: ChainValues): Promise<ChainValues> {\n const text = values[this.inputKey];\n const moderationRequest: OpenAIClient.ModerationCreateParams = {\n input: text,\n };\n let mod;\n try {\n mod = await this.caller.call(() =>\n this.client.moderations.create(moderationRequest)\n );\n } catch (error) {\n // eslint-disable-next-line no-instanceof/no-instanceof\n if (error instanceof Error) {\n throw error;\n } else {\n throw new Error(error as string);\n }\n }\n const output = this._moderate(text, mod.results[0]);\n return {\n [this.outputKey]: output,\n results: mod.results,\n };\n }\n\n _chainType() {\n return \"moderation_chain\";\n }\n\n get inputKeys(): string[] {\n return [this.inputKey];\n }\n\n get outputKeys(): string[] {\n return [this.outputKey];\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwDA,IAAa,wBAAb,cACUA,uBAEV;CACE,OAAO,UAAU;AACf,SAAO;CACR;CAED,IAAI,aAAoD;AACtD,SAAO,EACL,cAAc,iBACf;CACF;CAED,WAAW;CAEX,YAAY;CAEZ;CAEA;CAEA;CAEA;CAEA;CAEA;CAEA,YAAYC,QAAqC;EAC/C,MAAM,OAAO;EACb,KAAK,aAAa,QAAQ,cAAc;EACxC,KAAK,eACH,QAAQ,UACR,QAAQ,uEACe,iBAAiB;AAE1C,MAAI,CAAC,KAAK,aACR,OAAM,IAAI,MAAM;EAGlB,KAAK,qBAAqB,QAAQ;EAElC,KAAK,eAAe;GAClB,GAAG,QAAQ;GACX,QAAQ,KAAK;GACb,cAAc,KAAK;EACpB;EAED,KAAK,SAAS,IAAIC,gCAAa,KAAK;EAEpC,KAAK,SAAS,IAAIC,gDAAY,UAAU,CAAE;CAC3C;CAED,UAAUC,MAAcC,SAA0C;AAChE,MAAI,QAAQ,SAAS;GACnB,MAAM,WAAW;AACjB,OAAI,KAAK,WACP,OAAM,IAAI,MAAM;OAEhB,QAAO;EAEV;AACD,SAAO;CACR;CAED,MAAM,MAAMC,QAA2C;EACrD,MAAM,OAAO,OAAO,KAAK;EACzB,MAAMC,oBAAyD,EAC7D,OAAO,KACR;EACD,IAAI;AACJ,MAAI;GACF,MAAM,MAAM,KAAK,OAAO,KAAK,MAC3B,KAAK,OAAO,YAAY,OAAO,kBAAkB,CAClD;EACF,SAAQ,OAAO;AAEd,OAAI,iBAAiB,MACnB,OAAM;OAEN,OAAM,IAAI,MAAM;EAEnB;EACD,MAAM,SAAS,KAAK,UAAU,MAAM,IAAI,QAAQ,GAAG;AACnD,SAAO;IACJ,KAAK,YAAY;GAClB,SAAS,IAAI;EACd;CACF;CAED,aAAa;AACX,SAAO;CACR;CAED,IAAI,YAAsB;AACxB,SAAO,CAAC,KAAK,QAAS;CACvB;CAED,IAAI,aAAuB;AACzB,SAAO,CAAC,KAAK,SAAU;CACxB;AACF"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { BaseChain, ChainInputs } from "./base.cjs";
|
|
2
|
+
import { ChainValues } from "@langchain/core/utils/types";
|
|
3
|
+
import { ClientOptions, OpenAIClient } from "@langchain/openai";
|
|
4
|
+
import { AsyncCaller, AsyncCallerParams } from "@langchain/core/utils/async_caller";
|
|
5
|
+
|
|
6
|
+
//#region src/chains/openai_moderation.d.ts
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Interface for the input parameters of the OpenAIModerationChain class.
|
|
10
|
+
*/
|
|
11
|
+
interface OpenAIModerationChainInput extends ChainInputs, AsyncCallerParams {
|
|
12
|
+
apiKey?: string;
|
|
13
|
+
/** @deprecated Use "apiKey" instead. */
|
|
14
|
+
openAIApiKey?: string;
|
|
15
|
+
openAIOrganization?: string;
|
|
16
|
+
throwError?: boolean;
|
|
17
|
+
configuration?: ClientOptions;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Class representing a chain for moderating text using the OpenAI
|
|
21
|
+
* Moderation API. It extends the BaseChain class and implements the
|
|
22
|
+
* OpenAIModerationChainInput interface.
|
|
23
|
+
* @example
|
|
24
|
+
* ```typescript
|
|
25
|
+
* const moderation = new OpenAIModerationChain({ throwError: true });
|
|
26
|
+
*
|
|
27
|
+
* const badString = "Bad naughty words from user";
|
|
28
|
+
*
|
|
29
|
+
* try {
|
|
30
|
+
* const { output: moderatedContent, results } = await moderation.call({
|
|
31
|
+
* input: badString,
|
|
32
|
+
* });
|
|
33
|
+
*
|
|
34
|
+
* if (results[0].category_scores["harassment/threatening"] > 0.01) {
|
|
35
|
+
* throw new Error("Harassment detected!");
|
|
36
|
+
* }
|
|
37
|
+
*
|
|
38
|
+
* const model = new OpenAI({ temperature: 0 });
|
|
39
|
+
* const promptTemplate = "Hello, how are you today {person}?";
|
|
40
|
+
* const prompt = new PromptTemplate({
|
|
41
|
+
* template: promptTemplate,
|
|
42
|
+
* inputVariables: ["person"],
|
|
43
|
+
* });
|
|
44
|
+
* const chain = new LLMChain({ llm: model, prompt });
|
|
45
|
+
* const response = await chain.call({ person: moderatedContent });
|
|
46
|
+
* console.log({ response });
|
|
47
|
+
* } catch (error) {
|
|
48
|
+
* console.error("Naughty words detected!");
|
|
49
|
+
* }
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
declare class OpenAIModerationChain extends BaseChain implements OpenAIModerationChainInput {
|
|
53
|
+
static lc_name(): string;
|
|
54
|
+
get lc_secrets(): {
|
|
55
|
+
[key: string]: string;
|
|
56
|
+
} | undefined;
|
|
57
|
+
inputKey: string;
|
|
58
|
+
outputKey: string;
|
|
59
|
+
openAIApiKey?: string;
|
|
60
|
+
openAIOrganization?: string;
|
|
61
|
+
clientConfig: ClientOptions;
|
|
62
|
+
client: OpenAIClient;
|
|
63
|
+
throwError: boolean;
|
|
64
|
+
caller: AsyncCaller;
|
|
65
|
+
constructor(fields?: OpenAIModerationChainInput);
|
|
66
|
+
_moderate(text: string, results: OpenAIClient.Moderation): string;
|
|
67
|
+
_call(values: ChainValues): Promise<ChainValues>;
|
|
68
|
+
_chainType(): string;
|
|
69
|
+
get inputKeys(): string[];
|
|
70
|
+
get outputKeys(): string[];
|
|
71
|
+
}
|
|
72
|
+
//#endregion
|
|
73
|
+
export { OpenAIModerationChain, OpenAIModerationChainInput };
|
|
74
|
+
//# sourceMappingURL=openai_moderation.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai_moderation.d.cts","names":["ClientOptions","OpenAIClient","ChainValues","AsyncCaller","AsyncCallerParams","BaseChain","ChainInputs","OpenAIModerationChainInput","OpenAIModerationChain","Moderation","Promise"],"sources":["../../src/chains/openai_moderation.d.ts"],"sourcesContent":["import { type ClientOptions, OpenAIClient } from \"@langchain/openai\";\nimport { ChainValues } from \"@langchain/core/utils/types\";\nimport { AsyncCaller, AsyncCallerParams } from \"@langchain/core/utils/async_caller\";\nimport { BaseChain, ChainInputs } from \"./base.js\";\n/**\n * Interface for the input parameters of the OpenAIModerationChain class.\n */\nexport interface OpenAIModerationChainInput extends ChainInputs, AsyncCallerParams {\n apiKey?: string;\n /** @deprecated Use \"apiKey\" instead. */\n openAIApiKey?: string;\n openAIOrganization?: string;\n throwError?: boolean;\n configuration?: ClientOptions;\n}\n/**\n * Class representing a chain for moderating text using the OpenAI\n * Moderation API. It extends the BaseChain class and implements the\n * OpenAIModerationChainInput interface.\n * @example\n * ```typescript\n * const moderation = new OpenAIModerationChain({ throwError: true });\n *\n * const badString = \"Bad naughty words from user\";\n *\n * try {\n * const { output: moderatedContent, results } = await moderation.call({\n * input: badString,\n * });\n *\n * if (results[0].category_scores[\"harassment/threatening\"] > 0.01) {\n * throw new Error(\"Harassment detected!\");\n * }\n *\n * const model = new OpenAI({ temperature: 0 });\n * const promptTemplate = \"Hello, how are you today {person}?\";\n * const prompt = new PromptTemplate({\n * template: promptTemplate,\n * inputVariables: [\"person\"],\n * });\n * const chain = new LLMChain({ llm: model, prompt });\n * const response = await chain.call({ person: moderatedContent });\n * console.log({ response });\n * } catch (error) {\n * console.error(\"Naughty words detected!\");\n * }\n * ```\n */\nexport declare class OpenAIModerationChain extends BaseChain implements OpenAIModerationChainInput {\n static lc_name(): string;\n get lc_secrets(): {\n [key: string]: string;\n } | undefined;\n inputKey: string;\n outputKey: string;\n openAIApiKey?: string;\n openAIOrganization?: string;\n clientConfig: ClientOptions;\n client: OpenAIClient;\n throwError: boolean;\n caller: AsyncCaller;\n constructor(fields?: OpenAIModerationChainInput);\n _moderate(text: string, results: OpenAIClient.Moderation): string;\n _call(values: ChainValues): Promise<ChainValues>;\n _chainType(): string;\n get inputKeys(): string[];\n get outputKeys(): string[];\n}\n"],"mappings":";;;;;;;;;AAOA;AAA2C,UAA1BO,0BAAAA,SAAmCD,WAAT,EAAsBF,iBAAtB,CAAA;EAAA,MAMvBJ,CAAAA,EAAAA,MAAAA;EAAa;EAN8B,YAAEI,CAAAA,EAAAA,MAAAA;EAAiB,kBAAA,CAAA,EAAA,MAAA;EAyC7DI,UAAAA,CAAAA,EAAAA,OAAAA;EAAqB,aAAA,CAAA,EAnCtBR,aAmCsB;;;;;;;;;;;AAAwD;;;;;;;;;;;;;;;;;;;;;;;;cAA7EQ,qBAAAA,SAA8BH,SAAAA,YAAqBE;;;;;;;;;gBAStDP;UACNC;;UAEAE;uBACaI;mCACYN,YAAAA,CAAaQ;gBAChCP,cAAcQ,QAAQR"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { BaseChain, ChainInputs } from "./base.js";
|
|
2
|
+
import { ChainValues } from "@langchain/core/utils/types";
|
|
3
|
+
import { ClientOptions, OpenAIClient } from "@langchain/openai";
|
|
4
|
+
import { AsyncCaller, AsyncCallerParams } from "@langchain/core/utils/async_caller";
|
|
5
|
+
|
|
6
|
+
//#region src/chains/openai_moderation.d.ts
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Interface for the input parameters of the OpenAIModerationChain class.
|
|
10
|
+
*/
|
|
11
|
+
interface OpenAIModerationChainInput extends ChainInputs, AsyncCallerParams {
|
|
12
|
+
apiKey?: string;
|
|
13
|
+
/** @deprecated Use "apiKey" instead. */
|
|
14
|
+
openAIApiKey?: string;
|
|
15
|
+
openAIOrganization?: string;
|
|
16
|
+
throwError?: boolean;
|
|
17
|
+
configuration?: ClientOptions;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Class representing a chain for moderating text using the OpenAI
|
|
21
|
+
* Moderation API. It extends the BaseChain class and implements the
|
|
22
|
+
* OpenAIModerationChainInput interface.
|
|
23
|
+
* @example
|
|
24
|
+
* ```typescript
|
|
25
|
+
* const moderation = new OpenAIModerationChain({ throwError: true });
|
|
26
|
+
*
|
|
27
|
+
* const badString = "Bad naughty words from user";
|
|
28
|
+
*
|
|
29
|
+
* try {
|
|
30
|
+
* const { output: moderatedContent, results } = await moderation.call({
|
|
31
|
+
* input: badString,
|
|
32
|
+
* });
|
|
33
|
+
*
|
|
34
|
+
* if (results[0].category_scores["harassment/threatening"] > 0.01) {
|
|
35
|
+
* throw new Error("Harassment detected!");
|
|
36
|
+
* }
|
|
37
|
+
*
|
|
38
|
+
* const model = new OpenAI({ temperature: 0 });
|
|
39
|
+
* const promptTemplate = "Hello, how are you today {person}?";
|
|
40
|
+
* const prompt = new PromptTemplate({
|
|
41
|
+
* template: promptTemplate,
|
|
42
|
+
* inputVariables: ["person"],
|
|
43
|
+
* });
|
|
44
|
+
* const chain = new LLMChain({ llm: model, prompt });
|
|
45
|
+
* const response = await chain.call({ person: moderatedContent });
|
|
46
|
+
* console.log({ response });
|
|
47
|
+
* } catch (error) {
|
|
48
|
+
* console.error("Naughty words detected!");
|
|
49
|
+
* }
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
declare class OpenAIModerationChain extends BaseChain implements OpenAIModerationChainInput {
|
|
53
|
+
static lc_name(): string;
|
|
54
|
+
get lc_secrets(): {
|
|
55
|
+
[key: string]: string;
|
|
56
|
+
} | undefined;
|
|
57
|
+
inputKey: string;
|
|
58
|
+
outputKey: string;
|
|
59
|
+
openAIApiKey?: string;
|
|
60
|
+
openAIOrganization?: string;
|
|
61
|
+
clientConfig: ClientOptions;
|
|
62
|
+
client: OpenAIClient;
|
|
63
|
+
throwError: boolean;
|
|
64
|
+
caller: AsyncCaller;
|
|
65
|
+
constructor(fields?: OpenAIModerationChainInput);
|
|
66
|
+
_moderate(text: string, results: OpenAIClient.Moderation): string;
|
|
67
|
+
_call(values: ChainValues): Promise<ChainValues>;
|
|
68
|
+
_chainType(): string;
|
|
69
|
+
get inputKeys(): string[];
|
|
70
|
+
get outputKeys(): string[];
|
|
71
|
+
}
|
|
72
|
+
//#endregion
|
|
73
|
+
export { OpenAIModerationChain, OpenAIModerationChainInput };
|
|
74
|
+
//# sourceMappingURL=openai_moderation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai_moderation.d.ts","names":["ClientOptions","OpenAIClient","ChainValues","AsyncCaller","AsyncCallerParams","BaseChain","ChainInputs","OpenAIModerationChainInput","OpenAIModerationChain","Moderation","Promise"],"sources":["../../src/chains/openai_moderation.d.ts"],"sourcesContent":["import { type ClientOptions, OpenAIClient } from \"@langchain/openai\";\nimport { ChainValues } from \"@langchain/core/utils/types\";\nimport { AsyncCaller, AsyncCallerParams } from \"@langchain/core/utils/async_caller\";\nimport { BaseChain, ChainInputs } from \"./base.js\";\n/**\n * Interface for the input parameters of the OpenAIModerationChain class.\n */\nexport interface OpenAIModerationChainInput extends ChainInputs, AsyncCallerParams {\n apiKey?: string;\n /** @deprecated Use \"apiKey\" instead. */\n openAIApiKey?: string;\n openAIOrganization?: string;\n throwError?: boolean;\n configuration?: ClientOptions;\n}\n/**\n * Class representing a chain for moderating text using the OpenAI\n * Moderation API. It extends the BaseChain class and implements the\n * OpenAIModerationChainInput interface.\n * @example\n * ```typescript\n * const moderation = new OpenAIModerationChain({ throwError: true });\n *\n * const badString = \"Bad naughty words from user\";\n *\n * try {\n * const { output: moderatedContent, results } = await moderation.call({\n * input: badString,\n * });\n *\n * if (results[0].category_scores[\"harassment/threatening\"] > 0.01) {\n * throw new Error(\"Harassment detected!\");\n * }\n *\n * const model = new OpenAI({ temperature: 0 });\n * const promptTemplate = \"Hello, how are you today {person}?\";\n * const prompt = new PromptTemplate({\n * template: promptTemplate,\n * inputVariables: [\"person\"],\n * });\n * const chain = new LLMChain({ llm: model, prompt });\n * const response = await chain.call({ person: moderatedContent });\n * console.log({ response });\n * } catch (error) {\n * console.error(\"Naughty words detected!\");\n * }\n * ```\n */\nexport declare class OpenAIModerationChain extends BaseChain implements OpenAIModerationChainInput {\n static lc_name(): string;\n get lc_secrets(): {\n [key: string]: string;\n } | undefined;\n inputKey: string;\n outputKey: string;\n openAIApiKey?: string;\n openAIOrganization?: string;\n clientConfig: ClientOptions;\n client: OpenAIClient;\n throwError: boolean;\n caller: AsyncCaller;\n constructor(fields?: OpenAIModerationChainInput);\n _moderate(text: string, results: OpenAIClient.Moderation): string;\n _call(values: ChainValues): Promise<ChainValues>;\n _chainType(): string;\n get inputKeys(): string[];\n get outputKeys(): string[];\n}\n"],"mappings":";;;;;;;;;AAOA;AAA2C,UAA1BO,0BAAAA,SAAmCD,WAAT,EAAsBF,iBAAtB,CAAA;EAAA,MAMvBJ,CAAAA,EAAAA,MAAAA;EAAa;EAN8B,YAAEI,CAAAA,EAAAA,MAAAA;EAAiB,kBAAA,CAAA,EAAA,MAAA;EAyC7DI,UAAAA,CAAAA,EAAAA,OAAAA;EAAqB,aAAA,CAAA,EAnCtBR,aAmCsB;;;;;;;;;;;AAAwD;;;;;;;;;;;;;;;;;;;;;;;;cAA7EQ,qBAAAA,SAA8BH,SAAAA,YAAqBE;;;;;;;;;gBAStDP;UACNC;;UAEAE;uBACaI;mCACYN,YAAAA,CAAaQ;gBAChCP,cAAcQ,QAAQR"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { BaseChain } from "./base.js";
|
|
2
|
+
import { getEnvironmentVariable } from "@langchain/core/utils/env";
|
|
3
|
+
import { OpenAIClient } from "@langchain/openai";
|
|
4
|
+
import { AsyncCaller } from "@langchain/core/utils/async_caller";
|
|
5
|
+
|
|
6
|
+
//#region src/chains/openai_moderation.ts
|
|
7
|
+
/**
|
|
8
|
+
* Class representing a chain for moderating text using the OpenAI
|
|
9
|
+
* Moderation API. It extends the BaseChain class and implements the
|
|
10
|
+
* OpenAIModerationChainInput interface.
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* const moderation = new OpenAIModerationChain({ throwError: true });
|
|
14
|
+
*
|
|
15
|
+
* const badString = "Bad naughty words from user";
|
|
16
|
+
*
|
|
17
|
+
* try {
|
|
18
|
+
* const { output: moderatedContent, results } = await moderation.call({
|
|
19
|
+
* input: badString,
|
|
20
|
+
* });
|
|
21
|
+
*
|
|
22
|
+
* if (results[0].category_scores["harassment/threatening"] > 0.01) {
|
|
23
|
+
* throw new Error("Harassment detected!");
|
|
24
|
+
* }
|
|
25
|
+
*
|
|
26
|
+
* const model = new OpenAI({ temperature: 0 });
|
|
27
|
+
* const promptTemplate = "Hello, how are you today {person}?";
|
|
28
|
+
* const prompt = new PromptTemplate({
|
|
29
|
+
* template: promptTemplate,
|
|
30
|
+
* inputVariables: ["person"],
|
|
31
|
+
* });
|
|
32
|
+
* const chain = new LLMChain({ llm: model, prompt });
|
|
33
|
+
* const response = await chain.call({ person: moderatedContent });
|
|
34
|
+
* console.log({ response });
|
|
35
|
+
* } catch (error) {
|
|
36
|
+
* console.error("Naughty words detected!");
|
|
37
|
+
* }
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
var OpenAIModerationChain = class extends BaseChain {
|
|
41
|
+
static lc_name() {
|
|
42
|
+
return "OpenAIModerationChain";
|
|
43
|
+
}
|
|
44
|
+
get lc_secrets() {
|
|
45
|
+
return { openAIApiKey: "OPENAI_API_KEY" };
|
|
46
|
+
}
|
|
47
|
+
inputKey = "input";
|
|
48
|
+
outputKey = "output";
|
|
49
|
+
openAIApiKey;
|
|
50
|
+
openAIOrganization;
|
|
51
|
+
clientConfig;
|
|
52
|
+
client;
|
|
53
|
+
throwError;
|
|
54
|
+
caller;
|
|
55
|
+
constructor(fields) {
|
|
56
|
+
super(fields);
|
|
57
|
+
this.throwError = fields?.throwError ?? false;
|
|
58
|
+
this.openAIApiKey = fields?.apiKey ?? fields?.openAIApiKey ?? getEnvironmentVariable("OPENAI_API_KEY");
|
|
59
|
+
if (!this.openAIApiKey) throw new Error("OpenAI API key not found");
|
|
60
|
+
this.openAIOrganization = fields?.openAIOrganization;
|
|
61
|
+
this.clientConfig = {
|
|
62
|
+
...fields?.configuration,
|
|
63
|
+
apiKey: this.openAIApiKey,
|
|
64
|
+
organization: this.openAIOrganization
|
|
65
|
+
};
|
|
66
|
+
this.client = new OpenAIClient(this.clientConfig);
|
|
67
|
+
this.caller = new AsyncCaller(fields ?? {});
|
|
68
|
+
}
|
|
69
|
+
_moderate(text, results) {
|
|
70
|
+
if (results.flagged) {
|
|
71
|
+
const errorStr = "Text was found that violates OpenAI's content policy.";
|
|
72
|
+
if (this.throwError) throw new Error(errorStr);
|
|
73
|
+
else return errorStr;
|
|
74
|
+
}
|
|
75
|
+
return text;
|
|
76
|
+
}
|
|
77
|
+
async _call(values) {
|
|
78
|
+
const text = values[this.inputKey];
|
|
79
|
+
const moderationRequest = { input: text };
|
|
80
|
+
let mod;
|
|
81
|
+
try {
|
|
82
|
+
mod = await this.caller.call(() => this.client.moderations.create(moderationRequest));
|
|
83
|
+
} catch (error) {
|
|
84
|
+
if (error instanceof Error) throw error;
|
|
85
|
+
else throw new Error(error);
|
|
86
|
+
}
|
|
87
|
+
const output = this._moderate(text, mod.results[0]);
|
|
88
|
+
return {
|
|
89
|
+
[this.outputKey]: output,
|
|
90
|
+
results: mod.results
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
_chainType() {
|
|
94
|
+
return "moderation_chain";
|
|
95
|
+
}
|
|
96
|
+
get inputKeys() {
|
|
97
|
+
return [this.inputKey];
|
|
98
|
+
}
|
|
99
|
+
get outputKeys() {
|
|
100
|
+
return [this.outputKey];
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
//#endregion
|
|
105
|
+
export { OpenAIModerationChain };
|
|
106
|
+
//# sourceMappingURL=openai_moderation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai_moderation.js","names":["fields?: OpenAIModerationChainInput","text: string","results: OpenAIClient.Moderation","values: ChainValues","moderationRequest: OpenAIClient.ModerationCreateParams"],"sources":["../../src/chains/openai_moderation.ts"],"sourcesContent":["import { type ClientOptions, OpenAIClient } from \"@langchain/openai\";\nimport { ChainValues } from \"@langchain/core/utils/types\";\nimport {\n AsyncCaller,\n AsyncCallerParams,\n} from \"@langchain/core/utils/async_caller\";\nimport { getEnvironmentVariable } from \"@langchain/core/utils/env\";\nimport { BaseChain, ChainInputs } from \"./base.js\";\n\n/**\n * Interface for the input parameters of the OpenAIModerationChain class.\n */\nexport interface OpenAIModerationChainInput\n extends ChainInputs,\n AsyncCallerParams {\n apiKey?: string;\n /** @deprecated Use \"apiKey\" instead. */\n openAIApiKey?: string;\n openAIOrganization?: string;\n throwError?: boolean;\n configuration?: ClientOptions;\n}\n\n/**\n * Class representing a chain for moderating text using the OpenAI\n * Moderation API. It extends the BaseChain class and implements the\n * OpenAIModerationChainInput interface.\n * @example\n * ```typescript\n * const moderation = new OpenAIModerationChain({ throwError: true });\n *\n * const badString = \"Bad naughty words from user\";\n *\n * try {\n * const { output: moderatedContent, results } = await moderation.call({\n * input: badString,\n * });\n *\n * if (results[0].category_scores[\"harassment/threatening\"] > 0.01) {\n * throw new Error(\"Harassment detected!\");\n * }\n *\n * const model = new OpenAI({ temperature: 0 });\n * const promptTemplate = \"Hello, how are you today {person}?\";\n * const prompt = new PromptTemplate({\n * template: promptTemplate,\n * inputVariables: [\"person\"],\n * });\n * const chain = new LLMChain({ llm: model, prompt });\n * const response = await chain.call({ person: moderatedContent });\n * console.log({ response });\n * } catch (error) {\n * console.error(\"Naughty words detected!\");\n * }\n * ```\n */\nexport class OpenAIModerationChain\n extends BaseChain\n implements OpenAIModerationChainInput\n{\n static lc_name() {\n return \"OpenAIModerationChain\";\n }\n\n get lc_secrets(): { [key: string]: string } | undefined {\n return {\n openAIApiKey: \"OPENAI_API_KEY\",\n };\n }\n\n inputKey = \"input\";\n\n outputKey = \"output\";\n\n openAIApiKey?: string;\n\n openAIOrganization?: string;\n\n clientConfig: ClientOptions;\n\n client: OpenAIClient;\n\n throwError: boolean;\n\n caller: AsyncCaller;\n\n constructor(fields?: OpenAIModerationChainInput) {\n super(fields);\n this.throwError = fields?.throwError ?? false;\n this.openAIApiKey =\n fields?.apiKey ??\n fields?.openAIApiKey ??\n getEnvironmentVariable(\"OPENAI_API_KEY\");\n\n if (!this.openAIApiKey) {\n throw new Error(\"OpenAI API key not found\");\n }\n\n this.openAIOrganization = fields?.openAIOrganization;\n\n this.clientConfig = {\n ...fields?.configuration,\n apiKey: this.openAIApiKey,\n organization: this.openAIOrganization,\n };\n\n this.client = new OpenAIClient(this.clientConfig);\n\n this.caller = new AsyncCaller(fields ?? {});\n }\n\n _moderate(text: string, results: OpenAIClient.Moderation): string {\n if (results.flagged) {\n const errorStr = \"Text was found that violates OpenAI's content policy.\";\n if (this.throwError) {\n throw new Error(errorStr);\n } else {\n return errorStr;\n }\n }\n return text;\n }\n\n async _call(values: ChainValues): Promise<ChainValues> {\n const text = values[this.inputKey];\n const moderationRequest: OpenAIClient.ModerationCreateParams = {\n input: text,\n };\n let mod;\n try {\n mod = await this.caller.call(() =>\n this.client.moderations.create(moderationRequest)\n );\n } catch (error) {\n // eslint-disable-next-line no-instanceof/no-instanceof\n if (error instanceof Error) {\n throw error;\n } else {\n throw new Error(error as string);\n }\n }\n const output = this._moderate(text, mod.results[0]);\n return {\n [this.outputKey]: output,\n results: mod.results,\n };\n }\n\n _chainType() {\n return \"moderation_chain\";\n }\n\n get inputKeys(): string[] {\n return [this.inputKey];\n }\n\n get outputKeys(): string[] {\n return [this.outputKey];\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwDA,IAAa,wBAAb,cACU,UAEV;CACE,OAAO,UAAU;AACf,SAAO;CACR;CAED,IAAI,aAAoD;AACtD,SAAO,EACL,cAAc,iBACf;CACF;CAED,WAAW;CAEX,YAAY;CAEZ;CAEA;CAEA;CAEA;CAEA;CAEA;CAEA,YAAYA,QAAqC;EAC/C,MAAM,OAAO;EACb,KAAK,aAAa,QAAQ,cAAc;EACxC,KAAK,eACH,QAAQ,UACR,QAAQ,gBACR,uBAAuB,iBAAiB;AAE1C,MAAI,CAAC,KAAK,aACR,OAAM,IAAI,MAAM;EAGlB,KAAK,qBAAqB,QAAQ;EAElC,KAAK,eAAe;GAClB,GAAG,QAAQ;GACX,QAAQ,KAAK;GACb,cAAc,KAAK;EACpB;EAED,KAAK,SAAS,IAAI,aAAa,KAAK;EAEpC,KAAK,SAAS,IAAI,YAAY,UAAU,CAAE;CAC3C;CAED,UAAUC,MAAcC,SAA0C;AAChE,MAAI,QAAQ,SAAS;GACnB,MAAM,WAAW;AACjB,OAAI,KAAK,WACP,OAAM,IAAI,MAAM;OAEhB,QAAO;EAEV;AACD,SAAO;CACR;CAED,MAAM,MAAMC,QAA2C;EACrD,MAAM,OAAO,OAAO,KAAK;EACzB,MAAMC,oBAAyD,EAC7D,OAAO,KACR;EACD,IAAI;AACJ,MAAI;GACF,MAAM,MAAM,KAAK,OAAO,KAAK,MAC3B,KAAK,OAAO,YAAY,OAAO,kBAAkB,CAClD;EACF,SAAQ,OAAO;AAEd,OAAI,iBAAiB,MACnB,OAAM;OAEN,OAAM,IAAI,MAAM;EAEnB;EACD,MAAM,SAAS,KAAK,UAAU,MAAM,IAAI,QAAQ,GAAG;AACnD,SAAO;IACJ,KAAK,YAAY;GAClB,SAAS,IAAI;EACd;CACF;CAED,aAAa;AACX,SAAO;CACR;CAED,IAAI,YAAsB;AACxB,SAAO,CAAC,KAAK,QAAS;CACvB;CAED,IAAI,aAAuB;AACzB,SAAO,CAAC,KAAK,SAAU;CACxB;AACF"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { MapReduceDocumentsChain, MapReduceDocumentsChainInput, RefineDocumentsChain, StuffDocumentsChain } from "../combine_docs_chain.cjs";
|
|
2
2
|
import { BasePromptTemplate } from "@langchain/core/prompts";
|
|
3
|
-
import * as
|
|
3
|
+
import * as _langchain_core_language_models_base1 from "@langchain/core/language_models/base";
|
|
4
4
|
import { BaseLanguageModelInterface } from "@langchain/core/language_models/base";
|
|
5
5
|
|
|
6
6
|
//#region src/chains/question_answering/load.d.ts
|
|
@@ -16,7 +16,7 @@ type QAChainParams = ({
|
|
|
16
16
|
} & MapReduceQAChainParams) | ({
|
|
17
17
|
type?: "refine";
|
|
18
18
|
} & RefineQAChainParams);
|
|
19
|
-
declare const loadQAChain: (llm: BaseLanguageModelInterface<any,
|
|
19
|
+
declare const loadQAChain: (llm: BaseLanguageModelInterface<any, _langchain_core_language_models_base1.BaseLanguageModelCallOptions>, params?: QAChainParams) => MapReduceDocumentsChain | RefineDocumentsChain | StuffDocumentsChain;
|
|
20
20
|
/**
|
|
21
21
|
* Represents the parameters for creating a StuffQAChain.
|
|
22
22
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load.d.cts","names":["BaseLanguageModelInterface","BasePromptTemplate","StuffDocumentsChain","MapReduceDocumentsChain","RefineDocumentsChain","MapReduceDocumentsChainInput","QAChainParams","StuffQAChainParams","MapReduceQAChainParams","RefineQAChainParams","loadQAChain","
|
|
1
|
+
{"version":3,"file":"load.d.cts","names":["BaseLanguageModelInterface","BasePromptTemplate","StuffDocumentsChain","MapReduceDocumentsChain","RefineDocumentsChain","MapReduceDocumentsChainInput","QAChainParams","StuffQAChainParams","MapReduceQAChainParams","RefineQAChainParams","loadQAChain","_langchain_core_language_models_base1","BaseLanguageModelCallOptions","loadQAStuffChain","loadQAMapReduceChain","loadQARefineChain"],"sources":["../../../src/chains/question_answering/load.d.ts"],"sourcesContent":["import type { BaseLanguageModelInterface } from \"@langchain/core/language_models/base\";\nimport { BasePromptTemplate } from \"@langchain/core/prompts\";\nimport { StuffDocumentsChain, MapReduceDocumentsChain, RefineDocumentsChain, MapReduceDocumentsChainInput } from \"../combine_docs_chain.js\";\n/**\n * Represents the parameters for creating a QAChain. It can be of three\n * types: \"stuff\", \"map_reduce\", or \"refine\".\n */\nexport type QAChainParams = ({\n type?: \"stuff\";\n} & StuffQAChainParams) | ({\n type?: \"map_reduce\";\n} & MapReduceQAChainParams) | ({\n type?: \"refine\";\n} & RefineQAChainParams);\nexport declare const loadQAChain: (llm: BaseLanguageModelInterface<any, import(\"@langchain/core/language_models/base\").BaseLanguageModelCallOptions>, params?: QAChainParams) => MapReduceDocumentsChain | RefineDocumentsChain | StuffDocumentsChain;\n/**\n * Represents the parameters for creating a StuffQAChain.\n */\nexport interface StuffQAChainParams {\n prompt?: BasePromptTemplate;\n verbose?: boolean;\n}\n/**\n * Loads a StuffQAChain based on the provided parameters. It takes an LLM\n * instance and StuffQAChainParams as parameters.\n * @param llm An instance of BaseLanguageModel.\n * @param params Parameters for creating a StuffQAChain.\n * @returns A StuffQAChain instance.\n */\nexport declare function loadQAStuffChain(llm: BaseLanguageModelInterface, params?: StuffQAChainParams): StuffDocumentsChain;\n/**\n * Represents the parameters for creating a MapReduceQAChain.\n */\nexport interface MapReduceQAChainParams {\n returnIntermediateSteps?: MapReduceDocumentsChainInput[\"returnIntermediateSteps\"];\n combineMapPrompt?: BasePromptTemplate;\n combinePrompt?: BasePromptTemplate;\n combineLLM?: BaseLanguageModelInterface;\n verbose?: boolean;\n}\n/**\n * Loads a MapReduceQAChain based on the provided parameters. It takes an\n * LLM instance and MapReduceQAChainParams as parameters.\n * @param llm An instance of BaseLanguageModel.\n * @param params Parameters for creating a MapReduceQAChain.\n * @returns A MapReduceQAChain instance.\n */\nexport declare function loadQAMapReduceChain(llm: BaseLanguageModelInterface, params?: MapReduceQAChainParams): MapReduceDocumentsChain;\n/**\n * Represents the parameters for creating a RefineQAChain.\n */\nexport interface RefineQAChainParams {\n questionPrompt?: BasePromptTemplate;\n refinePrompt?: BasePromptTemplate;\n refineLLM?: BaseLanguageModelInterface;\n verbose?: boolean;\n}\n/**\n * Loads a RefineQAChain based on the provided parameters. It takes an LLM\n * instance and RefineQAChainParams as parameters.\n * @param llm An instance of BaseLanguageModel.\n * @param params Parameters for creating a RefineQAChain.\n * @returns A RefineQAChain instance.\n */\nexport declare function loadQARefineChain(llm: BaseLanguageModelInterface, params?: RefineQAChainParams): RefineDocumentsChain;\n"],"mappings":";;;;;;;;;;AAOA;AAAyB,KAAbM,aAAAA,GAAa,CAAA;EAAA,IAErBC,CAAAA,EAAAA,OAAAA;CAAkB,GAAlBA,kBAEAC,CAAAA,GAAAA,CAAAA;EAAsB,IAEtBC,CAAAA,EAAAA,YAAAA;AAAmB,CAAA,GAFnBD,sBAEmB,CAAA,GAAA,CAAA;EACFE,IAAAA,CAAAA,EAAAA,QAAgO;CAAA,GADjPD,mBACiP,CAAA;AAAAE,cAAhOD,WAAgOC,EAAAA,CAAAA,GAAAA,EAA7MX,0BAA+EY,CAAAA,GAAAA,EAA8HD,qCAAAA,CAA9HC,4BAAAA,CAAAA,EAAAA,MAAAA,CAAAA,EAAwCN,aAAxCM,EAAAA,GAA0DT,uBAA1DS,GAAoFR,oBAApFQ,GAA2GV,mBAA3GU;;;;AAAoFR,UAI1LG,kBAAAA,CAJ0LH;EAAoB,MAAGF,CAAAA,EAKrND,kBALqNC;EAAmB,OAAA,CAAA,EAAA,OAAA;AAIrP;AAWA;;;;;AAA2H;AAI3H;AAAuC,iBAJfW,gBAAAA,CAIe,GAAA,EAJOb,0BAIP,EAAA,MAAA,CAAA,EAJ4CO,kBAI5C,CAAA,EAJiEL,mBAIjE;;;;AAItBF,UAJAQ,sBAAAA,CAIAR;EAA0B,uBAAA,CAAA,EAHbK,4BAGa,CAAA,yBAAA,CAAA;EAUnBS,gBAAAA,CAAAA,EAZDb,kBAYqB;EAAA,aAAA,CAAA,EAXxBA,kBAWwB;EAAA,UAAMD,CAAAA,EAVjCA,0BAUiCA;EAA0B,OAAWQ,CAAAA,EAAAA,OAAAA;;AAAgD;AAIvI;;;;;AAG0C;AAUlBO,iBAjBAD,oBAAAA,CAiBiB,GAAA,EAjBSd,0BAiBT,EAAA,MAAA,CAAA,EAjB8CQ,sBAiB9C,CAAA,EAjBuEL,uBAiBvE;;;;AAAiEC,UAbzFK,mBAAAA,CAayFL;EAAoB,cAAA,CAAA,EAZzGH,kBAYyG;iBAX3GA;cACHD;;;;;;;;;;iBAUQe,iBAAAA,MAAuBf,qCAAqCS,sBAAsBL"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { MapReduceDocumentsChain, MapReduceDocumentsChainInput, RefineDocumentsChain, StuffDocumentsChain } from "../combine_docs_chain.js";
|
|
2
2
|
import { BasePromptTemplate } from "@langchain/core/prompts";
|
|
3
|
-
import * as
|
|
3
|
+
import * as _langchain_core_language_models_base1 from "@langchain/core/language_models/base";
|
|
4
4
|
import { BaseLanguageModelInterface } from "@langchain/core/language_models/base";
|
|
5
5
|
|
|
6
6
|
//#region src/chains/question_answering/load.d.ts
|
|
@@ -16,7 +16,7 @@ type QAChainParams = ({
|
|
|
16
16
|
} & MapReduceQAChainParams) | ({
|
|
17
17
|
type?: "refine";
|
|
18
18
|
} & RefineQAChainParams);
|
|
19
|
-
declare const loadQAChain: (llm: BaseLanguageModelInterface<any,
|
|
19
|
+
declare const loadQAChain: (llm: BaseLanguageModelInterface<any, _langchain_core_language_models_base1.BaseLanguageModelCallOptions>, params?: QAChainParams) => MapReduceDocumentsChain | RefineDocumentsChain | StuffDocumentsChain;
|
|
20
20
|
/**
|
|
21
21
|
* Represents the parameters for creating a StuffQAChain.
|
|
22
22
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load.d.ts","names":["BaseLanguageModelInterface","BasePromptTemplate","StuffDocumentsChain","MapReduceDocumentsChain","RefineDocumentsChain","MapReduceDocumentsChainInput","QAChainParams","StuffQAChainParams","MapReduceQAChainParams","RefineQAChainParams","loadQAChain","
|
|
1
|
+
{"version":3,"file":"load.d.ts","names":["BaseLanguageModelInterface","BasePromptTemplate","StuffDocumentsChain","MapReduceDocumentsChain","RefineDocumentsChain","MapReduceDocumentsChainInput","QAChainParams","StuffQAChainParams","MapReduceQAChainParams","RefineQAChainParams","loadQAChain","_langchain_core_language_models_base1","BaseLanguageModelCallOptions","loadQAStuffChain","loadQAMapReduceChain","loadQARefineChain"],"sources":["../../../src/chains/question_answering/load.d.ts"],"sourcesContent":["import type { BaseLanguageModelInterface } from \"@langchain/core/language_models/base\";\nimport { BasePromptTemplate } from \"@langchain/core/prompts\";\nimport { StuffDocumentsChain, MapReduceDocumentsChain, RefineDocumentsChain, MapReduceDocumentsChainInput } from \"../combine_docs_chain.js\";\n/**\n * Represents the parameters for creating a QAChain. It can be of three\n * types: \"stuff\", \"map_reduce\", or \"refine\".\n */\nexport type QAChainParams = ({\n type?: \"stuff\";\n} & StuffQAChainParams) | ({\n type?: \"map_reduce\";\n} & MapReduceQAChainParams) | ({\n type?: \"refine\";\n} & RefineQAChainParams);\nexport declare const loadQAChain: (llm: BaseLanguageModelInterface<any, import(\"@langchain/core/language_models/base\").BaseLanguageModelCallOptions>, params?: QAChainParams) => MapReduceDocumentsChain | RefineDocumentsChain | StuffDocumentsChain;\n/**\n * Represents the parameters for creating a StuffQAChain.\n */\nexport interface StuffQAChainParams {\n prompt?: BasePromptTemplate;\n verbose?: boolean;\n}\n/**\n * Loads a StuffQAChain based on the provided parameters. It takes an LLM\n * instance and StuffQAChainParams as parameters.\n * @param llm An instance of BaseLanguageModel.\n * @param params Parameters for creating a StuffQAChain.\n * @returns A StuffQAChain instance.\n */\nexport declare function loadQAStuffChain(llm: BaseLanguageModelInterface, params?: StuffQAChainParams): StuffDocumentsChain;\n/**\n * Represents the parameters for creating a MapReduceQAChain.\n */\nexport interface MapReduceQAChainParams {\n returnIntermediateSteps?: MapReduceDocumentsChainInput[\"returnIntermediateSteps\"];\n combineMapPrompt?: BasePromptTemplate;\n combinePrompt?: BasePromptTemplate;\n combineLLM?: BaseLanguageModelInterface;\n verbose?: boolean;\n}\n/**\n * Loads a MapReduceQAChain based on the provided parameters. It takes an\n * LLM instance and MapReduceQAChainParams as parameters.\n * @param llm An instance of BaseLanguageModel.\n * @param params Parameters for creating a MapReduceQAChain.\n * @returns A MapReduceQAChain instance.\n */\nexport declare function loadQAMapReduceChain(llm: BaseLanguageModelInterface, params?: MapReduceQAChainParams): MapReduceDocumentsChain;\n/**\n * Represents the parameters for creating a RefineQAChain.\n */\nexport interface RefineQAChainParams {\n questionPrompt?: BasePromptTemplate;\n refinePrompt?: BasePromptTemplate;\n refineLLM?: BaseLanguageModelInterface;\n verbose?: boolean;\n}\n/**\n * Loads a RefineQAChain based on the provided parameters. It takes an LLM\n * instance and RefineQAChainParams as parameters.\n * @param llm An instance of BaseLanguageModel.\n * @param params Parameters for creating a RefineQAChain.\n * @returns A RefineQAChain instance.\n */\nexport declare function loadQARefineChain(llm: BaseLanguageModelInterface, params?: RefineQAChainParams): RefineDocumentsChain;\n"],"mappings":";;;;;;;;;;AAOA;AAAyB,KAAbM,aAAAA,GAAa,CAAA;EAAA,IAErBC,CAAAA,EAAAA,OAAAA;CAAkB,GAAlBA,kBAEAC,CAAAA,GAAAA,CAAAA;EAAsB,IAEtBC,CAAAA,EAAAA,YAAAA;AAAmB,CAAA,GAFnBD,sBAEmB,CAAA,GAAA,CAAA;EACFE,IAAAA,CAAAA,EAAAA,QAAgO;CAAA,GADjPD,mBACiP,CAAA;AAAAE,cAAhOD,WAAgOC,EAAAA,CAAAA,GAAAA,EAA7MX,0BAA+EY,CAAAA,GAAAA,EAA8HD,qCAAAA,CAA9HC,4BAAAA,CAAAA,EAAAA,MAAAA,CAAAA,EAAwCN,aAAxCM,EAAAA,GAA0DT,uBAA1DS,GAAoFR,oBAApFQ,GAA2GV,mBAA3GU;;;;AAAoFR,UAI1LG,kBAAAA,CAJ0LH;EAAoB,MAAGF,CAAAA,EAKrND,kBALqNC;EAAmB,OAAA,CAAA,EAAA,OAAA;AAIrP;AAWA;;;;;AAA2H;AAI3H;AAAuC,iBAJfW,gBAAAA,CAIe,GAAA,EAJOb,0BAIP,EAAA,MAAA,CAAA,EAJ4CO,kBAI5C,CAAA,EAJiEL,mBAIjE;;;;AAItBF,UAJAQ,sBAAAA,CAIAR;EAA0B,uBAAA,CAAA,EAHbK,4BAGa,CAAA,yBAAA,CAAA;EAUnBS,gBAAAA,CAAAA,EAZDb,kBAYqB;EAAA,aAAA,CAAA,EAXxBA,kBAWwB;EAAA,UAAMD,CAAAA,EAVjCA,0BAUiCA;EAA0B,OAAWQ,CAAAA,EAAAA,OAAAA;;AAAgD;AAIvI;;;;;AAG0C;AAUlBO,iBAjBAD,oBAAAA,CAiBiB,GAAA,EAjBSd,0BAiBT,EAAA,MAAA,CAAA,EAjB8CQ,sBAiB9C,CAAA,EAjBuEL,uBAiBvE;;;;AAAiEC,UAbzFK,mBAAAA,CAayFL;EAAoB,cAAA,CAAA,EAZzGH,kBAYyG;iBAX3GA;cACHD;;;;;;;;;;iBAUQe,iBAAAA,MAAuBf,qCAAqCS,sBAAsBL"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { MapReduceDocumentsChain, MapReduceDocumentsChainInput, RefineDocumentsChain, StuffDocumentsChain } from "../combine_docs_chain.cjs";
|
|
2
2
|
import { BasePromptTemplate } from "@langchain/core/prompts";
|
|
3
|
-
import * as
|
|
3
|
+
import * as _langchain_core_language_models_base0 from "@langchain/core/language_models/base";
|
|
4
4
|
import { BaseLanguageModelInterface } from "@langchain/core/language_models/base";
|
|
5
5
|
|
|
6
6
|
//#region src/chains/summarization/load.d.ts
|
|
@@ -27,7 +27,7 @@ type SummarizationChainParams = BaseParams & ({
|
|
|
27
27
|
refineLLM?: BaseLanguageModelInterface;
|
|
28
28
|
questionPrompt?: BasePromptTemplate;
|
|
29
29
|
});
|
|
30
|
-
declare const loadSummarizationChain: (llm: BaseLanguageModelInterface<any,
|
|
30
|
+
declare const loadSummarizationChain: (llm: BaseLanguageModelInterface<any, _langchain_core_language_models_base0.BaseLanguageModelCallOptions>, params?: SummarizationChainParams) => MapReduceDocumentsChain | RefineDocumentsChain | StuffDocumentsChain;
|
|
31
31
|
//#endregion
|
|
32
32
|
export { SummarizationChainParams, loadSummarizationChain };
|
|
33
33
|
//# sourceMappingURL=load.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load.d.cts","names":["BaseLanguageModelInterface","BasePromptTemplate","StuffDocumentsChain","MapReduceDocumentsChain","RefineDocumentsChain","MapReduceDocumentsChainInput","BaseParams","SummarizationChainParams","Pick","loadSummarizationChain","
|
|
1
|
+
{"version":3,"file":"load.d.cts","names":["BaseLanguageModelInterface","BasePromptTemplate","StuffDocumentsChain","MapReduceDocumentsChain","RefineDocumentsChain","MapReduceDocumentsChainInput","BaseParams","SummarizationChainParams","Pick","loadSummarizationChain","_langchain_core_language_models_base0","BaseLanguageModelCallOptions"],"sources":["../../../src/chains/summarization/load.d.ts"],"sourcesContent":["import type { BaseLanguageModelInterface } from \"@langchain/core/language_models/base\";\nimport { BasePromptTemplate } from \"@langchain/core/prompts\";\nimport { StuffDocumentsChain, MapReduceDocumentsChain, RefineDocumentsChain, MapReduceDocumentsChainInput } from \"../combine_docs_chain.js\";\n/**\n * Type for the base parameters that can be used to configure a\n * summarization chain.\n */\ntype BaseParams = {\n verbose?: boolean;\n};\n/** @interface */\nexport type SummarizationChainParams = BaseParams & ({\n type?: \"stuff\";\n prompt?: BasePromptTemplate;\n} | ({\n type?: \"map_reduce\";\n combineMapPrompt?: BasePromptTemplate;\n combinePrompt?: BasePromptTemplate;\n combineLLM?: BaseLanguageModelInterface;\n} & Pick<MapReduceDocumentsChainInput, \"returnIntermediateSteps\">) | {\n type?: \"refine\";\n refinePrompt?: BasePromptTemplate;\n refineLLM?: BaseLanguageModelInterface;\n questionPrompt?: BasePromptTemplate;\n});\nexport declare const loadSummarizationChain: (llm: BaseLanguageModelInterface<any, import(\"@langchain/core/language_models/base\").BaseLanguageModelCallOptions>, params?: SummarizationChainParams) => MapReduceDocumentsChain | RefineDocumentsChain | StuffDocumentsChain;\nexport {};\n"],"mappings":";;;;;;;;;;AAE4I;AAS5I,KAJKM,UAAAA,GAIOC;EAAwB,OAAA,CAAA,EAAA,OAAA;CAAA;;AAKbN,KALXM,wBAAAA,GAA2BD,UAKhBL,GAAAA,CAAAA;EAAkB,IACrBA,CAAAA,EAAAA,OAAAA;EAAkB,MACrBD,CAAAA,EALJC,kBAKID;CAA0B,GAAA,CAAA;EACN,IAAjCQ,CAAAA,EAAAA,YAAAA;EAAI,gBAEWP,CAAAA,EALIA,kBAKJA;EAAkB,aACrBD,CAAAA,EALIC,kBAKJD;EAA0B,UACrBC,CAAAA,EALJD,0BAKIC;AAAkB,CAAA,GAJnCO,IAImC,CAJ9BH,4BAI8B,EAAA,yBAAA,CAAA,CAAA,GAAA;EAElBI,IAAAA,CAAAA,EAAAA,QAAAA;EAAsP,YAAA,CAAA,EAJxPR,kBAIwP;EAAA,SAAAS,CAAAA,EAH3PV,0BAG2PU;EAA7G,cAA3GV,CAAAA,EAF9BC,kBAE8BD;CAA0B,CAAA;AAA0HG,cAAlLM,sBAAkLN,EAAAA,CAAAA,GAAAA,EAApJH,0BAAoJG,CAAAA,GAAAA,EAAoEO,qCAAAA,CAAzIC,4BAAAA,CAAqER,EAAAA,MAAAA,CAAAA,EAA7BI,wBAA6BJ,EAAAA,GAAAA,uBAAAA,GAA0BC,oBAA1BD,GAAiDD,mBAAjDC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { MapReduceDocumentsChain, MapReduceDocumentsChainInput, RefineDocumentsChain, StuffDocumentsChain } from "../combine_docs_chain.js";
|
|
2
2
|
import { BasePromptTemplate } from "@langchain/core/prompts";
|
|
3
|
-
import * as
|
|
3
|
+
import * as _langchain_core_language_models_base0 from "@langchain/core/language_models/base";
|
|
4
4
|
import { BaseLanguageModelInterface } from "@langchain/core/language_models/base";
|
|
5
5
|
|
|
6
6
|
//#region src/chains/summarization/load.d.ts
|
|
@@ -27,7 +27,7 @@ type SummarizationChainParams = BaseParams & ({
|
|
|
27
27
|
refineLLM?: BaseLanguageModelInterface;
|
|
28
28
|
questionPrompt?: BasePromptTemplate;
|
|
29
29
|
});
|
|
30
|
-
declare const loadSummarizationChain: (llm: BaseLanguageModelInterface<any,
|
|
30
|
+
declare const loadSummarizationChain: (llm: BaseLanguageModelInterface<any, _langchain_core_language_models_base0.BaseLanguageModelCallOptions>, params?: SummarizationChainParams) => MapReduceDocumentsChain | RefineDocumentsChain | StuffDocumentsChain;
|
|
31
31
|
//#endregion
|
|
32
32
|
export { SummarizationChainParams, loadSummarizationChain };
|
|
33
33
|
//# sourceMappingURL=load.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load.d.ts","names":["BaseLanguageModelInterface","BasePromptTemplate","StuffDocumentsChain","MapReduceDocumentsChain","RefineDocumentsChain","MapReduceDocumentsChainInput","BaseParams","SummarizationChainParams","Pick","loadSummarizationChain","
|
|
1
|
+
{"version":3,"file":"load.d.ts","names":["BaseLanguageModelInterface","BasePromptTemplate","StuffDocumentsChain","MapReduceDocumentsChain","RefineDocumentsChain","MapReduceDocumentsChainInput","BaseParams","SummarizationChainParams","Pick","loadSummarizationChain","_langchain_core_language_models_base0","BaseLanguageModelCallOptions"],"sources":["../../../src/chains/summarization/load.d.ts"],"sourcesContent":["import type { BaseLanguageModelInterface } from \"@langchain/core/language_models/base\";\nimport { BasePromptTemplate } from \"@langchain/core/prompts\";\nimport { StuffDocumentsChain, MapReduceDocumentsChain, RefineDocumentsChain, MapReduceDocumentsChainInput } from \"../combine_docs_chain.js\";\n/**\n * Type for the base parameters that can be used to configure a\n * summarization chain.\n */\ntype BaseParams = {\n verbose?: boolean;\n};\n/** @interface */\nexport type SummarizationChainParams = BaseParams & ({\n type?: \"stuff\";\n prompt?: BasePromptTemplate;\n} | ({\n type?: \"map_reduce\";\n combineMapPrompt?: BasePromptTemplate;\n combinePrompt?: BasePromptTemplate;\n combineLLM?: BaseLanguageModelInterface;\n} & Pick<MapReduceDocumentsChainInput, \"returnIntermediateSteps\">) | {\n type?: \"refine\";\n refinePrompt?: BasePromptTemplate;\n refineLLM?: BaseLanguageModelInterface;\n questionPrompt?: BasePromptTemplate;\n});\nexport declare const loadSummarizationChain: (llm: BaseLanguageModelInterface<any, import(\"@langchain/core/language_models/base\").BaseLanguageModelCallOptions>, params?: SummarizationChainParams) => MapReduceDocumentsChain | RefineDocumentsChain | StuffDocumentsChain;\nexport {};\n"],"mappings":";;;;;;;;;;AAE4I;AAS5I,KAJKM,UAAAA,GAIOC;EAAwB,OAAA,CAAA,EAAA,OAAA;CAAA;;AAKbN,KALXM,wBAAAA,GAA2BD,UAKhBL,GAAAA,CAAAA;EAAkB,IACrBA,CAAAA,EAAAA,OAAAA;EAAkB,MACrBD,CAAAA,EALJC,kBAKID;CAA0B,GAAA,CAAA;EACN,IAAjCQ,CAAAA,EAAAA,YAAAA;EAAI,gBAEWP,CAAAA,EALIA,kBAKJA;EAAkB,aACrBD,CAAAA,EALIC,kBAKJD;EAA0B,UACrBC,CAAAA,EALJD,0BAKIC;AAAkB,CAAA,GAJnCO,IAImC,CAJ9BH,4BAI8B,EAAA,yBAAA,CAAA,CAAA,GAAA;EAElBI,IAAAA,CAAAA,EAAAA,QAAAA;EAAsP,YAAA,CAAA,EAJxPR,kBAIwP;EAAA,SAAAS,CAAAA,EAH3PV,0BAG2PU;EAA7G,cAA3GV,CAAAA,EAF9BC,kBAE8BD;CAA0B,CAAA;AAA0HG,cAAlLM,sBAAkLN,EAAAA,CAAAA,GAAAA,EAApJH,0BAAoJG,CAAAA,GAAAA,EAAoEO,qCAAAA,CAAzIC,4BAAAA,CAAqER,EAAAA,MAAAA,CAAAA,EAA7BI,wBAA6BJ,EAAAA,GAAAA,uBAAAA,GAA0BC,oBAA1BD,GAAiDD,mBAAjDC"}
|
|
@@ -134,7 +134,7 @@ async function _initChatModelHelper(model, modelProvider, params = {}) {
|
|
|
134
134
|
* _inferModelProvider("unknown-model"); // returns undefined
|
|
135
135
|
*/
|
|
136
136
|
function _inferModelProvider(modelName) {
|
|
137
|
-
if (modelName.startsWith("gpt-3") || modelName.startsWith("gpt-4") || modelName.startsWith("o1") || modelName.startsWith("o3") || modelName.startsWith("o4")) return "openai";
|
|
137
|
+
if (modelName.startsWith("gpt-3") || modelName.startsWith("gpt-4") || modelName.startsWith("gpt-5") || modelName.startsWith("o1") || modelName.startsWith("o3") || modelName.startsWith("o4")) return "openai";
|
|
138
138
|
else if (modelName.startsWith("claude")) return "anthropic";
|
|
139
139
|
else if (modelName.startsWith("command")) return "cohere";
|
|
140
140
|
else if (modelName.startsWith("accounts/fireworks")) return "fireworks";
|