From 245c68816cd294a5e1d34b1d4ee58b1a0c425bad Mon Sep 17 00:00:00 2001 From: afirstenberg Date: Sun, 5 Jan 2025 21:27:03 -0500 Subject: [PATCH 1/4] Fix error if the output parser is used when there is no search grounding information. --- libs/langchain-google-common/src/output_parsers.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libs/langchain-google-common/src/output_parsers.ts b/libs/langchain-google-common/src/output_parsers.ts index 8ca9377011ba..c0e916c90d6e 100644 --- a/libs/langchain-google-common/src/output_parsers.ts +++ b/libs/langchain-google-common/src/output_parsers.ts @@ -23,9 +23,9 @@ export abstract class BaseGoogleSearchOutputParser extends BaseLLMOutputParser Date: Sun, 5 Jan 2025 21:27:29 -0500 Subject: [PATCH 2/4] Test what happens if the output parser is used when there is no search grounding information. --- .../src/tests/output_parsers.test.ts | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/libs/langchain-google-common/src/tests/output_parsers.test.ts b/libs/langchain-google-common/src/tests/output_parsers.test.ts index ac3c135f5279..6eea492106be 100644 --- a/libs/langchain-google-common/src/tests/output_parsers.test.ts +++ b/libs/langchain-google-common/src/tests/output_parsers.test.ts @@ -214,4 +214,23 @@ describe("GoogleSearchOutputParsers", () => { expect(result).toEqual(expectation); }); + + test("non-grounded", async () => { + const record: Record = {}; + const projectId = mockId(); + const authOptions: MockClientAuthInfo = { + record, + projectId, + resultFile: "chat-1-mock.json", + }; + + const model = new ChatGoogle({ + authOptions, + modelName: "gemini-1.5-pro-002", + }); + const parser = new SimpleGoogleSearchOutputParser(); + const chain = model.pipe(parser); + const result = await chain.invoke("Flip a coin."); + expect(result).toEqual("T"); + }) }); From 7cbc8a633ac15cdf474ba4a82af286bd1f96f7a6 Mon Sep 17 00:00:00 2001 From: afirstenberg Date: Mon, 6 Jan 2025 06:40:55 -0500 Subject: [PATCH 3/4] More optional chaining --- libs/langchain-google-common/src/output_parsers.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libs/langchain-google-common/src/output_parsers.ts b/libs/langchain-google-common/src/output_parsers.ts index c0e916c90d6e..af4efd1f8276 100644 --- a/libs/langchain-google-common/src/output_parsers.ts +++ b/libs/langchain-google-common/src/output_parsers.ts @@ -144,7 +144,7 @@ export abstract class BaseGoogleSearchOutputParser extends BaseLLMOutputParser { ret = `${ret}${this.chunkToString(chunk, index)}\n`; }); From f2519b6c55eee62315e0a0e317e9771bafb0ac71 Mon Sep 17 00:00:00 2001 From: afirstenberg Date: Thu, 9 Jan 2025 06:31:11 -0500 Subject: [PATCH 4/4] Formatting --- libs/langchain-google-common/src/output_parsers.ts | 3 ++- libs/langchain-google-common/src/tests/output_parsers.test.ts | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/libs/langchain-google-common/src/output_parsers.ts b/libs/langchain-google-common/src/output_parsers.ts index af4efd1f8276..2c0d0d031022 100644 --- a/libs/langchain-google-common/src/output_parsers.ts +++ b/libs/langchain-google-common/src/output_parsers.ts @@ -198,7 +198,8 @@ export class SimpleGoogleSearchOutputParser extends BaseGoogleSearchOutputParser protected textSuffix(_text: string, grounding: GroundingInfo): string { let ret = "\n"; - const chunks: GeminiGroundingChunk[] = grounding?.metadata?.groundingChunks ??[]; + const chunks: GeminiGroundingChunk[] = + grounding?.metadata?.groundingChunks ?? []; chunks.forEach((chunk, index) => { ret = `${ret}${this.chunkToString(chunk, index)}\n`; }); diff --git a/libs/langchain-google-common/src/tests/output_parsers.test.ts b/libs/langchain-google-common/src/tests/output_parsers.test.ts index 6eea492106be..f3be76f57456 100644 --- a/libs/langchain-google-common/src/tests/output_parsers.test.ts +++ b/libs/langchain-google-common/src/tests/output_parsers.test.ts @@ -232,5 +232,5 @@ describe("GoogleSearchOutputParsers", () => { const chain = model.pipe(parser); const result = await chain.invoke("Flip a coin."); expect(result).toEqual("T"); - }) + }); });