From 5d581ba22c68ab46818197da907278c1c45aad41 Mon Sep 17 00:00:00 2001 From: Yao Tianjia <791863347@qq.com> Date: Sat, 8 Feb 2025 11:01:01 +0800 Subject: [PATCH] langchain: support the situation when action_input is null in json output_parser (#29680) Description: This PR fixes handling of null action_input in [langchain.agents.output_parser]. Previously, passing null to action_input could cause OutputParserException with unclear error message which cause LLM don't know how to modify the action. The changes include: Added null-check validation before processing action_input Implemented proper fallback behavior with default values Maintained backward compatibility with existing implementations Error Examples: ``` { "action":"some action", "action_input":null } ``` Issue: None Dependencies: None --- libs/langchain/langchain/agents/output_parsers/json.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/libs/langchain/langchain/agents/output_parsers/json.py b/libs/langchain/langchain/agents/output_parsers/json.py index 2dbc56178ff..e89a9bfa6ef 100644 --- a/libs/langchain/langchain/agents/output_parsers/json.py +++ b/libs/langchain/langchain/agents/output_parsers/json.py @@ -50,9 +50,10 @@ class JSONAgentOutputParser(AgentOutputParser): if response["action"] == "Final Answer": return AgentFinish({"output": response["action_input"]}, text) else: - return AgentAction( - response["action"], response.get("action_input", {}), text - ) + action_input = response.get("action_input", {}) + if action_input is None: + action_input = {} + return AgentAction(response["action"], action_input, text) except Exception as e: raise OutputParserException(f"Could not parse LLM output: {text}") from e