@langchain/google 0.1.2 → 0.1.3
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 +18 -0
- package/dist/chat_models/base.cjs +9 -2
- package/dist/chat_models/base.cjs.map +1 -1
- package/dist/chat_models/base.js +9 -2
- package/dist/chat_models/base.js.map +1 -1
- package/dist/converters/messages.cjs +4 -1
- package/dist/converters/messages.cjs.map +1 -1
- package/dist/converters/messages.js +4 -1
- package/dist/converters/messages.js.map +1 -1
- package/dist/utils/metadata.cjs +57 -0
- package/dist/utils/metadata.cjs.map +1 -0
- package/dist/utils/metadata.js +56 -0
- package/dist/utils/metadata.js.map +1 -0
- package/package.json +4 -3
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
|
|
2
|
+
//#region src/utils/metadata.ts
|
|
3
|
+
/**
|
|
4
|
+
* Computes the delta between two token detail objects by subtracting
|
|
5
|
+
* each field in `previous` from the corresponding field in `current`.
|
|
6
|
+
*
|
|
7
|
+
* This is used to convert cumulative token detail counts (as reported
|
|
8
|
+
* by the Gemini streaming API) into per-chunk deltas that can be
|
|
9
|
+
* correctly summed by {@link mergeUsageMetadata} during chunk
|
|
10
|
+
* concatenation.
|
|
11
|
+
*
|
|
12
|
+
* @param current - The cumulative token details from the current chunk.
|
|
13
|
+
* @param previous - The cumulative token details from the previous chunk.
|
|
14
|
+
* @returns The per-chunk delta, or `undefined` if `current` is undefined.
|
|
15
|
+
*/
|
|
16
|
+
function subtractTokenDetails(current, previous) {
|
|
17
|
+
if (!current) return void 0;
|
|
18
|
+
if (!previous) return current;
|
|
19
|
+
const result = {};
|
|
20
|
+
for (const key of Object.keys(current)) {
|
|
21
|
+
const cur = current[key];
|
|
22
|
+
const prev = previous[key];
|
|
23
|
+
if (cur !== void 0) result[key] = cur - (prev ?? 0);
|
|
24
|
+
}
|
|
25
|
+
return result;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Computes the delta between two {@link UsageMetadata} objects by
|
|
29
|
+
* subtracting each field in `previous` from the corresponding field in
|
|
30
|
+
* `current`.
|
|
31
|
+
*
|
|
32
|
+
* The Gemini streaming API reports **cumulative** token counts on every
|
|
33
|
+
* SSE chunk, but `@langchain/core`'s `mergeUsageMetadata` combines
|
|
34
|
+
* values via addition. Emitting raw cumulative values on each
|
|
35
|
+
* `AIMessageChunk` would therefore inflate the totals when chunks are
|
|
36
|
+
* concatenated. This function converts cumulative values into per-chunk
|
|
37
|
+
* deltas so that additive merging produces the correct final totals.
|
|
38
|
+
*
|
|
39
|
+
* @param current - The cumulative usage metadata from the current chunk.
|
|
40
|
+
* @param previous - The cumulative usage metadata from the previous
|
|
41
|
+
* chunk, or `undefined` for the first chunk in the stream.
|
|
42
|
+
* @returns The per-chunk delta usage metadata.
|
|
43
|
+
*/
|
|
44
|
+
function subtractUsageMetadata(current, previous) {
|
|
45
|
+
if (!previous) return current;
|
|
46
|
+
return {
|
|
47
|
+
input_tokens: current.input_tokens - previous.input_tokens,
|
|
48
|
+
output_tokens: current.output_tokens - previous.output_tokens,
|
|
49
|
+
total_tokens: current.total_tokens - previous.total_tokens,
|
|
50
|
+
input_token_details: subtractTokenDetails(current.input_token_details, previous.input_token_details),
|
|
51
|
+
output_token_details: subtractTokenDetails(current.output_token_details, previous.output_token_details)
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
//#endregion
|
|
56
|
+
exports.subtractUsageMetadata = subtractUsageMetadata;
|
|
57
|
+
//# sourceMappingURL=metadata.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata.cjs","names":[],"sources":["../../src/utils/metadata.ts"],"sourcesContent":["import type {\n UsageMetadata,\n InputTokenDetails,\n OutputTokenDetails,\n} from \"@langchain/core/messages\";\n\n/**\n * Computes the delta between two token detail objects by subtracting\n * each field in `previous` from the corresponding field in `current`.\n *\n * This is used to convert cumulative token detail counts (as reported\n * by the Gemini streaming API) into per-chunk deltas that can be\n * correctly summed by {@link mergeUsageMetadata} during chunk\n * concatenation.\n *\n * @param current - The cumulative token details from the current chunk.\n * @param previous - The cumulative token details from the previous chunk.\n * @returns The per-chunk delta, or `undefined` if `current` is undefined.\n */\nfunction subtractTokenDetails<T extends InputTokenDetails | OutputTokenDetails>(\n current?: T,\n previous?: T\n): T | undefined {\n if (!current) return undefined;\n if (!previous) return current;\n const result = {} as Record<string, number>;\n for (const key of Object.keys(current) as (keyof T)[]) {\n const cur = current[key] as number | undefined;\n const prev = previous[key] as number | undefined;\n if (cur !== undefined) {\n result[key as string] = cur - (prev ?? 0);\n }\n }\n return result as T;\n}\n\n/**\n * Computes the delta between two {@link UsageMetadata} objects by\n * subtracting each field in `previous` from the corresponding field in\n * `current`.\n *\n * The Gemini streaming API reports **cumulative** token counts on every\n * SSE chunk, but `@langchain/core`'s `mergeUsageMetadata` combines\n * values via addition. Emitting raw cumulative values on each\n * `AIMessageChunk` would therefore inflate the totals when chunks are\n * concatenated. This function converts cumulative values into per-chunk\n * deltas so that additive merging produces the correct final totals.\n *\n * @param current - The cumulative usage metadata from the current chunk.\n * @param previous - The cumulative usage metadata from the previous\n * chunk, or `undefined` for the first chunk in the stream.\n * @returns The per-chunk delta usage metadata.\n */\nexport function subtractUsageMetadata(\n current: UsageMetadata,\n previous?: UsageMetadata\n): UsageMetadata {\n if (!previous) return current;\n return {\n input_tokens: current.input_tokens - previous.input_tokens,\n output_tokens: current.output_tokens - previous.output_tokens,\n total_tokens: current.total_tokens - previous.total_tokens,\n input_token_details: subtractTokenDetails(\n current.input_token_details,\n previous.input_token_details\n ),\n output_token_details: subtractTokenDetails(\n current.output_token_details,\n previous.output_token_details\n ),\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;AAmBA,SAAS,qBACP,SACA,UACe;AACf,KAAI,CAAC,QAAS,QAAO;AACrB,KAAI,CAAC,SAAU,QAAO;CACtB,MAAM,SAAS,EAAE;AACjB,MAAK,MAAM,OAAO,OAAO,KAAK,QAAQ,EAAiB;EACrD,MAAM,MAAM,QAAQ;EACpB,MAAM,OAAO,SAAS;AACtB,MAAI,QAAQ,OACV,QAAO,OAAiB,OAAO,QAAQ;;AAG3C,QAAO;;;;;;;;;;;;;;;;;;;AAoBT,SAAgB,sBACd,SACA,UACe;AACf,KAAI,CAAC,SAAU,QAAO;AACtB,QAAO;EACL,cAAc,QAAQ,eAAe,SAAS;EAC9C,eAAe,QAAQ,gBAAgB,SAAS;EAChD,cAAc,QAAQ,eAAe,SAAS;EAC9C,qBAAqB,qBACnB,QAAQ,qBACR,SAAS,oBACV;EACD,sBAAsB,qBACpB,QAAQ,sBACR,SAAS,qBACV;EACF"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
//#region src/utils/metadata.ts
|
|
2
|
+
/**
|
|
3
|
+
* Computes the delta between two token detail objects by subtracting
|
|
4
|
+
* each field in `previous` from the corresponding field in `current`.
|
|
5
|
+
*
|
|
6
|
+
* This is used to convert cumulative token detail counts (as reported
|
|
7
|
+
* by the Gemini streaming API) into per-chunk deltas that can be
|
|
8
|
+
* correctly summed by {@link mergeUsageMetadata} during chunk
|
|
9
|
+
* concatenation.
|
|
10
|
+
*
|
|
11
|
+
* @param current - The cumulative token details from the current chunk.
|
|
12
|
+
* @param previous - The cumulative token details from the previous chunk.
|
|
13
|
+
* @returns The per-chunk delta, or `undefined` if `current` is undefined.
|
|
14
|
+
*/
|
|
15
|
+
function subtractTokenDetails(current, previous) {
|
|
16
|
+
if (!current) return void 0;
|
|
17
|
+
if (!previous) return current;
|
|
18
|
+
const result = {};
|
|
19
|
+
for (const key of Object.keys(current)) {
|
|
20
|
+
const cur = current[key];
|
|
21
|
+
const prev = previous[key];
|
|
22
|
+
if (cur !== void 0) result[key] = cur - (prev ?? 0);
|
|
23
|
+
}
|
|
24
|
+
return result;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Computes the delta between two {@link UsageMetadata} objects by
|
|
28
|
+
* subtracting each field in `previous` from the corresponding field in
|
|
29
|
+
* `current`.
|
|
30
|
+
*
|
|
31
|
+
* The Gemini streaming API reports **cumulative** token counts on every
|
|
32
|
+
* SSE chunk, but `@langchain/core`'s `mergeUsageMetadata` combines
|
|
33
|
+
* values via addition. Emitting raw cumulative values on each
|
|
34
|
+
* `AIMessageChunk` would therefore inflate the totals when chunks are
|
|
35
|
+
* concatenated. This function converts cumulative values into per-chunk
|
|
36
|
+
* deltas so that additive merging produces the correct final totals.
|
|
37
|
+
*
|
|
38
|
+
* @param current - The cumulative usage metadata from the current chunk.
|
|
39
|
+
* @param previous - The cumulative usage metadata from the previous
|
|
40
|
+
* chunk, or `undefined` for the first chunk in the stream.
|
|
41
|
+
* @returns The per-chunk delta usage metadata.
|
|
42
|
+
*/
|
|
43
|
+
function subtractUsageMetadata(current, previous) {
|
|
44
|
+
if (!previous) return current;
|
|
45
|
+
return {
|
|
46
|
+
input_tokens: current.input_tokens - previous.input_tokens,
|
|
47
|
+
output_tokens: current.output_tokens - previous.output_tokens,
|
|
48
|
+
total_tokens: current.total_tokens - previous.total_tokens,
|
|
49
|
+
input_token_details: subtractTokenDetails(current.input_token_details, previous.input_token_details),
|
|
50
|
+
output_token_details: subtractTokenDetails(current.output_token_details, previous.output_token_details)
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
//#endregion
|
|
55
|
+
export { subtractUsageMetadata };
|
|
56
|
+
//# sourceMappingURL=metadata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata.js","names":[],"sources":["../../src/utils/metadata.ts"],"sourcesContent":["import type {\n UsageMetadata,\n InputTokenDetails,\n OutputTokenDetails,\n} from \"@langchain/core/messages\";\n\n/**\n * Computes the delta between two token detail objects by subtracting\n * each field in `previous` from the corresponding field in `current`.\n *\n * This is used to convert cumulative token detail counts (as reported\n * by the Gemini streaming API) into per-chunk deltas that can be\n * correctly summed by {@link mergeUsageMetadata} during chunk\n * concatenation.\n *\n * @param current - The cumulative token details from the current chunk.\n * @param previous - The cumulative token details from the previous chunk.\n * @returns The per-chunk delta, or `undefined` if `current` is undefined.\n */\nfunction subtractTokenDetails<T extends InputTokenDetails | OutputTokenDetails>(\n current?: T,\n previous?: T\n): T | undefined {\n if (!current) return undefined;\n if (!previous) return current;\n const result = {} as Record<string, number>;\n for (const key of Object.keys(current) as (keyof T)[]) {\n const cur = current[key] as number | undefined;\n const prev = previous[key] as number | undefined;\n if (cur !== undefined) {\n result[key as string] = cur - (prev ?? 0);\n }\n }\n return result as T;\n}\n\n/**\n * Computes the delta between two {@link UsageMetadata} objects by\n * subtracting each field in `previous` from the corresponding field in\n * `current`.\n *\n * The Gemini streaming API reports **cumulative** token counts on every\n * SSE chunk, but `@langchain/core`'s `mergeUsageMetadata` combines\n * values via addition. Emitting raw cumulative values on each\n * `AIMessageChunk` would therefore inflate the totals when chunks are\n * concatenated. This function converts cumulative values into per-chunk\n * deltas so that additive merging produces the correct final totals.\n *\n * @param current - The cumulative usage metadata from the current chunk.\n * @param previous - The cumulative usage metadata from the previous\n * chunk, or `undefined` for the first chunk in the stream.\n * @returns The per-chunk delta usage metadata.\n */\nexport function subtractUsageMetadata(\n current: UsageMetadata,\n previous?: UsageMetadata\n): UsageMetadata {\n if (!previous) return current;\n return {\n input_tokens: current.input_tokens - previous.input_tokens,\n output_tokens: current.output_tokens - previous.output_tokens,\n total_tokens: current.total_tokens - previous.total_tokens,\n input_token_details: subtractTokenDetails(\n current.input_token_details,\n previous.input_token_details\n ),\n output_token_details: subtractTokenDetails(\n current.output_token_details,\n previous.output_token_details\n ),\n };\n}\n"],"mappings":";;;;;;;;;;;;;;AAmBA,SAAS,qBACP,SACA,UACe;AACf,KAAI,CAAC,QAAS,QAAO;AACrB,KAAI,CAAC,SAAU,QAAO;CACtB,MAAM,SAAS,EAAE;AACjB,MAAK,MAAM,OAAO,OAAO,KAAK,QAAQ,EAAiB;EACrD,MAAM,MAAM,QAAQ;EACpB,MAAM,OAAO,SAAS;AACtB,MAAI,QAAQ,OACV,QAAO,OAAiB,OAAO,QAAQ;;AAG3C,QAAO;;;;;;;;;;;;;;;;;;;AAoBT,SAAgB,sBACd,SACA,UACe;AACf,KAAI,CAAC,SAAU,QAAO;AACtB,QAAO;EACL,cAAc,QAAQ,eAAe,SAAS;EAC9C,eAAe,QAAQ,gBAAgB,SAAS;EAChD,cAAc,QAAQ,eAAe,SAAS;EAC9C,qBAAqB,qBACnB,QAAQ,qBACR,SAAS,oBACV;EACD,sBAAsB,qBACpB,QAAQ,sBACR,SAAS,qBACV;EACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@langchain/google",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"description": "Google integrations for LangChain.js",
|
|
5
5
|
"author": "LangChain",
|
|
6
6
|
"license": "MIT",
|
|
@@ -16,7 +16,8 @@
|
|
|
16
16
|
"dependencies": {
|
|
17
17
|
"eventsource-parser": "^3.0.6",
|
|
18
18
|
"google-auth-library": "^10.5.0",
|
|
19
|
-
"jose": "^6.1.3"
|
|
19
|
+
"jose": "^6.1.3",
|
|
20
|
+
"uuid": "^10.0.0"
|
|
20
21
|
},
|
|
21
22
|
"peerDependencies": {
|
|
22
23
|
"@langchain/core": "^1.0.0"
|
|
@@ -31,7 +32,7 @@
|
|
|
31
32
|
"vitest": "^3.2.4",
|
|
32
33
|
"zod": "^3.25.76 || ^4",
|
|
33
34
|
"zod-to-json-schema": "^3.24.6",
|
|
34
|
-
"@langchain/core": "^1.1.
|
|
35
|
+
"@langchain/core": "^1.1.29",
|
|
35
36
|
"@langchain/eslint": "0.1.1",
|
|
36
37
|
"@langchain/standard-tests": "0.0.23"
|
|
37
38
|
},
|