@luanpoppe/ai 1.0.3 → 1.0.4
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/index.d.ts +9 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +24 -12
- package/dist/index.js.map +1 -1
- package/dist/langchain/models.d.ts +10 -4
- package/dist/langchain/models.d.ts.map +1 -1
- package/dist/langchain/models.js +22 -10
- package/dist/langchain/models.js.map +1 -1
- package/package.json +3 -2
- package/src/index.ts +39 -14
- package/src/langchain/models.ts +32 -12
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { LangchainModels } from "./langchain/models";
|
|
1
|
+
import { LangchainModels, LLMModelConfig } from "./langchain/models";
|
|
2
2
|
import { AIModelNames } from "./@types/model-names";
|
|
3
3
|
import z from "zod";
|
|
4
4
|
import { MessageInput } from "./langchain/messages";
|
|
@@ -11,12 +11,15 @@ type LangchainConstructor = {
|
|
|
11
11
|
openAIApiKey?: string;
|
|
12
12
|
};
|
|
13
13
|
export type LangchainCallParams = {
|
|
14
|
+
agent: {
|
|
15
|
+
middleware?: AgentMiddleware[];
|
|
16
|
+
tools?: (ServerTool | ClientTool)[];
|
|
17
|
+
};
|
|
18
|
+
model: Omit<LLMModelConfig, "apiKey" | "model">;
|
|
14
19
|
aiModel: AIModelNames;
|
|
15
20
|
messages: MessageInput[];
|
|
16
21
|
systemPrompt?: string;
|
|
17
22
|
maxRetries?: number;
|
|
18
|
-
middleware?: AgentMiddleware[];
|
|
19
|
-
tools?: (ServerTool | ClientTool)[];
|
|
20
23
|
};
|
|
21
24
|
export type LangchainCallReturn = Promise<{
|
|
22
25
|
text: string;
|
|
@@ -33,6 +36,9 @@ export declare class Langchain {
|
|
|
33
36
|
constructor(tokens: LangchainConstructor);
|
|
34
37
|
call(params: LangchainCallParams): LangchainCallReturn;
|
|
35
38
|
callStructuredOutput<T extends z.ZodSchema>(params: LangchainCallStructuredOutputParams<T>): LangchainCallStructuredOutputReturn<typeof params.outputSchema>;
|
|
39
|
+
getRawAgent(params: LangchainCallParams, outputSchema?: z.ZodSchema | undefined): {
|
|
40
|
+
agent: import("langchain").ReactAgent<Record<string, any>, import("@langchain/core/utils/types").InteropZodObject | import("langchain").AnyAnnotationRoot | undefined, import("@langchain/core/utils/types").InteropZodObject | import("langchain").AnyAnnotationRoot, readonly AgentMiddleware<any, any, any>[]>;
|
|
41
|
+
};
|
|
36
42
|
private getModel;
|
|
37
43
|
private standardAgent;
|
|
38
44
|
private standardMiddlewares;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,CAAC,MAAM,KAAK,CAAC;AACpB,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EACL,eAAe,EACf,WAAW,EAIZ,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,KAAK,oBAAoB,GAAG;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,EAAE;QACL,UAAU,CAAC,EAAE,eAAe,EAAE,CAAC;QAC/B,KAAK,CAAC,EAAE,CAAC,UAAU,GAAG,UAAU,CAAC,EAAE,CAAC;KACrC,CAAC;IAEF,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,QAAQ,GAAG,OAAO,CAAC,CAAC;IAEhD,OAAO,EAAE,YAAY,CAAC;IACtB,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,OAAO,CAAC;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,WAAW,EAAE,CAAC;CACzB,CAAC,CAAC;AAEH,MAAM,MAAM,mCAAmC,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,IACnE,mBAAmB,GAAG;IACpB,YAAY,EAAE,CAAC,CAAC;CACjB,CAAC;AAEJ,MAAM,MAAM,mCAAmC,CAAC,CAAC,IAAI,OAAO,CAAC;IAC3D,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;CACtB,CAAC,CAAC;AAEH,qBAAa,SAAS;IACR,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,oBAAoB;IAE1C,IAAI,CAAC,MAAM,EAAE,mBAAmB,GAAG,mBAAmB;IAiBtD,oBAAoB,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,EAC9C,MAAM,EAAE,mCAAmC,CAAC,CAAC,CAAC,GAC7C,mCAAmC,CAAC,OAAO,MAAM,CAAC,YAAY,CAAC;IAiBlE,WAAW,CACT,MAAM,EAAE,mBAAmB,EAC3B,YAAY,CAAC,EAAE,CAAC,CAAC,SAAS,GAAG,SAAS;;;IAUxC,OAAO,CAAC,QAAQ;IAyBhB,OAAO,CAAC,aAAa;IAmBrB,OAAO,CAAC,mBAAmB;CAU5B;AAED,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,cAAc,EAAE,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -20,7 +20,8 @@ class Langchain {
|
|
|
20
20
|
});
|
|
21
21
|
const response = await agent.invoke({ messages });
|
|
22
22
|
return {
|
|
23
|
-
text: response.messages.at(-1)?.
|
|
23
|
+
text: response.messages.at(-1)?.content ??
|
|
24
|
+
"Empty response from the model",
|
|
24
25
|
messages: response.messages,
|
|
25
26
|
};
|
|
26
27
|
}
|
|
@@ -36,24 +37,35 @@ class Langchain {
|
|
|
36
37
|
const parsedResponse = outputSchema.parse(response?.structuredResponse);
|
|
37
38
|
return { response: parsedResponse };
|
|
38
39
|
}
|
|
39
|
-
|
|
40
|
+
getRawAgent(params, outputSchema) {
|
|
41
|
+
const agent = (0, langchain_1.createAgent)({
|
|
42
|
+
...this.standardAgent(params),
|
|
43
|
+
responseFormat: outputSchema,
|
|
44
|
+
});
|
|
45
|
+
return { agent };
|
|
46
|
+
}
|
|
47
|
+
getModel(params) {
|
|
48
|
+
const { aiModel, model } = params;
|
|
49
|
+
const { maxTokens, temperature } = model;
|
|
50
|
+
const config = {
|
|
51
|
+
model: aiModel,
|
|
52
|
+
maxTokens: maxTokens,
|
|
53
|
+
temperature: temperature,
|
|
54
|
+
};
|
|
40
55
|
if (aiModel.startsWith("gpt")) {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
apiKey: this.tokens.openAIApiKey,
|
|
44
|
-
});
|
|
56
|
+
config.apiKey = this.tokens.openAIApiKey;
|
|
57
|
+
return models_1.LangchainModels.gpt(config);
|
|
45
58
|
}
|
|
46
59
|
if (aiModel.startsWith("gemini")) {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
apiKey: this.tokens.googleGeminiToken ?? "",
|
|
50
|
-
});
|
|
60
|
+
config.apiKey = this.tokens.googleGeminiToken;
|
|
61
|
+
return models_1.LangchainModels.gemini(config);
|
|
51
62
|
}
|
|
52
63
|
throw new Error("Model not supported");
|
|
53
64
|
}
|
|
54
65
|
standardAgent(params) {
|
|
55
|
-
const {
|
|
56
|
-
const
|
|
66
|
+
const { systemPrompt, maxRetries = 3 } = params;
|
|
67
|
+
const { middleware, tools } = params.agent;
|
|
68
|
+
const model = this.getModel(params);
|
|
57
69
|
return {
|
|
58
70
|
model,
|
|
59
71
|
systemPrompt: systemPrompt ?? "",
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,+
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,13 @@
|
|
|
1
|
-
import { ChatGoogleGenerativeAI
|
|
2
|
-
import { ChatOpenAI
|
|
1
|
+
import { ChatGoogleGenerativeAI } from "@langchain/google-genai";
|
|
2
|
+
import { ChatOpenAI } from "@langchain/openai";
|
|
3
|
+
export type LLMModelConfig = {
|
|
4
|
+
model: string;
|
|
5
|
+
apiKey?: string | undefined;
|
|
6
|
+
maxTokens?: number | undefined;
|
|
7
|
+
temperature?: number | undefined;
|
|
8
|
+
};
|
|
3
9
|
export declare class LangchainModels {
|
|
4
|
-
static gpt(params:
|
|
5
|
-
static gemini(params:
|
|
10
|
+
static gpt(params: LLMModelConfig): ChatOpenAI<import("@langchain/openai").ChatOpenAICallOptions>;
|
|
11
|
+
static gemini(params: LLMModelConfig): ChatGoogleGenerativeAI;
|
|
6
12
|
}
|
|
7
13
|
//# sourceMappingURL=models.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/langchain/models.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,
|
|
1
|
+
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/langchain/models.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EAEvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,UAAU,EAAoB,MAAM,mBAAmB,CAAC;AAEjE,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAClC,CAAC;AAEF,qBAAa,eAAe;IAC1B,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,cAAc;IAgBjC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc;CAkBrC"}
|
package/dist/langchain/models.js
CHANGED
|
@@ -5,20 +5,32 @@ const google_genai_1 = require("@langchain/google-genai");
|
|
|
5
5
|
const openai_1 = require("@langchain/openai");
|
|
6
6
|
class LangchainModels {
|
|
7
7
|
static gpt(params) {
|
|
8
|
-
|
|
8
|
+
const { model, apiKey, maxTokens, temperature } = params;
|
|
9
|
+
if (!apiKey)
|
|
9
10
|
throw new Error("OpenAI API key is not passed in the model parameters");
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
}
|
|
11
|
+
const options = {
|
|
12
|
+
model,
|
|
13
|
+
apiKey,
|
|
14
|
+
};
|
|
15
|
+
if (maxTokens)
|
|
16
|
+
options.maxTokens = maxTokens;
|
|
17
|
+
if (temperature)
|
|
18
|
+
options.temperature = temperature;
|
|
19
|
+
return new openai_1.ChatOpenAI(options);
|
|
14
20
|
}
|
|
15
21
|
static gemini(params) {
|
|
16
|
-
|
|
22
|
+
const { apiKey, maxTokens, model, temperature } = params;
|
|
23
|
+
if (!apiKey)
|
|
17
24
|
throw new Error("Google Gemini API key is not passed in the model parameters");
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
}
|
|
25
|
+
const options = {
|
|
26
|
+
model,
|
|
27
|
+
apiKey,
|
|
28
|
+
};
|
|
29
|
+
if (maxTokens)
|
|
30
|
+
options.maxOutputTokens = maxTokens;
|
|
31
|
+
if (temperature)
|
|
32
|
+
options.temperature = temperature;
|
|
33
|
+
return new google_genai_1.ChatGoogleGenerativeAI(options);
|
|
22
34
|
}
|
|
23
35
|
}
|
|
24
36
|
exports.LangchainModels = LangchainModels;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/langchain/models.ts"],"names":[],"mappings":";;;AAAA,0DAGiC;AACjC,8CAAiE;
|
|
1
|
+
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/langchain/models.ts"],"names":[],"mappings":";;;AAAA,0DAGiC;AACjC,8CAAiE;AASjE,MAAa,eAAe;IAC1B,MAAM,CAAC,GAAG,CAAC,MAAsB;QAC/B,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;QACzD,IAAI,CAAC,MAAM;YACT,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;QAE1E,MAAM,OAAO,GAAqB;YAChC,KAAK;YACL,MAAM;SACP,CAAC;QAEF,IAAI,SAAS;YAAE,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;QAC7C,IAAI,WAAW;YAAE,OAAO,CAAC,WAAW,GAAG,WAAW,CAAC;QAEnD,OAAO,IAAI,mBAAU,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,MAAsB;QAClC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;QAEzD,IAAI,CAAC,MAAM;YACT,MAAM,IAAI,KAAK,CACb,6DAA6D,CAC9D,CAAC;QAEJ,MAAM,OAAO,GAAgC;YAC3C,KAAK;YACL,MAAM;SACP,CAAC;QAEF,IAAI,SAAS;YAAE,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;QACnD,IAAI,WAAW;YAAE,OAAO,CAAC,WAAW,GAAG,WAAW,CAAC;QAEnD,OAAO,IAAI,qCAAsB,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;CACF;AAnCD,0CAmCC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@luanpoppe/ai",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.4",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"keywords": [],
|
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
"typescript": "^5.9.3"
|
|
20
20
|
},
|
|
21
21
|
"scripts": {
|
|
22
|
-
"build": "tsc"
|
|
22
|
+
"build": "tsc",
|
|
23
|
+
"pub": "pnpm build && pnpm publish --access=public"
|
|
23
24
|
}
|
|
24
25
|
}
|
package/src/index.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { LangchainModels } from "./langchain/models";
|
|
1
|
+
import { LangchainModels, LLMModelConfig } from "./langchain/models";
|
|
2
2
|
import { AIModelNames } from "./@types/model-names";
|
|
3
3
|
import z from "zod";
|
|
4
4
|
import { MessageInput } from "./langchain/messages";
|
|
@@ -19,12 +19,17 @@ type LangchainConstructor = {
|
|
|
19
19
|
};
|
|
20
20
|
|
|
21
21
|
export type LangchainCallParams = {
|
|
22
|
+
agent: {
|
|
23
|
+
middleware?: AgentMiddleware[];
|
|
24
|
+
tools?: (ServerTool | ClientTool)[];
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
model: Omit<LLMModelConfig, "apiKey" | "model">;
|
|
28
|
+
|
|
22
29
|
aiModel: AIModelNames;
|
|
23
30
|
messages: MessageInput[];
|
|
24
31
|
systemPrompt?: string;
|
|
25
32
|
maxRetries?: number;
|
|
26
|
-
middleware?: AgentMiddleware[];
|
|
27
|
-
tools?: (ServerTool | ClientTool)[];
|
|
28
33
|
};
|
|
29
34
|
|
|
30
35
|
export type LangchainCallReturn = Promise<{
|
|
@@ -80,19 +85,38 @@ export class Langchain {
|
|
|
80
85
|
return { response: parsedResponse };
|
|
81
86
|
}
|
|
82
87
|
|
|
83
|
-
|
|
88
|
+
getRawAgent(
|
|
89
|
+
params: LangchainCallParams,
|
|
90
|
+
outputSchema?: z.ZodSchema | undefined
|
|
91
|
+
) {
|
|
92
|
+
const agent = createAgent({
|
|
93
|
+
...this.standardAgent(params),
|
|
94
|
+
responseFormat: outputSchema as any,
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
return { agent };
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
private getModel(params: LangchainCallParams) {
|
|
101
|
+
const { aiModel, model } = params;
|
|
102
|
+
const { maxTokens, temperature } = model;
|
|
103
|
+
|
|
104
|
+
const config: LLMModelConfig = {
|
|
105
|
+
model: aiModel,
|
|
106
|
+
maxTokens: maxTokens,
|
|
107
|
+
temperature: temperature,
|
|
108
|
+
};
|
|
109
|
+
|
|
84
110
|
if (aiModel.startsWith("gpt")) {
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
});
|
|
111
|
+
config.apiKey = this.tokens.openAIApiKey;
|
|
112
|
+
|
|
113
|
+
return LangchainModels.gpt(config);
|
|
89
114
|
}
|
|
90
115
|
|
|
91
116
|
if (aiModel.startsWith("gemini")) {
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
});
|
|
117
|
+
config.apiKey = this.tokens.googleGeminiToken;
|
|
118
|
+
|
|
119
|
+
return LangchainModels.gemini(config);
|
|
96
120
|
}
|
|
97
121
|
|
|
98
122
|
throw new Error("Model not supported");
|
|
@@ -101,9 +125,10 @@ export class Langchain {
|
|
|
101
125
|
private standardAgent(
|
|
102
126
|
params: LangchainCallParams
|
|
103
127
|
): Parameters<typeof createAgent>[0] {
|
|
104
|
-
const {
|
|
128
|
+
const { systemPrompt, maxRetries = 3 } = params;
|
|
129
|
+
const { middleware, tools } = params.agent;
|
|
105
130
|
|
|
106
|
-
const model = this.getModel(
|
|
131
|
+
const model = this.getModel(params);
|
|
107
132
|
return {
|
|
108
133
|
model,
|
|
109
134
|
systemPrompt: systemPrompt ?? "",
|
package/src/langchain/models.ts
CHANGED
|
@@ -4,26 +4,46 @@ import {
|
|
|
4
4
|
} from "@langchain/google-genai";
|
|
5
5
|
import { ChatOpenAI, ChatOpenAIFields } from "@langchain/openai";
|
|
6
6
|
|
|
7
|
+
export type LLMModelConfig = {
|
|
8
|
+
model: string;
|
|
9
|
+
apiKey?: string | undefined;
|
|
10
|
+
maxTokens?: number | undefined;
|
|
11
|
+
temperature?: number | undefined;
|
|
12
|
+
};
|
|
13
|
+
|
|
7
14
|
export class LangchainModels {
|
|
8
|
-
static gpt(params:
|
|
9
|
-
|
|
15
|
+
static gpt(params: LLMModelConfig) {
|
|
16
|
+
const { model, apiKey, maxTokens, temperature } = params;
|
|
17
|
+
if (!apiKey)
|
|
10
18
|
throw new Error("OpenAI API key is not passed in the model parameters");
|
|
11
19
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
}
|
|
20
|
+
const options: ChatOpenAIFields = {
|
|
21
|
+
model,
|
|
22
|
+
apiKey,
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
if (maxTokens) options.maxTokens = maxTokens;
|
|
26
|
+
if (temperature) options.temperature = temperature;
|
|
27
|
+
|
|
28
|
+
return new ChatOpenAI(options);
|
|
16
29
|
}
|
|
17
30
|
|
|
18
|
-
static gemini(params:
|
|
19
|
-
|
|
31
|
+
static gemini(params: LLMModelConfig) {
|
|
32
|
+
const { apiKey, maxTokens, model, temperature } = params;
|
|
33
|
+
|
|
34
|
+
if (!apiKey)
|
|
20
35
|
throw new Error(
|
|
21
36
|
"Google Gemini API key is not passed in the model parameters"
|
|
22
37
|
);
|
|
23
38
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
}
|
|
39
|
+
const options: GoogleGenerativeAIChatInput = {
|
|
40
|
+
model,
|
|
41
|
+
apiKey,
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
if (maxTokens) options.maxOutputTokens = maxTokens;
|
|
45
|
+
if (temperature) options.temperature = temperature;
|
|
46
|
+
|
|
47
|
+
return new ChatGoogleGenerativeAI(options);
|
|
28
48
|
}
|
|
29
49
|
}
|