From 4ee0ad2eec46e4c7b05a42e1aeac9f1a1558ab40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E8=BE=85=E5=85=83?= <2401926342@qq.com> Date: Thu, 16 Apr 2026 16:40:22 +0800 Subject: [PATCH] Refine SQL output formatting in prompts to enforce pure text SQL without Markdown code fences. Allow inline comments using `--` and update few-shot selector to reflect these changes in output presentation. Enhance clarity on SQL output requirements for better adherence to standards. --- .../__pycache__/prompts.cpython-312.pyc | Bin 24519 -> 24873 bytes backend/config/prompts.py | 10 +++++----- .../fewshot_selector.cpython-312.pyc | Bin 28963 -> 29130 bytes backend/utils/fewshot_selector.py | 4 +++- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/backend/config/__pycache__/prompts.cpython-312.pyc b/backend/config/__pycache__/prompts.cpython-312.pyc index 4eae5899154c5ec51cbc3b10b9bddb411ce44cde..6d87c736fa3d35be657c49a46955ff22dc7ada16 100644 GIT binary patch delta 624 zcmX@UpK;|OM!wU$yj%=G@M`{pOwpu`d=EL9Ds(n~!^~myw==me%uSjnCFD($addZ}QXjT~BuJezJF}f^T9`c1nJEp2Cyei=QuOd^&r} zvjzR{_jEk%X?@nc=84_jwkJD!U(THHWLKX;LPA1uVUB`6i1B_;C(tbrqn_?>eYtS= zvl;7wcI;aJY+C!XIcq=;)6&|UFE7f*{Iq}70keJ!fIr9gAMKh zTKZyHqk>nkzu)7AMko*F*2fJ^n@_2R3o?3bRxJY96405?7PLQYZ+pIW%Cm(XkRV^y^khdj&;+=LfT00#CNNf>>|FqK z6C`k6w)emy2W~ddk6hL1`8g@6dGWvyt=;^__OybjowHR;XmM&$ag33PfuUuLOKNd; zNq#|0Qetv;ZepHpa$;_34w#pkmlBhlpO==I9y9rPoQrBUlLX5J29Xa@tn6YzK$g%4 cF>YyhrV9+>AEfvsW0)^6h<;F+Y!E*k0En|ntpET3 delta 291 zcmZ2^i1GM-M!wU$yj%=G;N$-w^G3o(zK5JlC$u+zwtKVP%#$&O9$ z_w)d@dj7M@gduCND6&L0xSt%&#>FFuyC@7^?6yzl4C6;97=fOm4H&>~J z3o>$SzGVKDRYC!1AkdsAJ9=L%YkaYMG0;hm8=6YxCo9@56HiD;02;?tot~eQlA0F} zWY=;5#Wri&pH>i%OiE17PR&cvPtMOv%S_jwteN1Vn#Cl+a)CkQLj)_kSP+mU^g)bU a+LiGFgZKw2e#sc-3k;$k)Fw|#m<|BbJAq9A diff --git a/backend/config/prompts.py b/backend/config/prompts.py index 9f28354..7d42f0b 100644 --- a/backend/config/prompts.py +++ b/backend/config/prompts.py @@ -70,7 +70,8 @@ SQL_GENERATOR_SYSTEM = """你是一个精通SQL的数据库专家,有10年以 6. **中英文同义一致**:用户问题可能已由上游归一为中文。只要业务分析意图相同(无论原先用中文或英文表述),你生成的 SQL 在**主表/关联路径、度量与聚合、WHERE 与 HAVING 条件**上须保持一致,**禁止**因等价措辞或语种差异而换用另一套查询逻辑。 **原则**: -1. 只输出SQL语句,不要解释、注释或其他内容(除非SQL内注释) +1. 只输出SQL语句,不要解释或其他内容;**允许**在 SQL 内使用 `--` 注释说明意图 +2. **禁止**输出任何 Markdown 代码围栏(包括但不限于 ```sql / ```);输出必须是**纯文本 SQL** 2. 使用 **T-SQL(SQL Server)** 语法(与标准 SQL 交集部分按 T-SQL 实现) 3. 正确处理NULL值(使用IS NULL/IS NOT NULL,而非= NULL) 4. 聚合查询必须正确使用GROUP BY @@ -94,7 +95,7 @@ SQL_GENERATOR_SYSTEM = """你是一个精通SQL的数据库专家,有10年以 **重要**:以上推断需结合当前Schema中对应字段的实际注释进行调整;若Schema字段注释明确给出了枚举值映射,必须按注释执行。 -**输出格式**:纯SQL字符串,或JSON格式:{"sql": "...", "explanation": "..."} +**输出格式**:只输出一条完整可执行的纯文本 SQL(可含 `--` 注释),不要 JSON、不要 Markdown。 --- @@ -237,14 +238,13 @@ GOLDEN_SQL_ADAPT_SYSTEM = """你是精通 Microsoft SQL Server (T-SQL) 的数据 4. **T-SQL 与版式**:与常规生成一致——关键字大写、多行缩进、`WHERE` 续行以 `AND` 开头、需要时 PascalCase 英文别名;禁止 MySQL 反引号与 `CURDATE()` 等。 5. **禁止在字符串字面量中写中日韩文字**去匹配代码列;须用 Schema 注释中的代码或 JOIN 维表(与系统提示 SQL_GENERATOR 一致)。 -**输出**:仅输出一条完整可执行 SQL,不要解释。""" +**输出**:仅输出一条完整可执行的纯文本 SQL(可含 `--` 注释),不要解释,**禁止**任何 ``` 围栏。""" GOLDEN_SQL_ADAPT_USER = """【标准答案 SQL】(向量库中的已校验正确答案;相似度 {golden_score:.4f},越高越应保留结构) 对应范例问题:{golden_question} -```sql +(标准答案 SQL 如下,纯文本;不要在你的输出里使用 ``` 围栏) {golden_sql} -``` 【当前 Schema 片段】(标识符必须与此一致) {schema} diff --git a/backend/utils/__pycache__/fewshot_selector.cpython-312.pyc b/backend/utils/__pycache__/fewshot_selector.cpython-312.pyc index 28f8ee28ecf58f640f3aaf8711df50f543433165..078654dedc2629d13c8ea74c92ba1940b7dbac09 100644 GIT binary patch delta 361 zcmZ4di1E~8M!wU$yj%=G@OA!!OyA&*e2ckE+?=gqLW@(2ierpS3=Az}TvCg(OY#e1 zk`j}%a})D)lM{1ObHKdRyp)*IlFXdqn9T>cru#A$O^%4T!@iS&p_Z+Nb+Tiy=;VON zuamnY6_{$+CMW8PO!hb6m^?XBl9zuqBgj$)21bUS-J5fxryln4!zi0OIWsT3)E>cKHNKkk>d&{#0{qOg5 zzTY#eNDOGe9fS9xSU@G=NX zPyQdOytzJZKQkl8X8R;YMn>+*j>(T0zid`X+0P;;%&M@0Wkv8x&JPSg<^g3ebt3sQ ri1$HjGh=22BcsITsw{aXMw896a>|%^eAyXAKQe&G4+)!P^4XaHoScXr delta 243 zcmX^0m~rtVM!wU$yj%=Gu-*Sb=Ifx1e2cmG6_XN^vs3d@^h--JbBgshKjoV4%V;*a zHsTKB?9EY;0*ov*Y*`|c6}?3H`R6jPW&~+xU|?kEnY;O1lsuC_6?;NLLUCaZR~0K4 zki|9GIQ9r5=j0!;Pb6npEO1)xw$N>X#R~HalEzngOg?Zj2upw9nXDG3IJt(GbF+T@ zHfBb)&Cik;8G(9UBtK&OwE1+(eik`FR)rNTD}q;YeqaDH4=97F6Um=Jybo%dS7cT& jGKy_h%$8?jG}`Q#TgJrW&CV$LkpV=0h}nENpPdN+>NQYP diff --git a/backend/utils/fewshot_selector.py b/backend/utils/fewshot_selector.py index 2a77b23..2cea36d 100644 --- a/backend/utils/fewshot_selector.py +++ b/backend/utils/fewshot_selector.py @@ -491,7 +491,9 @@ class FewShotSelector: lines.append(f"## {ex.qid}. {ex.question_zh[:50]}") lines.append(f"评分: {ex.rating}/10") lines.append(f"标签: {', '.join(ex.tags)}") - lines.append(f"```sql\n{ex.sql}\n```\n") + lines.append("SQL(纯文本,允许 -- 注释;禁止 ``` 围栏):") + lines.append(ex.sql) + lines.append("") return "\n".join(lines)