Skip to content

Commit 8f93bc5

Browse files
authored
partners[patch]: Fix flaky token counting tests (#6000)
* partners[patch]: Fix flaky token counting tests * chore: lint files
1 parent c29ba14 commit 8f93bc5

File tree

5 files changed

+33
-16
lines changed

5 files changed

+33
-16
lines changed

libs/langchain-anthropic/src/tests/chat_models.int.test.ts

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,16 @@ import {
1313
import { CallbackManager } from "@langchain/core/callbacks/manager";
1414
import { ChatAnthropic } from "../chat_models.js";
1515

16+
async function sleep(ms = 1000): Promise<void> {
17+
return new Promise<void>((resolve) => {
18+
setTimeout(resolve, ms);
19+
});
20+
}
21+
22+
afterEach(async () => {
23+
await sleep();
24+
});
25+
1626
test("Test ChatAnthropic", async () => {
1727
const chat = new ChatAnthropic({
1828
modelName: "claude-3-sonnet-20240229",
@@ -323,6 +333,7 @@ test("Stream tokens", async () => {
323333
const model = new ChatAnthropic({
324334
model: "claude-3-haiku-20240307",
325335
temperature: 0,
336+
maxTokens: 10,
326337
});
327338
let res: AIMessageChunk | null = null;
328339
for await (const chunk of await model.stream(
@@ -339,8 +350,8 @@ test("Stream tokens", async () => {
339350
if (!res?.usage_metadata) {
340351
return;
341352
}
342-
expect(res.usage_metadata.input_tokens).toBe(34);
343-
expect(res.usage_metadata.output_tokens).toBeGreaterThan(10);
353+
expect(res.usage_metadata.input_tokens).toBeGreaterThan(1);
354+
expect(res.usage_metadata.output_tokens).toBeGreaterThan(1);
344355
expect(res.usage_metadata.total_tokens).toBe(
345356
res.usage_metadata.input_tokens + res.usage_metadata.output_tokens
346357
);

libs/langchain-cohere/src/tests/chat_models.int.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ test("Stream token count usage_metadata", async () => {
8181
if (!res?.usage_metadata) {
8282
return;
8383
}
84-
expect(res.usage_metadata.input_tokens).toBe(71);
84+
expect(res.usage_metadata.input_tokens).toBeGreaterThan(1);
8585
expect(res.usage_metadata.output_tokens).toBeGreaterThan(10);
8686
expect(res.usage_metadata.total_tokens).toBe(
8787
res.usage_metadata.input_tokens + res.usage_metadata.output_tokens
@@ -134,7 +134,7 @@ test("Invoke token count usage_metadata", async () => {
134134
if (!res?.usage_metadata) {
135135
return;
136136
}
137-
expect(res.usage_metadata.input_tokens).toBe(71);
137+
expect(res.usage_metadata.input_tokens).toBeGreaterThan(1);
138138
expect(res.usage_metadata.output_tokens).toBeGreaterThan(10);
139139
expect(res.usage_metadata.total_tokens).toBe(
140140
res.usage_metadata.input_tokens + res.usage_metadata.output_tokens

libs/langchain-google-genai/src/tests/chat_models.int.test.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -445,6 +445,7 @@ test("ChatGoogleGenerativeAI can call withStructuredOutput genai tools and invok
445445
test("Stream token count usage_metadata", async () => {
446446
const model = new ChatGoogleGenerativeAI({
447447
temperature: 0,
448+
maxOutputTokens: 10,
448449
});
449450
let res: AIMessageChunk | null = null;
450451
for await (const chunk of await model.stream(
@@ -461,8 +462,8 @@ test("Stream token count usage_metadata", async () => {
461462
if (!res?.usage_metadata) {
462463
return;
463464
}
464-
expect(res.usage_metadata.input_tokens).toBe(10);
465-
expect(res.usage_metadata.output_tokens).toBeGreaterThan(10);
465+
expect(res.usage_metadata.input_tokens).toBeGreaterThan(1);
466+
expect(res.usage_metadata.output_tokens).toBeGreaterThan(1);
466467
expect(res.usage_metadata.total_tokens).toBe(
467468
res.usage_metadata.input_tokens + res.usage_metadata.output_tokens
468469
);
@@ -490,15 +491,16 @@ test("streamUsage excludes token usage", async () => {
490491
test("Invoke token count usage_metadata", async () => {
491492
const model = new ChatGoogleGenerativeAI({
492493
temperature: 0,
494+
maxOutputTokens: 10,
493495
});
494496
const res = await model.invoke("Why is the sky blue? Be concise.");
495497
console.log(res);
496498
expect(res?.usage_metadata).toBeDefined();
497499
if (!res?.usage_metadata) {
498500
return;
499501
}
500-
expect(res.usage_metadata.input_tokens).toBe(10);
501-
expect(res.usage_metadata.output_tokens).toBeGreaterThan(10);
502+
expect(res.usage_metadata.input_tokens).toBeGreaterThan(1);
503+
expect(res.usage_metadata.output_tokens).toBeGreaterThan(1);
502504
expect(res.usage_metadata.total_tokens).toBe(
503505
res.usage_metadata.input_tokens + res.usage_metadata.output_tokens
504506
);

libs/langchain-google-vertexai/src/tests/chat_models.int.test.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -237,6 +237,7 @@ describe("GAuth Chat", () => {
237237
test("Stream token count usage_metadata", async () => {
238238
const model = new ChatVertexAI({
239239
temperature: 0,
240+
maxOutputTokens: 10,
240241
});
241242
let res: AIMessageChunk | null = null;
242243
for await (const chunk of await model.stream(
@@ -253,8 +254,8 @@ test("Stream token count usage_metadata", async () => {
253254
if (!res?.usage_metadata) {
254255
return;
255256
}
256-
expect(res.usage_metadata.input_tokens).toBe(9);
257-
expect(res.usage_metadata.output_tokens).toBeGreaterThan(10);
257+
expect(res.usage_metadata.input_tokens).toBeGreaterThan(1);
258+
expect(res.usage_metadata.output_tokens).toBeGreaterThan(1);
258259
expect(res.usage_metadata.total_tokens).toBe(
259260
res.usage_metadata.input_tokens + res.usage_metadata.output_tokens
260261
);
@@ -282,15 +283,16 @@ test("streamUsage excludes token usage", async () => {
282283
test("Invoke token count usage_metadata", async () => {
283284
const model = new ChatVertexAI({
284285
temperature: 0,
286+
maxOutputTokens: 10,
285287
});
286288
const res = await model.invoke("Why is the sky blue? Be concise.");
287289
console.log(res);
288290
expect(res?.usage_metadata).toBeDefined();
289291
if (!res?.usage_metadata) {
290292
return;
291293
}
292-
expect(res.usage_metadata.input_tokens).toBe(9);
293-
expect(res.usage_metadata.output_tokens).toBeGreaterThan(10);
294+
expect(res.usage_metadata.input_tokens).toBeGreaterThan(1);
295+
expect(res.usage_metadata.output_tokens).toBeGreaterThan(1);
294296
expect(res.usage_metadata.total_tokens).toBe(
295297
res.usage_metadata.input_tokens + res.usage_metadata.output_tokens
296298
);

libs/langchain-mistralai/src/tests/chat_models.int.test.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -922,6 +922,7 @@ test("Stream token count usage_metadata", async () => {
922922
const model = new ChatMistralAI({
923923
model: "codestral-latest",
924924
temperature: 0,
925+
maxTokens: 10,
925926
});
926927
let res: AIMessageChunk | null = null;
927928
for await (const chunk of await model.stream(
@@ -938,8 +939,8 @@ test("Stream token count usage_metadata", async () => {
938939
if (!res?.usage_metadata) {
939940
return;
940941
}
941-
expect(res.usage_metadata.input_tokens).toBe(13);
942-
expect(res.usage_metadata.output_tokens).toBeGreaterThan(10);
942+
expect(res.usage_metadata.input_tokens).toBeGreaterThan(1);
943+
expect(res.usage_metadata.output_tokens).toBeGreaterThan(1);
943944
expect(res.usage_metadata.total_tokens).toBe(
944945
res.usage_metadata.input_tokens + res.usage_metadata.output_tokens
945946
);
@@ -969,15 +970,16 @@ test("Invoke token count usage_metadata", async () => {
969970
const model = new ChatMistralAI({
970971
model: "codestral-latest",
971972
temperature: 0,
973+
maxTokens: 10,
972974
});
973975
const res = await model.invoke("Why is the sky blue? Be concise.");
974976
console.log(res);
975977
expect(res?.usage_metadata).toBeDefined();
976978
if (!res?.usage_metadata) {
977979
return;
978980
}
979-
expect(res.usage_metadata.input_tokens).toBe(13);
980-
expect(res.usage_metadata.output_tokens).toBeGreaterThan(10);
981+
expect(res.usage_metadata.input_tokens).toBeGreaterThan(1);
982+
expect(res.usage_metadata.output_tokens).toBeGreaterThan(1);
981983
expect(res.usage_metadata.total_tokens).toBe(
982984
res.usage_metadata.input_tokens + res.usage_metadata.output_tokens
983985
);

0 commit comments

Comments
 (0)