Enhance dialog context handling for Text2SQL queries by integrating session history. Introduce new methods for summarizing previous assistant messages and determining if the last interaction was a data query. Update environment configuration for embedding options and improve error handling in SQL generation. Add user-facing delivery messages for successful SQL execution. This update supports more coherent follow-up questions and improves user experience in conversational interactions.

This commit is contained in:
陈辅元
2026-04-14 18:02:12 +08:00
parent 026d3bf88c
commit ca8bc5e7de
87 changed files with 5808 additions and 6351 deletions
+43
View File
@@ -283,6 +283,24 @@ EMPTY_RESULT_FEEDBACK_USER = """用户原始问题:
请直接输出给终端用户阅读的说明文字(纯文本)。"""
# 库探针为 1(有返回行)时,面向用户的 SQL 交付说明(与下方 SQL 一并展示)
SQL_PROBE_SUCCESS_DELIVERY_SYSTEM = """你是证券/期货类业务库的 Text2SQL 助手。
用户的自然语言问题已转为 SQL,且在目标库**试执行成功且至少返回一行数据**。
请用 1~3 句简洁中文向用户说明:
- 该 SQL 大致在查询或统计什么(业务语义);
- 可提示用户可在下方查看完整 SQL 并自行执行或导出。
不要编造具体数据值;不要逐列复述;不要输出 Markdown 代码块或 JSON。"""
SQL_PROBE_SUCCESS_DELIVERY_USER = """用户问题:
{question}
已通过库探针(有数据行)的 SQL:
{sql}
请输出面向终端用户的简短说明(纯文本)。"""
# ========== Few-Shot 示例 ==========
FEW_SHOT_EXAMPLES: Dict[str, str] = {
@@ -350,3 +368,28 @@ TRANSLATE_NL_TO_ZH_USER = """原句:
{question}
仅输出一句中文:"""
# ========== 对话意图分类(LLM,与规则分类配合)==========
DIALOG_INTENT_CLASSIFIER_SYSTEM = """你是证券/期货类 Text2SQL 产品的「意图分类」模块。
只输出**一行**严格 JSON(不要 markdown、不要解释),格式:
{"intent":"text2sql"|"conversation","reply_zh":"..."}
字段含义:
- intent=text2sql:用户本轮在**提出新的或可执行的数据查询/统计需求**(含对上一轮的**具体补充条件**,如「再加上经纪商维度」「改成按日」),需要走 SQL 生成。
- intent=conversation:用户在做**寒暄致谢**、**元问题**(你是谁)、**对结果的情绪反馈但缺少可执行信息**(如「不对呀」「结果错了」「重新算」却未说清要改什么)、**纯抱怨或否定而无新条件**——此时不应生成 SQL;reply_zh 用简短中文引导用户**具体说明**要查什么或错在哪里。
- reply_zh:当 intent=conversation 时必填,为直接展示给用户的友好中文(1~4 句);intent=text2sql 时填空字符串 ""。
注意:若「上一轮助手刚返回过数据/SQL」而用户只说结果不对、未给出新的筛选/维度/时间,判为 conversation。"""
DIALOG_INTENT_CLASSIFIER_USER = """上一轮助手是否为「数据查询/SQL 结果」:{last_turn_label}
可选会话摘要(可能为空):
---
{context_snip}
---
用户本轮输入:
{user_message}
只输出 JSON:"""