把用戶寵上天的金數(shù)據(jù),用AI Agent攻克企業(yè)培訓(xùn)考試難題
2025-04-08
知識(shí)經(jīng)濟(jì)時(shí)代,無(wú)論是“以考代學(xué)”的企業(yè)培訓(xùn),還是運(yùn)營(yíng)活動(dòng)的互動(dòng)手段,考試的需求始終旺盛。“傳統(tǒng)考試存在很多難點(diǎn),比如出題環(huán)節(jié)復(fù)雜,配置考試繁瑣,閱卷工作耗時(shí)耗力。AI的出現(xiàn),讓我們看到了優(yōu)化考試的可能性。”明略科技旗下金數(shù)據(jù)產(chǎn)品工程師、快出題技術(shù)負(fù)責(zé)人周藝說(shuō)。
2024年3月,金數(shù)據(jù)推出了聚焦考試場(chǎng)景的首款A(yù)I產(chǎn)品——“快出題”。用戶上傳不限內(nèi)容、格式的文件,快出題能夠快速出題,并發(fā)布考試。短短一年,快出題已服務(wù)數(shù)萬(wàn)名用戶,廣受好評(píng)。隨著產(chǎn)品能力的逐步提升,金數(shù)據(jù)提出了“萬(wàn)物皆可考”的理念。這背后是基于市場(chǎng)需求的持續(xù)迭代,用金數(shù)據(jù)自己的話說(shuō),就是“主打一個(gè)寵粉”。
“快出題”如何在技術(shù)與需求間找到了最優(yōu)解,如何通過(guò)AI Agent爆改傳統(tǒng)考試?以下來(lái)自金數(shù)據(jù)“快出題”技術(shù)負(fù)責(zé)人周藝的分享節(jié)選。

“快出題”官網(wǎng)界面
快出題的能力,首先是出題,AI組件能夠快速?gòu)囊延械念}庫(kù)中抽取題目,生成一份試卷,并且支持AI閱卷;其次是提供練習(xí)模式,尤其適用于企業(yè)培訓(xùn)場(chǎng)景,用戶也可以導(dǎo)出試卷,方便在線下組織考試;最后還提供出題API,如果企業(yè)有自己的考試系統(tǒng),可以通過(guò)快出題的API將出好的題目導(dǎo)入到自己的系統(tǒng)里。
在快出題的迭代過(guò)程中,我們經(jīng)歷了“金數(shù)據(jù)考試——AI考試——快出題”三個(gè)階段。其實(shí)快出題最初是為金數(shù)據(jù)表單中有考試場(chǎng)景需求的用戶設(shè)計(jì)的,但金數(shù)據(jù)表單主要用于數(shù)據(jù)收集,在考試場(chǎng)景存在一些先天的不足,比如難以支持大型題庫(kù),也不支持練習(xí)模式。于是,我們當(dāng)時(shí)開發(fā)了一個(gè)無(wú)論在操作體驗(yàn),還是流暢度上都表現(xiàn)出色的考試編輯器。然而,我們發(fā)現(xiàn)幾乎沒有人使用。為什么呢?因?yàn)閷?dǎo)入題庫(kù)這件事太難了。
我們最早發(fā)布的內(nèi)測(cè)版本中,導(dǎo)入題庫(kù)需要用戶按指定的 Excel 模版上傳題庫(kù),操作繁瑣且出錯(cuò)概率極高,基本上用戶都卡在了這一步。怎么辦?當(dāng)然是寵粉!用戶居然導(dǎo)入不進(jìn)來(lái),我們就幫他解決這個(gè)問題,于是我們推出了第一個(gè)AI功能—— 通過(guò)AI導(dǎo)入題庫(kù) 。用戶上傳任意格式的題庫(kù)文件,我們都能用AI解析其中的題目,并格式化成題庫(kù)供用戶使用。
但隨后我們又發(fā)現(xiàn)了一個(gè)問題:許多用戶根本沒有題庫(kù),而是直接將他們的資料文檔當(dāng)作題庫(kù)上傳。為了滿足用戶需求,我們開發(fā)了 基于資料庫(kù)生成題庫(kù) 的功能,只要用戶有文檔資料,我們就能幫助他們生成題目。
后來(lái)一些用戶告訴我們,想用我們的產(chǎn)品做企業(yè)培訓(xùn),但并沒有成型的資料。怎么辦?我們依然是主打一個(gè)寵粉!于是,我們又推出了一個(gè)功能—— 基于一句話出題 。用戶只需輸入需求,我們就能生成一套考試題目,到了這一步,基本上用戶只要進(jìn)來(lái)就能用起來(lái)。但有些用戶開始反饋說(shuō),哎,你們生成的結(jié)果好像不太對(duì)。
問題出在哪里呢?我們都知道大模型有一個(gè)“幻覺”問題。當(dāng)資料不足時(shí),大模型就會(huì)編造一些虛假事實(shí)。當(dāng)時(shí)有一位用戶反饋,在我們的一句話出題功能中出了關(guān)于網(wǎng)絡(luò)熱梗“成都迪士尼”的題目。出題時(shí),AI誤以為成都真的要建迪士尼,于是生成了許多關(guān)于成都迪士尼門票、項(xiàng)目相關(guān)的題目,這顯然不是用戶想要的。
后來(lái)我們通過(guò)聯(lián)網(wǎng)搜索的方式,確保了生成的題目準(zhǔn)確無(wú)誤。至此,我們的產(chǎn)品基本完成,去年3月25日上線時(shí),我們將產(chǎn)品正式命名為金數(shù)據(jù)AI考試,并基于AI出題開發(fā)了一系列功能。

在推廣過(guò)程中,我們發(fā)現(xiàn),用戶在嘗試一句話生成題目時(shí),往往會(huì)想到生成數(shù)學(xué)題或語(yǔ)文題,而提示詞工程在K12學(xué)科方面的出題表現(xiàn)并不理想。后來(lái),我們嘗試了COT,即通過(guò)構(gòu)建一個(gè)復(fù)雜且包含大量示例的提示詞,一步步引導(dǎo)AI完成復(fù)雜任務(wù)。簡(jiǎn)單來(lái)說(shuō),就是教會(huì)AI如何“工作”。與此同時(shí),我們開始研究老師是如何出題的。通過(guò)研究大量文獻(xiàn),形成專門的提示詞,在大模型上進(jìn)行反復(fù)嘗試,最終找到了最優(yōu)解。不僅適用于K12出題,還可以用于各種職業(yè)資格考試,如司法考試、會(huì)計(jì)考試、建造師/建筑師考試等,從而真正實(shí)現(xiàn)了“萬(wàn)物皆可考”。

接下來(lái),我們面臨了一個(gè)新的挑戰(zhàn):一些大型企業(yè)用戶已經(jīng)擁有自己的考試系統(tǒng),但非常認(rèn)可金數(shù)據(jù)的出題能力,問我們能否通過(guò)API將金數(shù)據(jù)的出題能力集成到他們自己的系統(tǒng)里。于是,我們開始著手構(gòu)建對(duì)外開放的API。
當(dāng)時(shí),為了快速開發(fā),我們所有的提示詞工程都是在我們的Ruby項(xiàng)目里完成的。選擇Ruby的原因主要有兩個(gè):一方面,金數(shù)據(jù)本身就主張使用Ruby;另一方面,金數(shù)據(jù)在Ruby社區(qū)中處于頂尖水平,我們對(duì)駕馭這個(gè)技術(shù)棧非常有信心。
然而,隨著技術(shù)功能的不斷迭代,我們逐漸發(fā)現(xiàn)Ruby生態(tài)的不足。由于缺乏豐富的生態(tài)支持,在Ruby上很難進(jìn)行快速調(diào)試和問題追蹤,代碼編寫也缺乏一定的規(guī)范性。如果要開發(fā)一個(gè)對(duì)外的API,并滿足用戶的私有化定制需求,難度極大。因此,我們痛定思痛,決定將所有的AI應(yīng)用模型從Ruby中遷移出來(lái),切換到LangChain,擁抱Lang圈生態(tài),簡(jiǎn)化后續(xù)的維護(hù)和開發(fā)工作。
我們也對(duì)比了其他解決方案,例如Defy、LlamIndex、Mastra等,但它們都存在各自的問題。最終,我們選擇了LangChain作為技術(shù)方案。完成遷移后,我們發(fā)現(xiàn)開發(fā)API變得非常快速且易于實(shí)現(xiàn)。
在開發(fā)對(duì)外API的過(guò)程中,我們還進(jìn)一步認(rèn)識(shí)到,許多用戶已經(jīng)有了自己的考試系統(tǒng),更需要我們幫助他們完成出題環(huán)節(jié)。于是,我們從市場(chǎng)需求出發(fā),對(duì)產(chǎn)品方向進(jìn)行了調(diào)整,從“金數(shù)據(jù)AI考試”進(jìn)化為“快出題”,適當(dāng)降低了考試功能的比重,專注于提升出題能力。
技術(shù)側(cè)的創(chuàng)新嘗試為我們帶來(lái)了顯著的改進(jìn):
首先,我們引入了LangGraph,它是LangChain生態(tài)中專門用于Agent編排和Workflow組織的工具。我們可以借此構(gòu)建更為復(fù)雜的AI應(yīng)用。
以一句話出題功能為例,此前它是通過(guò)單一的Prompt加上一些輸入、輸出檢查實(shí)現(xiàn)的單一Agent。改進(jìn)后,我們將出題過(guò)程拆分成多個(gè)部分,每個(gè)部分由一個(gè) Agent 單獨(dú)完成,所以出題就變成了多個(gè) Agents 的協(xié)同工作。Analyzer 先分析用戶意圖,Retriever 檢索相關(guān)資料,在取得意圖和資料后交由 Generator 出題,出題完成后 Validator 會(huì)檢查題目質(zhì)量,如果不合格會(huì)要求 Generator 改進(jìn),最后將結(jié)果呈現(xiàn)給用戶。經(jīng)過(guò)這一系列改進(jìn),一句話出題的效果顯著增強(qiáng),包括題目的深度、難度、受眾語(yǔ)氣,甚至還能增加趣味性。比如,模擬林黛玉的語(yǔ)言風(fēng)格出一套春節(jié)拜年題,在過(guò)去是無(wú)法實(shí)現(xiàn)的,現(xiàn)在的題目則變得更加靈活、有新意,進(jìn)一步拓展了使用場(chǎng)景。
在知識(shí)庫(kù)出題方面,我們也進(jìn)行了優(yōu)化,將之前的線性生成改為并行處理。我們?cè)黾恿艘粋€(gè)Planner,它可以將一個(gè)任務(wù)拆分成多個(gè)小任務(wù),每個(gè)小任務(wù)分配一個(gè) Generator 執(zhí)行,生成完成后,由一個(gè)專門的 Picker Agent 從結(jié)果中挑選出優(yōu)質(zhì)內(nèi)容,最終形成一個(gè)題庫(kù)呈現(xiàn)給用戶。這一提升首先體現(xiàn)在速度上,生成100道題,僅需30秒;其次是穩(wěn)定性,不會(huì)因?yàn)檩敵鲞^(guò)長(zhǎng),導(dǎo)致大模型降智。無(wú)論出多少題,質(zhì)量都能得到保證。
其次,我們引入了一個(gè)大模型監(jiān)測(cè)平臺(tái)LangFuse,它帶來(lái)了兩個(gè)顯著優(yōu)勢(shì):一方面,我們可以對(duì)所有任務(wù)進(jìn)行Trace,便于跟蹤和調(diào)試,從而提升研發(fā)效率;另一方面,金數(shù)據(jù)旗下還有一款名為“浩客”的產(chǎn)品。在快出題生成一套題目后,浩客會(huì)彈出一個(gè)小窗口,詢問用戶對(duì)結(jié)果是否滿意。這正是大模型能力測(cè)評(píng)中非常重要的一部分——用戶反饋。我們可以通過(guò)浩克收集到的數(shù)據(jù),將生成的任務(wù)和用戶對(duì)任務(wù)的評(píng)價(jià)關(guān)聯(lián)起來(lái),我們便能更好地了解改進(jìn)效果如何,在哪些方面還需要提升。
在AI應(yīng)用領(lǐng)域,選擇往往比努力更重要。如果我們一開始繼續(xù)在Ruby上進(jìn)行迭代,可能很難實(shí)現(xiàn)后面這些能力的提升。

回顧整個(gè)迭代的過(guò)程,我們覺得做對(duì)了三件事:堅(jiān)持交互體驗(yàn)。確保用戶在使用金數(shù)據(jù)時(shí),不會(huì)遇到超過(guò)五秒的loading,所有地方都是實(shí)時(shí)返回結(jié)果,迅速給用戶反饋,這樣用戶才更有動(dòng)力堅(jiān)持操作,直至看到最終生成的題目;堅(jiān)持產(chǎn)品驅(qū)動(dòng)。不斷深挖產(chǎn)品使用中的痛點(diǎn)和不足,快速迭代和上線,持續(xù)為用戶創(chuàng)造價(jià)值;擁抱技術(shù)革新。我們不會(huì)因?yàn)樽约涸赗uby社區(qū)中的地位而固守原有的技術(shù)。
與此同時(shí),我們也收獲了三個(gè)寶貴的經(jīng)驗(yàn):避免過(guò)度優(yōu)化。在AI調(diào)優(yōu)的過(guò)程中,我們?cè)ㄙM(fèi)大量精力進(jìn)行調(diào)整,但隨著大模型的升級(jí),之前的優(yōu)化往往變得不再適用。所以,當(dāng)我們?cè)诖竽P突駻I應(yīng)用中遇到棘手問題時(shí),也許等一等是一個(gè)更好的選擇;多嘗試、多探索。選對(duì)方案往往比努力更重要;辨識(shí)用戶的真實(shí)需求。我們最初開發(fā)考試功能,是因?yàn)橛脩舯硎舅麄冃枰}庫(kù)和組織考試的能力。隨著產(chǎn)品的迭代,最后我們發(fā)現(xiàn),用戶最大的需求其實(shí)是出題。
展望未來(lái),我們今年會(huì)更多的深耕具體的考試場(chǎng)景,提供更有針對(duì)性的優(yōu)化,以及更專業(yè)的服務(wù)。在對(duì)外開放的API上加大投入,提供更加便捷的接入方式,讓更多用戶接入我們的AI Agent能力。
最近,我們關(guān)注到Anthropic提出的MCP(一個(gè)框架協(xié)議),它可以將產(chǎn)品封裝成一個(gè)工具,供其他AI產(chǎn)品調(diào)用。這可能是未來(lái)AI產(chǎn)品發(fā)展的主流趨勢(shì),我們也在積極探索提供快出題的MCP server,以便更好地融入未來(lái)的AI生態(tài)。
信息填寫