2025QECon全球软件质量效能大会:SQL Agent在去哪网的落地实践_第1页
2025QECon全球软件质量效能大会:SQL Agent在去哪网的落地实践_第2页
2025QECon全球软件质量效能大会:SQL Agent在去哪网的落地实践_第3页
2025QECon全球软件质量效能大会:SQL Agent在去哪网的落地实践_第4页
2025QECon全球软件质量效能大会:SQL Agent在去哪网的落地实践_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

QECon2025全球软件质量&效能大会

·北京站2025GLOBAL

SOFTWARE

QUALITY

&EFFICIENCY

CONFERENCE·BEIJINGSQL

Agent在去哪网的落地实践宋鑫

|去哪儿网高级Java

开发工程师宋鑫去哪儿网

Java高级开发工程师2022年加入去哪儿网,目前在基础架构下基础平台团队,主要参与负责测试环境管理,

全链路压测平台。对AI

Agent有深入了解,2025年开始探索AI

Agent在企业中的应用与实践。去哪儿Alhackathon大赛金奖。GOPS

大会金牌讲师。QECon全球软件质量&效能大会

项目背景

方案演进与设计

落地效果与经验总结未来展望目录CONTENTS全球软件质量&效能大会全球软件质量&效能大会PART

01项目背景QE

项目背景-传统流程原始数据脚本洗表报告人员排期分析报告复杂SQL

撰写帮我查一下今天票量是多少?帮我查一下今天平均票价是多少?◎◎等待数分结果

产运数分类别人均跑数

个数跑数失败

率人均跑数

小时P60_人均

跑数时长P90_人均

跑数时长P95_人均

跑数时长国内机票18813.03%411122252去哪儿全司35313.01%1020192383QE

项目背景-存在的问题查数难

取数难

使用难·

SQL到执行复制粘贴等待

执行流程冗长复杂。·

用户交互界面复杂,体验

差。·

产运SQL能力有限·

复杂SQL编写困难·

已有SQL改造复杂·

底表数据庞大·

数据管理混乱·

脏数据多低效率两大问题:

6问题1:数据问题问题2:SQL

产生的问题提效点2交付SQL生成Agent高效率60项目背景-提效空间提效点1数据混乱治理规范数据业务团队全球软件质量&效能大会PART

02方案演进与设计缺失字段沟通补齐底表基建业务团队数据字典建设沟通各业务域现存问

题,缺失的字段数据清洗口径治理缺失字段埋点构建dwd中间表构造数据字典,统一口

径数据是基石业务团队数据治理概览医智能体已满用pefBusshessheerTablehdex已满用petfBusriesKnowiedag#Sheet调明卉泽根据《业务知识库》和《驾用术语表》的信息;以下星生成的59L查海!SQL

Agent的初探你

助的

息:1.用户同膜1.当获取用广问影后,你应该盖先从驾用术语表》中德定用户是否爱查询的鼓据星明确的驾果在《常用术酒表》中发现用户间实整2.《京用术语表用户问题中短常自宫一些业务术语。这个表中合记录一些用户常用术语。你需要调用工作鸿获取这个常用术语的解释,自-21请雷“陕重常用话工作流来获原常用热面。-22结集是一个hon

字将串。其中wauan

是一个款姻对象、政述的第一个时象皂标赔行。分刚是“常用术话和”水语解释”哂个标题,3.《金务知识:一个

shat

表郭的知识库,这个鼓概是一个业务的知识库,图用户的问题存在业务关职性,这个数据理一个isn

字粉串,-3.1下面是时表单中每个材监的解样中文:在中数产字超定究;建义这个字院的廿算业(一船为其他几个字段的加高染薄或者直接出热这个指林的5QL计算公式)、如果不为空,附对读c

不深单影字国的字程键文加

-

0Cabuz

/

,期

案B距-Cabout来源表中文名:对这个来录飘的业务语义,定义了这个表一般用在聊些业务场景中,-3.2这个动een

表单数摆你需要限用工流获亚,再件获取流理知下4.

(游琢表手膜区》一个放多个表结构防理,这个愁测是一个和表结构相关陵理,主整指述表中各个字的结构等信息,这个趋据出是-4.1这个《政据澳字赖指述》的监据需要你调用工作鸿获取,具体获取选租如下:露用“获取医字险信息“工作流获到表单相关信息,这个工作篮的入abaLtotatas.1Iaaic.kananastaiLImLIRona.abxsaflatats.Ia-aGLudsanactba2调用春字段情息工个真世取(微洞者字民接涛的鼓据,3偶用“获雕表

服信

”工

流获

取《常

用术

的整

照。NTERAL

逐法不融查梅。请不要债用-T0CHAR函独不被支持,语不要使用*生成的S9L要求1.时间计具,如果是计算的天,前一天这种时间字段的,不要写死,要使用aqi语法*获取当前时间,通过当前时间告进行计算用户的时间4.

一般dt

字段要是进行了分明,则出字段也会履原在退回字报中。5不需警大直肉的穿主义出,直接输出字段犯习7

.

出当前80

.环填支择的80L请法拌识期自己没有使即不壹棒的话洁自

参E速

用了

5

0L.忧先参考知识库中的的课指向一在知识中。事段已禁附情揪注字段的来源表,防优先以此性,而不星铭赖直设痛湖像。流程图补充问题SQL

成Agent引导用户重新提问引导用户补充问题信息开

始提出问题SQL

类问题获取用户部门结

束运行

SQL生成

SQL业务知识库

表元数据补充条件表默认条件是否要明确

问题维度获双业务知识库选择所需表名集查询表元数据提示工程分阶段提示先生成初版

SQL,

再在第二轮对

初版SQL

进行优化。显式约束提醒在

Prompt中列出必须保留的字段/注意的条件清单,让模型每次优化

都必须校验。优化前后的对比要求让

Agent输出优化前后的SQL对照表,并标记改动点。初次探索存在的问题“丢三落四”的现象严重!单Agent既要生成SQL,

还要优化SQL。优化经常遗忘用户问题表述中,经常携带

行业黑话(术语)。Agent拆分+术语库业务术语库

业务知识库

表元数据拆分后的流程图补充问题SQL生成Agent,引

户重新提问引导用户补充燊

正在进行语句优化,以确保SQL

可正常执行..【5QL

详情】最终可执行的SQL

已生成,接下来会执行,请稍等…5

WHEE7ANDreplace(dt,-',")>=replace(DATE_SUB(CURRENT_DATE,88

don

inter-0AND

is_fenxiao·8AND

ism二18首次拆分-优化

Agent#[规则2]模糊匹配如果SQL

中的where条件含有finaly_tog的等值匹配条件,且值的字符长度小

如果SQL中的where条件含有domoin

的等值匹配条件,则改为模韬匹配,do

#[规则3]默认where

条件许多表存在默认的where条件,你需要调用一下工作流获取表的“默认where条

获取表的“默认where条件限制”的工作流调用如下:1.调用“获取表的默认where

条件”工作流获取表的where限制条件,这个数据按照上述的各种规则要求,将SQL

调整为正确的语句后返回SQL

语句。采

用MARKDOWN格式输出,格式如下:(SQL

语句)#注意1.

如果用户的SQL

语句没有问题,则不做任何修改返回即可。2.不需要返回任何不必要的说明,只需要输出一条SQL

语句。输出SQL

1

SELECT4

FROM

fLight,dwd_ord_wide_order_di5

MHERE6

dep_date

='2024-87-81'ANDdep_date4=

‘2024-88-31'7

ANDdts=DATE_SUB(CURENT_DATE,8)ANDdt<

CURENT_DATE8

GROUPBY优化

Agent生成Agent获取用户部门获取业务黑话

获取业务知识库单

Agent#

色你是一个SQL

优化助手,根据用户返回的SQL

答案,检查是否符合要求。#[规则1]SQL环填不支持的关键字-INTERVAL

不支持。-TO_CHAR

不支持。-PERCENTILE_CONT不支持,使用从小到大排序的方式来计算。运行

SQLSQL

优化Agent,提出问题SQL

类问题是是否要明确

问题维度选择所需表名集查询表元数据增加内置逻辑正

、件、问题信息开始格

补修

条式

充生

成SQL结束是QE

存在的问题生成的SQL还是有小概率语

法错误。引入Re

act机制先思考,再行动,观察结

果,再继续思考,直到解

决问题。工具一次性调用不满足场景。任务复杂,没有任务规划QE

引入React机制Agent引入React

机制表元数据重

成Agent

流程图+

React

效果图燊

正在进行语句优化,以确保SQL

可正常执行….▲

当前

SQL

存在不可自动修复的问题,系统将重新生

成语句,请稍等…已重新生成SQL:为了解决

flight.dwd_ord_wide_order_di

表分区超过限制的问题,我将在SQL

查询为

flight.dud_ord_wide_order_d1表的

dt

分区字段添加明确的日期范围限制。flight.dwd_ord_wide_order_di

表的

dt

字段是分区日期,通常与订单的创建日期关。根据您的问题,我们需要查询在“近七天(不包含今天)首次下单的用户”在“首单后的1天内”的复购情况,根

据hive

引擎特性,

优化SQL

写法选择所需表名集查询表元数据

生成SQL

增加默认查询条件开始提出问题SQL类问题获取用户部门获取业务黑话业努术语库结束运行SQL输出最终SQL是是否可执行补充问题引导用户补充

问题信息是否要明确问

度引导用户重新捉问获取业务知识库业务知识库调用SQL

检查工具根据错误信息,

修正SQLSQL

优化Agent,QE

还有哪些问题?SQL

是明确且具体的,而语

言到SQL

的映射是含义模

糊的。Agent

与用户交互能力薄弱。不像个“人”。不够贴近用户,要到不常用

的平台去使用。生成Agent

同时承担两种不同的认知任务(规则确认&

SQL

生成)再次拆分+公司IM

工具作为入口用户开始

提出问题补充/确认问题

获得结果飞书机器人(ChatBI)数据智能体根据选择的业务域,路由彩特定Agen

上SQL优化Agent[输出最终SQL向超细化Age根据hive引攀特性,值化SQL写法明确关信息(如分组过滤旺解用户同题增加默认查询条件SQL

成Agent,进行一次获取用户部门选择所需表名集

查询表元数据,

1业务知0-表元数据#角

色你是一位专业的SQL

问题分析专家。#

责你的主要职责是帮助用户将模糊的数据查询需求转化为明确的问题描述。1.《常用术语表》;用户问题中经常包含一些业务术语,这个表中会记录一些用户常用术调S(bizWords)来源表中文名:来源表的业务语义,定义来源表一般用在哪些业务场量中。-2.2《业务知识库》数据如下:*"jsonS(bizKnowledgeNoDb)3.

今天是$(curDate)。4."HT”

代表上半年,"H2"

代表下半年,"Q1"~"Q4"

分别代表第一到第四季度,在写s#需要明确的信息查询时间范围。默认近七天,不包含今天。需要分组的字段。默认仅使用dt

字段,如果需要额外分组条件,需要用户自行添加。如

需要排序的字段。默认不排序,并解释是因为排序会影响性能所以才会默认不排序。需要宣询的字段(只关注名词,不需要关注抽象名词)是否存在于《常用术语表》,如果需要宣询的字段(只关注名词,不需要关注抽象名词)是否存在于《业务知识库》的"指一统计逻辑,如果用户的问题中含有统计数量的相关逻辑,并且没有明确具体计数字段的-select

后需要展示的字段。默认展示的字段中包含dt字段。☑

已成功识别您的问题:正在继望生成,请稍等。好的,为了能塘准德理解您的露,适允许我间几个间题:第一个问题值询字助;碧提剧“总职分”,根据已有知说,我理解您想查询的是”油日积始”

(序融中文客:该日税分;来薄表中文者:航赃代理商权量职份日熙户(高)1。请阳我的理

解是哲正墙?第二个问题周闯范围:您提刑”昨旧”。胰将为您查湖啤日的影施第三个间题4份缩字聊1

微理解您高要按照”代理角埔书”(序段中文书:代理商端书,来源共中文者:纳班代理身益积分日娜户(滴1》进行分箱,井认按解进行分组,请问是否还澳要属地纷组条件?二名,就认律不安进行排序,排序台影响性路,第五个间题(dact展示字辙在您的间赔中,弦理解您需要底以下字段优理要域名(幸屋申文图:代理商域泡;来源表中宜泡:航班代理商板盐积分E

户该日税分件涂中文名:该E积分;来匠去中文名:批密此理血权益分日删1801

+在以必用示出享秘请同是否还衡要耳他屠原幸超?动上信票(血果不加以该职,黄所埋的速国非血源,燥有污网一认

鄂,有郎监请想出再串部)。Agent

流程图+细化Agent

Prompt+细

Agent效果图规则映射-引入问题细化Agent细化

Agent生成

Agent生成Agent排序的条件)、歧文点。向用户确认问题磁出明确后问题及

关键信息根据错误信息,

修正SQL调用SQL检查工具获取业务知识库SQL结果白查获取业务黑话业务术语库是否可执行业务知识库执行sQL生成SQL现象SELECTdomain,SUM(increase_points)AS

total_pointsFROM

table_a

GROUPBY

domainORDER

BY

total_points

DESCLIMIT

1OFFSET

1;SELECT

domain,increase_points,dtFROM

table_aORDER

BY

increase_points

DESCLIMIT

1OFFSET

1;本质用户问题本身的歧义性用户问题:查询昨日积分第二名的代理商早期结论:Al

天然的不稳定性吧神奇的现象用户开始

提出问题

补充/确认问题获得数据结果

桔粜飞书机器人(九

章AI)数据智能体扶行SQL,返回数据表格由⑥③针对歧文,列出多种改写后问题性,优化SQL

写法问缺维化Agnt是否可执行增加默认查询条件输出用确后同题及关键信息SQL生成Agent,进行一次

SQL结果自查选择所需表名集

查询表元数据实取业务知率业务术语库

业务如识库

表元数据##问题歧义分析与无歧义间法提供#

#

色你是一个经验丰富的数据分析师,会收到来自用户的问题,关于数据分析。你需要先判断用户

行明确。##业务域名词集合以下是业务域的专有名词,有利于你更准确的判断用户问题是否存在歧义。${bizWordList}#

#

务术语集合以下是业务术语以及对应术语的解释,有利于你更准确的判断用户问题是否存在歧义。

$(bizLingo}#

#

务在日常提问中,问题常常会因为表述不清晰而产生歧义,这可能导致回答者误解问题意图。常

等。你的任务是识别问题中的歧义点,提供无歧义的问法供用户选择。根据输入的问题,分析问题中可能存在的歧义,找出歧义点,并提供几个无歧义的问法供参考

需要明确的歧义类型如下:1.**条件适用对象模糊**:给定的条件不清楚是适用于分子、分母还是整个统计范围。2

.

"排序逻辑模糊**:如问题中涉及顺序排列时(例如前十名,第三名等需要排序的名词),但

不需要明确的歧义类型如下:1.

除了指明需要明确的歧义(需要明确的歧义只有“条件适用对象模糊“以及“排序逻辑模糊)#

#

换用户某些话术可能想表达的含义是更深层的意思,你需要理解某些话术并进行适当的转换。变化类概念;如果用户问题中含有某指标”上升”、"下降“或者”变化趋势“这种展示变化的类例如:用户提问:“昨天保险单票下降/上升主要是哪个搭售展位影响的。“这句话用户实际想

为:"分搭售展位计算昨天保险单票及周同比"。原始问题:

查询昨天积分第二名的代理商这句话可能有两种理解方式,请选择你真正想问的是哪一种:第一种(期望:积分总和排第二):查询昨天获得积分总量排名第二的代理商。第二种(期望:单笔积分排第二):查询昨天单笔获得积分数排名第二的代理商。请回复序号“1”或“2”来选择。改写

Agent

流程图+改写AgentPrompt+改写

Agent效果图QE

增加改写

Agent查询昨天积分第二名的代理商明关爱信息(如分组过滤播序的条件)、歧义点,向用户确认问题根感错误信息,

修正SQL调用SQL检查工具获取业务知识库获取用户部门联取业务黑话理解用户间题输出最终SQL获取知识库生成SQL手段引入

RAGPrompt赞

踩哮生成结果Agent正确结果目的:提高稳定性与学习新知识问题提问搜索Qdify

历史问答对不断成长与学习的

Agent指标名称字段中文名字段定义来源表来源表中文名表名表id类型更新时间创建时间更新人指标名称三字段中文名三字段定义来源表

三来源表中文名

三dt分区日期,下单日期flight.dom_chase_price_vote_order_id国内产品力

麦flight_type_re航程类型丁一合单、中转合单、往返flight.dom_chase_price_vote_order_id国内产品

表dep_city出发城市flight.dom_chase_price_vote_order_id国内产品arr_city到达城市flight.dom_chase_price_vote_order_id国内产品

斐carrier航司flight.dom_chase_price_vote_order_id国内产品

表flight_num航班flight.dom_chase_price_vote_order_id国内产占

表cabin舱位flight.dom_chase_price_vote_order_id国内产品長"businessdesc":"","updateuser";null,"principals":"xx","maintainer":"xx","partitionFlag":0,"indexUrl":nll,"createtime":1645534184000,

"updatetime":1754060532000,

"dataexample":"1","enumstatus":1,"enums":["id":196261,"fieldid":2594074,"enumvalue":"0","enumdesc":"","createtime";1647656672000,"updatetime":1647656672000"id":196262,"fieldid":2594074,"enumvalue";"1","enumdese":"","createtime":1647656672000,"updatetime":1647656672000表结构信息示知识库设计"id":2594074,"name":"is_flight","tableid":164152,"type":"tinyint","fielddesc":"是否是xx",业务知识库示例初版知识库业务知识库表结构信息三知识库设计V2.0:无用信息过多,模型负担大用户表述有黑话(行业术语)表的默认条件缺少瘦身补充术语库知识库设计补充默认条件

知识库设计知识库设计V2.0常见术语ota价格深度app端小程序端术语解释指代理商指的是政策价金额和旗舰店同舱位价格的差

指ios和adr指wechat{"flight.ads_user_gp_user_day_di":[

{"name":"v_date","type":"string","fielddesc":“统计日期”,"businessdesc":"","dataexample":"2025-05-31",

"enums":[{"enumvalue":"2023-12-02","enumdesc":""{"enumvalue":"2023-12-03","enumdesc":""},S页

D页

B页

0页

P页list页面detail页面booking页面order页面pay页面字段描述术

例—表结构信息示例来源表

默认补充限制ppdata.dw_pp_share_member_infolevel_valid<=to_date(dt)andlevel_expire>=to_date(dt)card_code

in('User501;'User511')flight.dwd_vip_user_card_info_1dand

user_card_status=1--使用中业务描述数据示例枚举示例表结构信息瘦身后的表结构信息默认补充条件示例字段名字段类型知识库设计V3.0:表可关联字段多存在常用且复杂的SQL多表关联知识库模板SQL知识库设计QE

知识库设计知识库设计V3.0:SQL

模板+多表关联q_ticketL

num/c_ticket_num

ticket_num_qeselectadt,sum(passenger_count*fight_size)q_ticketL_nume5fl

t.dad_ord_wide

ordar_daselectfromflighnt.ads_user_gp_user_day_wheredt=2025-04-20andcompany='qunar'a.dt=gp.dtanda.qunar_username=gokeya.dt

a-2025-04-20°anddom_inter=0and

pay_ok=1andis_fenaxiao=0and

gp

key

is

nulandsource_type2in(adr,fos')roupbyseleetfromfight.dad_ord_ctrip_wide_order_dialeft

joinfightdnd_ord_ctrio_new_user_diba.dt

a

bdtandlowerla.uid)=lower(b,uid)left

joinselectfromflighnt.ads_user_gp_usar_day_wheredt=2025-04-20'and

company='ctripa.dt

=gp.dtand

auid=gp.keywherea.dt

a-2025-04-20°and

a

dom_inter=0and

a.pay_ok=1and

aorder_source

not

in('商旗;分销;"BU')

andgpkeyis

nulanda.source_typ2intadr,"ios'lonighfgh.dim.gunaruS当涉及到用户标签的支付问题

时,qlibra.tts_direct_dispatch_v2

通常会与flight.dwd_ord_wide_order_d

i_simple

关联,关联键是订单号

和dt,

目的是用flight.flight.dwd_ord_wide_order_di_simple

的的incometag

用户标签信息分用户标签下的支付前分用户标签下

的校验总次数、分用户标签下的支付前变价总次数、分用户标签下的支付前校验失败总次数SQL

模板示例多表关联示例意图与实体识别

知识召回改写后问题

改写后问题动态样本推理关键词匹配问题细化Agent相似度匹配明确意图

实体识别

SQL

召回样本支持的SQL

:Hive、SparkSQL、StarRocks问题改写业务黑话、名词知识动态样本推理

用户问题改

写Agent意图反问改写问题整体架构一览行语义

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论