大家好,我是周伟。
前文讲到,我们最近在做一个AI聊天机器人,目标是让团队成员摆脱传统功能页面的繁琐操作,转而通过最自然的语言提问方式,直接获取来自业务数据的实时、精准的答案,从而提升决策效率和操作便捷性。
今天在该项目中,碰到了2个有意思的问题。
问题一:
数据库有一个伪删除字段del_flag,在之前业务开发中,该字段可能是int,可能是varchar类型,在使用模型生产SQL语句的时候,会有几率的带上一个尾巴,where del_flag is null,直接导致都查询不到数据。最后怎么解决的呢?
采用增加提示词:“生成SQL的时候,表中如果有删除标识字段,比如del_flag,在拼接sql后面的where条件的时候,不要拼接del_flag is null,要根据字段类型拼接del_flag=0或者del_flag=’0’”,解决了该问题。
问题二:
客户问:“预算金额超过20万的需求计划”,然后SQL直接生成了plan_amount > 200000的过滤条件,这个时候问题来了,我们数据库字段直接存的万元为单位的金额,比如21万,数据库字段存的值就是21,通过以上SQL语句筛选查询自然就给过滤掉了。这种问题应该怎么解决呢?
我们通过两个步骤解决了该问题,我们解析字段的含义,主要是通过字段的注解说明来解析的,我们把字段说明改成“计划金额(单位:万元)”,增加了单位的说明,然后再加上提示词:“如果涉及到金额,你要参考表字段注释信息中的单位来进行换算,示例:如果问的是1万元,表字段注释信息单位是万元,那么where条件拼接1,表字段注释信息单位是千元,那么where条件拼接10,以此类推。”
我们在进行模型调优过程中,最重要的就是要引导模型来理解你想表达的意思,把模型当作一个人来与他进行沟通,不要过多的修饰,简单明了的表达清除逻辑即可,然后通过技术手段(字段注释、提示词)告知模型,他的回答会越来越让你满意的。