@langchain/google-common 0.2.17 → 1.0.0
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/LICENSE +6 -6
- package/dist/_virtual/rolldown_runtime.cjs +25 -0
- package/dist/auth.cjs +82 -116
- package/dist/auth.cjs.map +1 -0
- package/dist/auth.d.cts +46 -0
- package/dist/auth.d.cts.map +1 -0
- package/dist/auth.d.ts +41 -36
- package/dist/auth.d.ts.map +1 -0
- package/dist/auth.js +80 -110
- package/dist/auth.js.map +1 -0
- package/dist/chat_models.cjs +251 -466
- package/dist/chat_models.cjs.map +1 -0
- package/dist/chat_models.d.cts +98 -0
- package/dist/chat_models.d.cts.map +1 -0
- package/dist/chat_models.d.ts +87 -73
- package/dist/chat_models.d.ts.map +1 -0
- package/dist/chat_models.js +245 -457
- package/dist/chat_models.js.map +1 -0
- package/dist/connection.cjs +321 -466
- package/dist/connection.cjs.map +1 -0
- package/dist/connection.d.cts +109 -0
- package/dist/connection.d.cts.map +1 -0
- package/dist/connection.d.ts +98 -91
- package/dist/connection.d.ts.map +1 -0
- package/dist/connection.js +317 -459
- package/dist/connection.js.map +1 -0
- package/dist/embeddings.cjs +135 -186
- package/dist/embeddings.cjs.map +1 -0
- package/dist/embeddings.d.cts +44 -0
- package/dist/embeddings.d.cts.map +1 -0
- package/dist/embeddings.d.ts +38 -32
- package/dist/embeddings.d.ts.map +1 -0
- package/dist/embeddings.js +133 -181
- package/dist/embeddings.js.map +1 -0
- package/dist/experimental/media.cjs +380 -482
- package/dist/experimental/media.cjs.map +1 -0
- package/dist/experimental/media.d.cts +198 -0
- package/dist/experimental/media.d.cts.map +1 -0
- package/dist/experimental/media.d.ts +190 -202
- package/dist/experimental/media.d.ts.map +1 -0
- package/dist/experimental/media.js +369 -468
- package/dist/experimental/media.js.map +1 -0
- package/dist/experimental/utils/media_core.cjs +403 -517
- package/dist/experimental/utils/media_core.cjs.map +1 -0
- package/dist/experimental/utils/media_core.d.cts +215 -0
- package/dist/experimental/utils/media_core.d.cts.map +1 -0
- package/dist/experimental/utils/media_core.d.ts +171 -165
- package/dist/experimental/utils/media_core.d.ts.map +1 -0
- package/dist/experimental/utils/media_core.js +395 -506
- package/dist/experimental/utils/media_core.js.map +1 -0
- package/dist/index.cjs +58 -27
- package/dist/index.d.cts +13 -0
- package/dist/index.d.ts +13 -11
- package/dist/index.js +13 -11
- package/dist/llms.cjs +157 -244
- package/dist/llms.cjs.map +1 -0
- package/dist/llms.d.cts +72 -0
- package/dist/llms.d.cts.map +1 -0
- package/dist/llms.d.ts +64 -54
- package/dist/llms.d.ts.map +1 -0
- package/dist/llms.js +154 -238
- package/dist/llms.js.map +1 -0
- package/dist/output_parsers.cjs +148 -173
- package/dist/output_parsers.cjs.map +1 -0
- package/dist/output_parsers.d.cts +53 -0
- package/dist/output_parsers.d.cts.map +1 -0
- package/dist/output_parsers.d.ts +46 -42
- package/dist/output_parsers.d.ts.map +1 -0
- package/dist/output_parsers.js +146 -168
- package/dist/output_parsers.js.map +1 -0
- package/dist/types-anthropic.d.cts +229 -0
- package/dist/types-anthropic.d.cts.map +1 -0
- package/dist/types-anthropic.d.ts +221 -215
- package/dist/types-anthropic.d.ts.map +1 -0
- package/dist/types.cjs +51 -62
- package/dist/types.cjs.map +1 -0
- package/dist/types.d.cts +748 -0
- package/dist/types.d.cts.map +1 -0
- package/dist/types.d.ts +669 -656
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +46 -45
- package/dist/types.js.map +1 -0
- package/dist/utils/anthropic.cjs +598 -821
- package/dist/utils/anthropic.cjs.map +1 -0
- package/dist/utils/anthropic.js +597 -818
- package/dist/utils/anthropic.js.map +1 -0
- package/dist/utils/common.cjs +130 -211
- package/dist/utils/common.cjs.map +1 -0
- package/dist/utils/common.d.cts +13 -0
- package/dist/utils/common.d.cts.map +1 -0
- package/dist/utils/common.d.ts +12 -7
- package/dist/utils/common.d.ts.map +1 -0
- package/dist/utils/common.js +128 -207
- package/dist/utils/common.js.map +1 -0
- package/dist/utils/failed_handler.cjs +28 -30
- package/dist/utils/failed_handler.cjs.map +1 -0
- package/dist/utils/failed_handler.d.cts +9 -0
- package/dist/utils/failed_handler.d.cts.map +1 -0
- package/dist/utils/failed_handler.d.ts +8 -2
- package/dist/utils/failed_handler.d.ts.map +1 -0
- package/dist/utils/failed_handler.js +28 -28
- package/dist/utils/failed_handler.js.map +1 -0
- package/dist/utils/gemini.cjs +1020 -1488
- package/dist/utils/gemini.cjs.map +1 -0
- package/dist/utils/gemini.d.cts +51 -0
- package/dist/utils/gemini.d.cts.map +1 -0
- package/dist/utils/gemini.d.ts +51 -48
- package/dist/utils/gemini.d.ts.map +1 -0
- package/dist/utils/gemini.js +1015 -1479
- package/dist/utils/gemini.js.map +1 -0
- package/dist/utils/index.cjs +38 -23
- package/dist/utils/index.d.cts +8 -0
- package/dist/utils/index.d.ts +8 -7
- package/dist/utils/index.js +8 -7
- package/dist/utils/palm.d.cts +11 -0
- package/dist/utils/palm.d.cts.map +1 -0
- package/dist/utils/palm.d.ts +9 -4
- package/dist/utils/palm.d.ts.map +1 -0
- package/dist/utils/safety.cjs +13 -22
- package/dist/utils/safety.cjs.map +1 -0
- package/dist/utils/safety.d.cts +12 -0
- package/dist/utils/safety.d.cts.map +1 -0
- package/dist/utils/safety.d.ts +10 -4
- package/dist/utils/safety.d.ts.map +1 -0
- package/dist/utils/safety.js +13 -19
- package/dist/utils/safety.js.map +1 -0
- package/dist/utils/stream.cjs +296 -475
- package/dist/utils/stream.cjs.map +1 -0
- package/dist/utils/stream.d.cts +165 -0
- package/dist/utils/stream.d.cts.map +1 -0
- package/dist/utils/stream.d.ts +156 -131
- package/dist/utils/stream.d.ts.map +1 -0
- package/dist/utils/stream.js +293 -469
- package/dist/utils/stream.js.map +1 -0
- package/dist/utils/zod_to_gemini_parameters.cjs +43 -81
- package/dist/utils/zod_to_gemini_parameters.cjs.map +1 -0
- package/dist/utils/zod_to_gemini_parameters.d.cts +22 -0
- package/dist/utils/zod_to_gemini_parameters.d.cts.map +1 -0
- package/dist/utils/zod_to_gemini_parameters.d.ts +21 -6
- package/dist/utils/zod_to_gemini_parameters.d.ts.map +1 -0
- package/dist/utils/zod_to_gemini_parameters.js +40 -76
- package/dist/utils/zod_to_gemini_parameters.js.map +1 -0
- package/package.json +69 -85
- package/dist/types-anthropic.cjs +0 -2
- package/dist/types-anthropic.js +0 -1
- package/dist/utils/anthropic.d.ts +0 -4
- package/dist/utils/palm.cjs +0 -2
- package/dist/utils/palm.js +0 -1
- package/experimental/media.cjs +0 -1
- package/experimental/media.d.cts +0 -1
- package/experimental/media.d.ts +0 -1
- package/experimental/media.js +0 -1
- package/experimental/utils/media_core.cjs +0 -1
- package/experimental/utils/media_core.d.cts +0 -1
- package/experimental/utils/media_core.d.ts +0 -1
- package/experimental/utils/media_core.js +0 -1
- package/index.cjs +0 -1
- package/index.d.cts +0 -1
- package/index.d.ts +0 -1
- package/index.js +0 -1
- package/types.cjs +0 -1
- package/types.d.cts +0 -1
- package/types.d.ts +0 -1
- package/types.js +0 -1
- package/utils.cjs +0 -1
- package/utils.d.cts +0 -1
- package/utils.d.ts +0 -1
- package/utils.js +0 -1
package/dist/connection.js
CHANGED
|
@@ -1,461 +1,319 @@
|
|
|
1
|
+
import { getGeminiAPI } from "./utils/gemini.js";
|
|
2
|
+
import { getAnthropicAPI } from "./utils/anthropic.js";
|
|
3
|
+
import { modelToFamily, modelToPublisher } from "./utils/common.js";
|
|
4
|
+
import "./utils/index.js";
|
|
1
5
|
import { getRuntimeEnvironment } from "@langchain/core/utils/env";
|
|
2
6
|
import { BaseCallbackHandler } from "@langchain/core/callbacks/base";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
default:
|
|
317
|
-
return this.buildUrlVertex();
|
|
318
|
-
}
|
|
319
|
-
}
|
|
320
|
-
async request(input, parameters, options, runManager) {
|
|
321
|
-
const moduleName = this.constructor.name;
|
|
322
|
-
const streamingParameters = {
|
|
323
|
-
...parameters,
|
|
324
|
-
streaming: this.streaming,
|
|
325
|
-
};
|
|
326
|
-
const data = await this.formatData(input, streamingParameters);
|
|
327
|
-
await runManager?.handleCustomEvent(`google-request-${moduleName}`, {
|
|
328
|
-
data,
|
|
329
|
-
parameters: streamingParameters,
|
|
330
|
-
options,
|
|
331
|
-
connection: {
|
|
332
|
-
...this,
|
|
333
|
-
url: await this.buildUrl(),
|
|
334
|
-
urlMethod: await this.buildUrlMethod(),
|
|
335
|
-
modelFamily: this.modelFamily,
|
|
336
|
-
modelPublisher: this.modelPublisher,
|
|
337
|
-
computedPlatformType: this.computedPlatformType,
|
|
338
|
-
},
|
|
339
|
-
});
|
|
340
|
-
const response = await this._request(data, options);
|
|
341
|
-
await runManager?.handleCustomEvent(`google-response-${moduleName}`, {
|
|
342
|
-
response,
|
|
343
|
-
});
|
|
344
|
-
return response;
|
|
345
|
-
}
|
|
346
|
-
}
|
|
347
|
-
export class AbstractGoogleLLMConnection extends GoogleAIConnection {
|
|
348
|
-
async buildUrlMethodGemini() {
|
|
349
|
-
return this.streaming ? "streamGenerateContent" : "generateContent";
|
|
350
|
-
}
|
|
351
|
-
async buildUrlMethodClaude() {
|
|
352
|
-
return this.streaming ? "streamRawPredict" : "rawPredict";
|
|
353
|
-
}
|
|
354
|
-
async buildUrlMethod() {
|
|
355
|
-
switch (this.modelFamily) {
|
|
356
|
-
case "gemini":
|
|
357
|
-
case "gemma": // TODO: Is this true?
|
|
358
|
-
return this.buildUrlMethodGemini();
|
|
359
|
-
case "claude":
|
|
360
|
-
return this.buildUrlMethodClaude();
|
|
361
|
-
default:
|
|
362
|
-
throw new Error(`Unknown model family: ${this.modelFamily}`);
|
|
363
|
-
}
|
|
364
|
-
}
|
|
365
|
-
async formatData(input, parameters) {
|
|
366
|
-
// Filter out labels for non-Vertex AI platforms (labels are only supported on Vertex AI)
|
|
367
|
-
let filteredParameters = parameters;
|
|
368
|
-
if (parameters.labels && this.platform !== "gcp") {
|
|
369
|
-
const { labels, ...paramsWithoutLabels } = parameters;
|
|
370
|
-
filteredParameters = paramsWithoutLabels;
|
|
371
|
-
}
|
|
372
|
-
return this.api.formatData(input, filteredParameters);
|
|
373
|
-
}
|
|
374
|
-
}
|
|
375
|
-
export class GoogleRequestCallbackHandler extends BaseCallbackHandler {
|
|
376
|
-
customEventInfo(eventName) {
|
|
377
|
-
const names = eventName.split("-");
|
|
378
|
-
return {
|
|
379
|
-
subEvent: names[1],
|
|
380
|
-
module: names[2],
|
|
381
|
-
};
|
|
382
|
-
}
|
|
383
|
-
handleCustomEvent(eventName, data, runId, tags, metadata) {
|
|
384
|
-
if (!eventName) {
|
|
385
|
-
return undefined;
|
|
386
|
-
}
|
|
387
|
-
const eventInfo = this.customEventInfo(eventName);
|
|
388
|
-
switch (eventInfo.subEvent) {
|
|
389
|
-
case "request":
|
|
390
|
-
return this.handleCustomRequestEvent(eventName, eventInfo, data, runId, tags, metadata);
|
|
391
|
-
case "response":
|
|
392
|
-
return this.handleCustomResponseEvent(eventName, eventInfo, data, runId, tags, metadata);
|
|
393
|
-
case "chunk":
|
|
394
|
-
return this.handleCustomChunkEvent(eventName, eventInfo, data, runId, tags, metadata);
|
|
395
|
-
default:
|
|
396
|
-
console.error(`Unexpected eventInfo for ${eventName} ${JSON.stringify(eventInfo, null, 1)}`);
|
|
397
|
-
}
|
|
398
|
-
}
|
|
399
|
-
}
|
|
400
|
-
export class GoogleRequestLogger extends GoogleRequestCallbackHandler {
|
|
401
|
-
constructor() {
|
|
402
|
-
super(...arguments);
|
|
403
|
-
Object.defineProperty(this, "name", {
|
|
404
|
-
enumerable: true,
|
|
405
|
-
configurable: true,
|
|
406
|
-
writable: true,
|
|
407
|
-
value: "GoogleRequestLogger"
|
|
408
|
-
});
|
|
409
|
-
}
|
|
410
|
-
log(eventName, data, tags) {
|
|
411
|
-
const tagStr = tags ? `[${tags}]` : "[]";
|
|
412
|
-
console.log(`${eventName} ${tagStr} ${JSON.stringify(data, null, 1)}`);
|
|
413
|
-
}
|
|
414
|
-
handleCustomRequestEvent(eventName, _eventInfo, data, _runId, tags, _metadata) {
|
|
415
|
-
this.log(eventName, data, tags);
|
|
416
|
-
}
|
|
417
|
-
handleCustomResponseEvent(eventName, _eventInfo, data, _runId, tags, _metadata) {
|
|
418
|
-
this.log(eventName, data, tags);
|
|
419
|
-
}
|
|
420
|
-
handleCustomChunkEvent(eventName, _eventInfo, data, _runId, tags, _metadata) {
|
|
421
|
-
this.log(eventName, data, tags);
|
|
422
|
-
}
|
|
423
|
-
}
|
|
424
|
-
export class GoogleRequestRecorder extends GoogleRequestCallbackHandler {
|
|
425
|
-
constructor() {
|
|
426
|
-
super(...arguments);
|
|
427
|
-
Object.defineProperty(this, "name", {
|
|
428
|
-
enumerable: true,
|
|
429
|
-
configurable: true,
|
|
430
|
-
writable: true,
|
|
431
|
-
value: "GoogleRequestRecorder"
|
|
432
|
-
});
|
|
433
|
-
Object.defineProperty(this, "request", {
|
|
434
|
-
enumerable: true,
|
|
435
|
-
configurable: true,
|
|
436
|
-
writable: true,
|
|
437
|
-
value: {}
|
|
438
|
-
});
|
|
439
|
-
Object.defineProperty(this, "response", {
|
|
440
|
-
enumerable: true,
|
|
441
|
-
configurable: true,
|
|
442
|
-
writable: true,
|
|
443
|
-
value: {}
|
|
444
|
-
});
|
|
445
|
-
Object.defineProperty(this, "chunk", {
|
|
446
|
-
enumerable: true,
|
|
447
|
-
configurable: true,
|
|
448
|
-
writable: true,
|
|
449
|
-
value: []
|
|
450
|
-
});
|
|
451
|
-
}
|
|
452
|
-
handleCustomRequestEvent(_eventName, _eventInfo, data, _runId, _tags, _metadata) {
|
|
453
|
-
this.request = data;
|
|
454
|
-
}
|
|
455
|
-
handleCustomResponseEvent(_eventName, _eventInfo, data, _runId, _tags, _metadata) {
|
|
456
|
-
this.response = data;
|
|
457
|
-
}
|
|
458
|
-
handleCustomChunkEvent(_eventName, _eventInfo, data, _runId, _tags, _metadata) {
|
|
459
|
-
this.chunk.push(data);
|
|
460
|
-
}
|
|
461
|
-
}
|
|
7
|
+
|
|
8
|
+
//#region src/connection.ts
|
|
9
|
+
var GoogleConnection = class {
|
|
10
|
+
caller;
|
|
11
|
+
client;
|
|
12
|
+
streaming;
|
|
13
|
+
constructor(caller, client, streaming) {
|
|
14
|
+
this.caller = caller;
|
|
15
|
+
this.client = client;
|
|
16
|
+
this.streaming = streaming ?? false;
|
|
17
|
+
}
|
|
18
|
+
async _clientInfoHeaders() {
|
|
19
|
+
const { userAgent, clientLibraryVersion } = await this._getClientInfo();
|
|
20
|
+
return {
|
|
21
|
+
"User-Agent": userAgent,
|
|
22
|
+
"Client-Info": clientLibraryVersion
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
async _getClientInfo() {
|
|
26
|
+
const env = await getRuntimeEnvironment();
|
|
27
|
+
const langchain = env?.library ?? "langchain-js";
|
|
28
|
+
const langchainVersion = "0";
|
|
29
|
+
const moduleName = await this._moduleName();
|
|
30
|
+
let clientLibraryVersion = `${langchain}/${langchainVersion}`;
|
|
31
|
+
if (moduleName && moduleName.length) clientLibraryVersion = `${clientLibraryVersion}-${moduleName}`;
|
|
32
|
+
return {
|
|
33
|
+
userAgent: clientLibraryVersion,
|
|
34
|
+
clientLibraryVersion: `${langchainVersion}-${moduleName}`
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
async _moduleName() {
|
|
38
|
+
return this.constructor.name;
|
|
39
|
+
}
|
|
40
|
+
async additionalHeaders() {
|
|
41
|
+
return {};
|
|
42
|
+
}
|
|
43
|
+
async _buildOpts(data, _options, requestHeaders = {}) {
|
|
44
|
+
const url = await this.buildUrl();
|
|
45
|
+
const method = this.buildMethod();
|
|
46
|
+
const infoHeaders = await this._clientInfoHeaders() ?? {};
|
|
47
|
+
const additionalHeaders = await this.additionalHeaders() ?? {};
|
|
48
|
+
const headers = {
|
|
49
|
+
...infoHeaders,
|
|
50
|
+
...additionalHeaders,
|
|
51
|
+
...requestHeaders
|
|
52
|
+
};
|
|
53
|
+
const opts = {
|
|
54
|
+
url,
|
|
55
|
+
method,
|
|
56
|
+
headers
|
|
57
|
+
};
|
|
58
|
+
if (data && method === "POST") opts.data = data;
|
|
59
|
+
if (this.streaming) opts.responseType = "stream";
|
|
60
|
+
else opts.responseType = "json";
|
|
61
|
+
return opts;
|
|
62
|
+
}
|
|
63
|
+
async _request(data, options, requestHeaders = {}) {
|
|
64
|
+
const opts = await this._buildOpts(data, options, requestHeaders);
|
|
65
|
+
const callResponse = await this.caller.callWithOptions({ signal: options?.signal }, async () => this.client.request(opts));
|
|
66
|
+
const response = callResponse;
|
|
67
|
+
return response;
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
var GoogleHostConnection = class extends GoogleConnection {
|
|
71
|
+
platformType;
|
|
72
|
+
_endpoint;
|
|
73
|
+
_location;
|
|
74
|
+
_apiVersion;
|
|
75
|
+
constructor(fields, caller, client, streaming) {
|
|
76
|
+
super(caller, client, streaming);
|
|
77
|
+
this.caller = caller;
|
|
78
|
+
this.platformType = this.fieldPlatformType(fields);
|
|
79
|
+
this._endpoint = fields?.endpoint;
|
|
80
|
+
this._location = fields?.location;
|
|
81
|
+
this._apiVersion = fields?.apiVersion;
|
|
82
|
+
this.client = client;
|
|
83
|
+
}
|
|
84
|
+
fieldPlatformType(fields) {
|
|
85
|
+
if (typeof fields === "undefined") return void 0;
|
|
86
|
+
if (typeof fields.platformType !== "undefined") return fields.platformType;
|
|
87
|
+
if (fields.vertexai === true) return "gcp";
|
|
88
|
+
return void 0;
|
|
89
|
+
}
|
|
90
|
+
get platform() {
|
|
91
|
+
return this.platformType ?? this.computedPlatformType;
|
|
92
|
+
}
|
|
93
|
+
get computedPlatformType() {
|
|
94
|
+
return "gcp";
|
|
95
|
+
}
|
|
96
|
+
get computedApiVersion() {
|
|
97
|
+
return "v1";
|
|
98
|
+
}
|
|
99
|
+
get apiVersion() {
|
|
100
|
+
return this._apiVersion ?? this.computedApiVersion;
|
|
101
|
+
}
|
|
102
|
+
get location() {
|
|
103
|
+
return this._location ?? this.computedLocation;
|
|
104
|
+
}
|
|
105
|
+
get computedLocation() {
|
|
106
|
+
return "us-central1";
|
|
107
|
+
}
|
|
108
|
+
get endpoint() {
|
|
109
|
+
return this._endpoint ?? this.computedEndpoint;
|
|
110
|
+
}
|
|
111
|
+
get computedEndpoint() {
|
|
112
|
+
if (this.location === "global") return "aiplatform.googleapis.com";
|
|
113
|
+
else return `${this.location}-aiplatform.googleapis.com`;
|
|
114
|
+
}
|
|
115
|
+
buildMethod() {
|
|
116
|
+
return "POST";
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
var GoogleRawConnection = class extends GoogleHostConnection {
|
|
120
|
+
async _buildOpts(data, _options, requestHeaders = {}) {
|
|
121
|
+
const opts = await super._buildOpts(data, _options, requestHeaders);
|
|
122
|
+
opts.responseType = "blob";
|
|
123
|
+
return opts;
|
|
124
|
+
}
|
|
125
|
+
};
|
|
126
|
+
var GoogleAIConnection = class extends GoogleHostConnection {
|
|
127
|
+
model;
|
|
128
|
+
modelName;
|
|
129
|
+
client;
|
|
130
|
+
_apiName;
|
|
131
|
+
apiConfig;
|
|
132
|
+
constructor(fields, caller, client, streaming) {
|
|
133
|
+
super(fields, caller, client, streaming);
|
|
134
|
+
this.client = client;
|
|
135
|
+
this.modelName = fields?.model ?? fields?.modelName ?? this.model;
|
|
136
|
+
this.model = this.modelName;
|
|
137
|
+
this._apiName = fields?.apiName;
|
|
138
|
+
this.apiConfig = {
|
|
139
|
+
safetyHandler: fields?.safetyHandler,
|
|
140
|
+
...fields?.apiConfig
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
get modelFamily() {
|
|
144
|
+
return modelToFamily(this.model);
|
|
145
|
+
}
|
|
146
|
+
get modelPublisher() {
|
|
147
|
+
return modelToPublisher(this.model);
|
|
148
|
+
}
|
|
149
|
+
get computedAPIName() {
|
|
150
|
+
return this.modelPublisher;
|
|
151
|
+
}
|
|
152
|
+
get apiName() {
|
|
153
|
+
return this._apiName ?? this.computedAPIName;
|
|
154
|
+
}
|
|
155
|
+
get api() {
|
|
156
|
+
switch (this.apiName) {
|
|
157
|
+
case "google":
|
|
158
|
+
case "gemma": return getGeminiAPI(this.apiConfig);
|
|
159
|
+
case "anthropic": return getAnthropicAPI(this.apiConfig);
|
|
160
|
+
default: throw new Error(`Unknown API: ${this.apiName}`);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
get isApiKey() {
|
|
164
|
+
return this.client.clientType === "apiKey";
|
|
165
|
+
}
|
|
166
|
+
fieldPlatformType(fields) {
|
|
167
|
+
const ret = super.fieldPlatformType(fields);
|
|
168
|
+
if (typeof ret !== "undefined") return ret;
|
|
169
|
+
if (fields?.vertexai === false) return "gai";
|
|
170
|
+
return void 0;
|
|
171
|
+
}
|
|
172
|
+
get computedPlatformType() {
|
|
173
|
+
if (this.isApiKey) return "gai";
|
|
174
|
+
else return "gcp";
|
|
175
|
+
}
|
|
176
|
+
get computedApiVersion() {
|
|
177
|
+
switch (this.platform) {
|
|
178
|
+
case "gai": return "v1beta";
|
|
179
|
+
default: return "v1";
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
get computedLocation() {
|
|
183
|
+
switch (this.apiName) {
|
|
184
|
+
case "google": return super.computedLocation;
|
|
185
|
+
case "anthropic": return "us-east5";
|
|
186
|
+
default: throw new Error(`Unknown apiName: ${this.apiName}. Can't get location.`);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
async buildUrlGenerativeLanguage() {
|
|
190
|
+
const method = await this.buildUrlMethod();
|
|
191
|
+
const url = `https://generativelanguage.googleapis.com/${this.apiVersion}/models/${this.model}:${method}`;
|
|
192
|
+
return url;
|
|
193
|
+
}
|
|
194
|
+
async buildUrlVertexExpress() {
|
|
195
|
+
const method = await this.buildUrlMethod();
|
|
196
|
+
const publisher = this.modelPublisher;
|
|
197
|
+
const url = `https://aiplatform.googleapis.com/${this.apiVersion}/publishers/${publisher}/models/${this.model}:${method}`;
|
|
198
|
+
return url;
|
|
199
|
+
}
|
|
200
|
+
async buildUrlVertexLocation() {
|
|
201
|
+
const projectId = await this.client.getProjectId();
|
|
202
|
+
const method = await this.buildUrlMethod();
|
|
203
|
+
const publisher = this.modelPublisher;
|
|
204
|
+
const url = `https://${this.endpoint}/${this.apiVersion}/projects/${projectId}/locations/${this.location}/publishers/${publisher}/models/${this.model}:${method}`;
|
|
205
|
+
return url;
|
|
206
|
+
}
|
|
207
|
+
async buildUrlVertex() {
|
|
208
|
+
if (this.isApiKey) return this.buildUrlVertexExpress();
|
|
209
|
+
else return this.buildUrlVertexLocation();
|
|
210
|
+
}
|
|
211
|
+
async buildUrl() {
|
|
212
|
+
switch (this.platform) {
|
|
213
|
+
case "gai": return this.buildUrlGenerativeLanguage();
|
|
214
|
+
default: return this.buildUrlVertex();
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
async request(input, parameters, options, runManager) {
|
|
218
|
+
const moduleName = this.constructor.name;
|
|
219
|
+
const streamingParameters = {
|
|
220
|
+
...parameters,
|
|
221
|
+
streaming: this.streaming
|
|
222
|
+
};
|
|
223
|
+
const data = await this.formatData(input, streamingParameters);
|
|
224
|
+
await runManager?.handleCustomEvent(`google-request-${moduleName}`, {
|
|
225
|
+
data,
|
|
226
|
+
parameters: streamingParameters,
|
|
227
|
+
options,
|
|
228
|
+
connection: {
|
|
229
|
+
...this,
|
|
230
|
+
url: await this.buildUrl(),
|
|
231
|
+
urlMethod: await this.buildUrlMethod(),
|
|
232
|
+
modelFamily: this.modelFamily,
|
|
233
|
+
modelPublisher: this.modelPublisher,
|
|
234
|
+
computedPlatformType: this.computedPlatformType
|
|
235
|
+
}
|
|
236
|
+
});
|
|
237
|
+
const response = await this._request(data, options);
|
|
238
|
+
await runManager?.handleCustomEvent(`google-response-${moduleName}`, { response });
|
|
239
|
+
return response;
|
|
240
|
+
}
|
|
241
|
+
};
|
|
242
|
+
var AbstractGoogleLLMConnection = class extends GoogleAIConnection {
|
|
243
|
+
async buildUrlMethodGemini() {
|
|
244
|
+
return this.streaming ? "streamGenerateContent" : "generateContent";
|
|
245
|
+
}
|
|
246
|
+
async buildUrlMethodClaude() {
|
|
247
|
+
return this.streaming ? "streamRawPredict" : "rawPredict";
|
|
248
|
+
}
|
|
249
|
+
async buildUrlMethod() {
|
|
250
|
+
switch (this.modelFamily) {
|
|
251
|
+
case "gemini":
|
|
252
|
+
case "gemma": return this.buildUrlMethodGemini();
|
|
253
|
+
case "claude": return this.buildUrlMethodClaude();
|
|
254
|
+
default: throw new Error(`Unknown model family: ${this.modelFamily}`);
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
async formatData(input, parameters) {
|
|
258
|
+
let filteredParameters = parameters;
|
|
259
|
+
if (parameters.labels && this.platform !== "gcp") {
|
|
260
|
+
const { labels,...paramsWithoutLabels } = parameters;
|
|
261
|
+
filteredParameters = paramsWithoutLabels;
|
|
262
|
+
}
|
|
263
|
+
return this.api.formatData(input, filteredParameters);
|
|
264
|
+
}
|
|
265
|
+
};
|
|
266
|
+
var GoogleRequestCallbackHandler = class extends BaseCallbackHandler {
|
|
267
|
+
customEventInfo(eventName) {
|
|
268
|
+
const names = eventName.split("-");
|
|
269
|
+
return {
|
|
270
|
+
subEvent: names[1],
|
|
271
|
+
module: names[2]
|
|
272
|
+
};
|
|
273
|
+
}
|
|
274
|
+
handleCustomEvent(eventName, data, runId, tags, metadata) {
|
|
275
|
+
if (!eventName) return void 0;
|
|
276
|
+
const eventInfo = this.customEventInfo(eventName);
|
|
277
|
+
switch (eventInfo.subEvent) {
|
|
278
|
+
case "request": return this.handleCustomRequestEvent(eventName, eventInfo, data, runId, tags, metadata);
|
|
279
|
+
case "response": return this.handleCustomResponseEvent(eventName, eventInfo, data, runId, tags, metadata);
|
|
280
|
+
case "chunk": return this.handleCustomChunkEvent(eventName, eventInfo, data, runId, tags, metadata);
|
|
281
|
+
default: console.error(`Unexpected eventInfo for ${eventName} ${JSON.stringify(eventInfo, null, 1)}`);
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
};
|
|
285
|
+
var GoogleRequestLogger = class extends GoogleRequestCallbackHandler {
|
|
286
|
+
name = "GoogleRequestLogger";
|
|
287
|
+
log(eventName, data, tags) {
|
|
288
|
+
const tagStr = tags ? `[${tags}]` : "[]";
|
|
289
|
+
console.log(`${eventName} ${tagStr} ${JSON.stringify(data, null, 1)}`);
|
|
290
|
+
}
|
|
291
|
+
handleCustomRequestEvent(eventName, _eventInfo, data, _runId, tags, _metadata) {
|
|
292
|
+
this.log(eventName, data, tags);
|
|
293
|
+
}
|
|
294
|
+
handleCustomResponseEvent(eventName, _eventInfo, data, _runId, tags, _metadata) {
|
|
295
|
+
this.log(eventName, data, tags);
|
|
296
|
+
}
|
|
297
|
+
handleCustomChunkEvent(eventName, _eventInfo, data, _runId, tags, _metadata) {
|
|
298
|
+
this.log(eventName, data, tags);
|
|
299
|
+
}
|
|
300
|
+
};
|
|
301
|
+
var GoogleRequestRecorder = class extends GoogleRequestCallbackHandler {
|
|
302
|
+
name = "GoogleRequestRecorder";
|
|
303
|
+
request = {};
|
|
304
|
+
response = {};
|
|
305
|
+
chunk = [];
|
|
306
|
+
handleCustomRequestEvent(_eventName, _eventInfo, data, _runId, _tags, _metadata) {
|
|
307
|
+
this.request = data;
|
|
308
|
+
}
|
|
309
|
+
handleCustomResponseEvent(_eventName, _eventInfo, data, _runId, _tags, _metadata) {
|
|
310
|
+
this.response = data;
|
|
311
|
+
}
|
|
312
|
+
handleCustomChunkEvent(_eventName, _eventInfo, data, _runId, _tags, _metadata) {
|
|
313
|
+
this.chunk.push(data);
|
|
314
|
+
}
|
|
315
|
+
};
|
|
316
|
+
|
|
317
|
+
//#endregion
|
|
318
|
+
export { AbstractGoogleLLMConnection, GoogleAIConnection, GoogleConnection, GoogleHostConnection, GoogleRawConnection, GoogleRequestCallbackHandler, GoogleRequestLogger, GoogleRequestRecorder };
|
|
319
|
+
//# sourceMappingURL=connection.js.map
|