From d869e4d43f7c347277e4c119b8e76813b45c8218 Mon Sep 17 00:00:00 2001 From: Richard Date: Fri, 21 Mar 2025 19:44:03 +0800 Subject: [PATCH] Fix: Preserve quotes while handling variable substitution withTemplate component. (#6410) ###Address Problem: The original implementation used re.sub(r"(\\\"|\")", "", content) which stripped all quotes from the processed content. While this worked for simple Jinja2-rendered templates, it caused formatting issues when : -Quotes were required in the final output (e.g., JSON, Python Code strings) ###Solution: 1. Selective JSON Serialization. 2. Removed Global Quote Removal ### What problem does this PR solve? This PR addresses an issue in template processing where all quotation marks (" and \") were being removed from content, potentially corrupting string formatting in rendered outputs. **In fact, extra quotes is generated by json.dumps(v, ensure_ascii=False).** ### Type of change - [x] Bug Fix (non-breaking change which fixes an issue) --- agent/component/template.py | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/agent/component/template.py b/agent/component/template.py index b7838c2cc..b54b93d56 100644 --- a/agent/component/template.py +++ b/agent/component/template.py @@ -109,16 +109,14 @@ class Template(ComponentBase): pass for n, v in kwargs.items(): - try: - v = json.dumps(v, ensure_ascii=False) - except Exception: - pass + if not isinstance(v, str): + try: + v = json.dumps(v, ensure_ascii=False) + except Exception: + pass content = re.sub( r"\{%s\}" % re.escape(n), v, content ) - content = re.sub( - r"(\\\")", "", content - ) content = re.sub( r"(#+)", r" \1 ", content )