From b287da5847c1e6124829e2091a0a1361f1b8499a Mon Sep 17 00:00:00 2001 From: bracesproul Date: Tue, 23 Jul 2024 09:47:31 -0700 Subject: [PATCH 1/2] anthropic[patch]: Handle non text llm tokens --- libs/langchain-anthropic/src/chat_models.ts | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/libs/langchain-anthropic/src/chat_models.ts b/libs/langchain-anthropic/src/chat_models.ts index 87013e8f8ad7..a947c6231c91 100644 --- a/libs/langchain-anthropic/src/chat_models.ts +++ b/libs/langchain-anthropic/src/chat_models.ts @@ -598,9 +598,18 @@ function extractToolCallChunk( } function extractToken(chunk: AIMessageChunk): string | undefined { - return typeof chunk.content === "string" && chunk.content !== "" - ? chunk.content - : undefined; + if (typeof chunk.content === "string") { + return chunk.content; + } else if ( + Array.isArray(chunk.content) && + chunk.content[0].type === "tool_use" && + "input" in chunk.content[0] + ) { + return typeof chunk.content[0].input === "string" + ? chunk.content[0].input + : JSON.stringify(chunk.content[0].input); + } + return undefined; } function extractToolUseContent( From ef22445ee0a0fe33a0f67591b73331f79eb80411 Mon Sep 17 00:00:00 2001 From: bracesproul Date: Tue, 23 Jul 2024 11:47:41 -0700 Subject: [PATCH 2/2] check for input field --- libs/langchain-anthropic/src/chat_models.ts | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/libs/langchain-anthropic/src/chat_models.ts b/libs/langchain-anthropic/src/chat_models.ts index a947c6231c91..6c2ce2de1211 100644 --- a/libs/langchain-anthropic/src/chat_models.ts +++ b/libs/langchain-anthropic/src/chat_models.ts @@ -600,11 +600,7 @@ function extractToolCallChunk( function extractToken(chunk: AIMessageChunk): string | undefined { if (typeof chunk.content === "string") { return chunk.content; - } else if ( - Array.isArray(chunk.content) && - chunk.content[0].type === "tool_use" && - "input" in chunk.content[0] - ) { + } else if (Array.isArray(chunk.content) && "input" in chunk.content[0]) { return typeof chunk.content[0].input === "string" ? chunk.content[0].input : JSON.stringify(chunk.content[0].input);