DAIL-SQL的Token节省之道:每问仅1600 Tokens,示例组织策略与成本优化全解析 DAIL-SQL的Token节省之道每问仅1600 Tokens示例组织策略与成本优化全解析【免费下载链接】DAIL-SQLA efficient and effective few-shot NL2SQL method on GPT-4.项目地址: https://gitcode.com/gh_mirrors/da/DAIL-SQLDAIL-SQL 是运行在 GPT-4 上的高效高精度 few-shot Text-to-SQLNL2SQL方案在 Spider 榜单上以 86.2% 的执行准确率登顶而每个问题平均仅消耗约1600 Tokens。本文将拆解它的三大 Token 节省策略——示例组织、贪心预算裁剪、双相似度示例选择并教你估算 LLM API 的真实调用成本。先选对问题表示代码风格 Schema 胜出DAIL-SQL 在零样本场景下对比了 5 种问题表示方式自然文本、代码、OpenAI 官方演示格式、指令格式、CoT结论是用 SQL 建表语句Code Representation描述 Schema且带上外键、加一句with no explanation是 GPT-4 上最稳的组合。用CREATE TABLE语句替代Table xxx, columns [...]的纯文本列表LLM 更不容易写错表名列名外键信息直接给出省掉模型自行猜测表连接关系的成本with no explanation 规则约束输出只给 SQL避免废话占用输出 Token。两种关键组件外键、无解释规则带来的增益对比对应模板定义可参考 prompt/PromptReprTemplate.py。Token预算控制实现把 Prompt 压进 1600 怎么做的DAIL-SQL 的 Prompt 由「Schema 若干示例 目标问题」拼接而成核心裁剪逻辑在 prompt/PromptICLTemplate.py 的format()中总预算max_seq_len默认 4096减去预留的答案空间max_ans_len200得到 Prompt 可用上限约 3896 Tokens贪心装箱从候选池示例数 ×scope_factor中按相似度排序逐个尝试加入每加一个就用真实 tokenizer 重新计数一旦超预算立即丢弃该示例宁缺毋滥凑不满 k-shot 就不硬凑——示例质量差不如示例数量少。这套机制让 Spider-dev 上的平均 Prompt 稳定在约 1600 Tokens只占模型上下文上限的四成左右既留足安全边际又直接压低 API 账单。示例组织三策略为什么 QA 对最适合 GPT-4 这类强 LLMfew-shot 示例的组织方式有 3 种见 prompt/ExampleFormatTemplate.py策略每个示例包含Token 代价适合Full-InformationCOMPLETESchema 问题 SQL最高弱模型SQL-OnlyONLYSQL仅 SQL最低语义信息不足QA 对DAIL-SQL 采用问题 SQL中低强 LLMDAIL-SQL 的关键洞察是示例里重复的数据库 Schema 是最贵的冗余。Schema 已在 Prompt 头部给出示例只需保留问题 → SQL的映射关系即可教会模型任务模式。实验对比GPT-4 上 QA 对全面领先示例选择策略掩码问题相似度 SQL 骨架相似度选好组织方式后选哪些示例同样重要。DAIL-SQL 采用两步走实现见 prompt/ExampleSelectorTemplate.py第一步问题相似度先用 Schema 链接把问题中的表名、列名、实体值替换为mask/unk再编码比对句向量距离——掩码后比的是问法结构而非字面词汇第二步查询骨架相似度先用廉价模型预生成一次 SQL取其骨架去掉常量值与训练集 SQL 骨架做 Jaccard 相似度阈值0.85确保示例与目标问题的查询模式一致。该策略在 9-shot 下 GPT-4 执行准确率达 82.4%Spider train 上显著优于随机选取。相关结果文件见 results/ 目录。API成本估算GPT-4 账单这样算generate_question.py 在生成 Prompt 后会自动汇总每个 Prompt 的 Token 数并按内置单价估算成本单价表定义在 utils/enums.py模型每 1K Tokens 价格每问约 1600 Tokens 的成本GPT-4$0.03≈ $0.05GPT-3.5-Turbo$0.002≈ $0.003text-davinci-003$0.02≈ $0.03也就是说单问成本仅 5 美分左右若开启 self-consistency5 次投票取多数成本乘以 5 仍可接受换来 0.4% 的准确率提升86.2% → 86.6%。快速上手三步跑通 DAIL-SQL 流水线一键脚本 run_dail_sql_mini.sh 展示了完整流程核心就三步python data_preprocess.py # 1. 预处理 Spider 数据集 python generate_question.py \ # 2. 掩码相似度选示例生成 9-shot Prompt --split test --k_shot 9 --prompt_repr SQL \ --example_type QA --selector_type EUCDISQUESTIONMASK python ask_llm.py \ # 3. 调用 GPT-4 生成最终 SQL --model gpt-4 --question ./dataset/process/...完整 DAIL 策略含预生成 SQL 二次筛选见 run_dail_sql.shBIRD 数据集带外部知识证据的运行方式见 run_for_bird.sh。结果一览精度与成本兼得方法Dev EXTest EXDAIL-SQL GPT-483.1%86.2%DAIL-SQL GPT-4 Self-consistency83.6%86.6%小结 DAIL-SQL 的 Token 经济学可以浓缩为三句话Schema 只写一遍——示例里删掉重复的建表语句改用 QA 对组织省 60% 示例 Token预算内贪心装箱——真实 tokenizer 计数 超限即丢把 Prompt 稳定压在 1600 Tokens双相似度挑示例——掩码问题相似度选问法像的SQL 骨架相似度选查询像的少而精。这套思路不局限于 Text-to-SQL任何用 GPT-4 做 few-shot 推理的场景都可以照搬预算控制 去冗余示例 结构相似度选样三板斧来压缩 API 成本。【免费下载链接】DAIL-SQLA efficient and effective few-shot NL2SQL method on GPT-4.项目地址: https://gitcode.com/gh_mirrors/da/DAIL-SQL创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考