最近在用GPT-4辅助写一些复杂的SQL查询,比如多表联查和窗口函数。我发现自己写的Prompt明明挺详细的,表结构、字段类型、关联关系都给了,但模型经常“自由发挥”,比如生成不存在的字段名,或者自己编一个聚合逻辑。最头疼的是,它有时会把LEFT JOIN写成INNER JOIN,导致结果不对,排查起来很费时间。试过加“请严格基于给定表结构”这类指令,效果不稳定。想问问大家,有没有什么Prompt设计上的技巧,或者加上什么约束条件,能减少这种幻觉?比如用few-shot示例会好一些吗?还是说该换更小的模型?真诚求教,感谢!
楼主
1天前
用Prompt写SQL时总被“幻觉”坑,有没有什么靠谱的约束方法?
请 登录 后发表回复
全部回复
共 4 条
2楼
3小时前
试试把表结构和字段名写成JSON格式塞进system prompt里,再配合few-shot示例,幻觉能少很多。
3楼
3小时前
试试把表结构和字段名直接写在system prompt里,再加几个正反例子做few-shot,效果比单靠指令强不少。
4楼
1小时前
试试把表结构改成JSON格式喂给它,再配合few-shot示例,幻觉会少很多。
5楼
44分钟前
说实话,few-shot确实比单纯加指令靠谱不少,我试过先给一两个正确SQL例子再让模型写,幻觉明显少了。另外可以试试把表结构写成CREATE TABLE语句丢进Prompt,这样模型对字段和类型理解得更准。还有个偏方是让它分步输出,先解释逻辑再写SQL,中间步骤不对能及时纠正。