鯨品堂|淺談GPT在數據庫重構(gòu)項目中的創新應用

2023-09-11 455
引言:它來了

當我們對《流浪地球2》中人工智能(néng)MOSS產生無盡的科幻(huàn)聯想之際,GPT已經通過大規(guī)模數據預訓練,擁有了理解、生成文本的能力,並(bìng)在(zài)多(duō)個行業引發了巨大衝擊,從客戶服務到市場營銷,從醫療健康到教育,都帶(dài)來了顛覆性的變革,AI元年悄然而至。

在軟件研發領域,它能夠幫(bāng)助我們提高開(kāi)發效(xiào)率、改善代碼質量、代碼自動生成嗎?本文依托於一個老(lǎo)項目數據庫重構的背景,和大家一起探討下GPT在研發重構過程中(zhōng)的應用實踐。

重構:困難重重
圖片關鍵詞
已服役十(shí)餘年的項(xiàng)目,應客戶要求去除商業數據庫中間件,使用postgreSQL替換Oracle,經過十餘年的業務加載和迭代,啟動重構存在很大的考驗與風險


數據庫方麵:數據庫(kù)中存在大量的存(cún)儲過程(chéng)、函數、動態(tài)SQL需要進行語法差異轉換,並且調用鏈(liàn)情況較為複雜,在存過(guò)、函數、動態SQL之間存在著互相調用的情況(kuàng),耦合度比較高。



代碼方(fāng)麵:祖傳架構(gòu)方麵,老式集(jí)群模式的項目下代碼工程多,工程中的(de)技(jì)術框(kuàng)架經過(guò)很(hěn)多輪的迭代,包含JDBC、MyBatis、FreeMarker、EJB、工廠模式等。業務實(shí)現方(fāng)麵,有大量的存過、函(hán)數調用(yòng),並且SQL的(de)組裝(zhuāng)無處不在,有(yǒu)字符串拚接、StringBuffer、StringBuilder、mapper.xml、自定義XML等方式。


綜合來看,這是一(yī)項具有挑戰性的任務,技術上沒有瓶頸,但實施上困難重重:

代(dài)碼走查需仔細,否則範圍難控製;


對於(yú)人員經驗要求高,需要熟悉框架,能夠識別、發現、解(jiě)決問題;


大量的SQL和代(dài)碼改造,具備高度經驗化、高重複化的特征;


項目多人員參與,經驗參差不齊,如何保障重構質量。

GPT:研發團隊小助手

為了提升效率,引入了chatGPT作為研發小助(zhù)手,並按使用場景給它分了(le)三個角色,看看它具體可以幫(bāng)我們做什麽:

圖片關鍵詞(cí)

下麵讓(ràng)我(wǒ)們通(tōng)過重構中java代碼處理的一個典型場景示例,帶大家一起感受一下它(tā)的(de)魅力:

第一步:準備好需要處理的java代碼段,和指(zhǐ)令。

圖片關鍵詞
圖片關鍵詞

第二步:問答交互式協助,就如同使用釘(dìng)釘、微信聊天一樣,輸入上麵的代碼段+指令,讓它幫我們處理。

圖片關鍵詞


最後:AI的響應結果符合預期,並且給出了詳細的匯總分析。由此可見,隻(zhī)要指令夠準確,它就(jiù)可(kě)以快速完成代碼段的分析、改(gǎi)造和總結,效率很高,整體耗時不會超過(guò)10秒鍾

盤它:工欲善(shàn)其事必先(xiān)利其器

使用過程中發現chatGPT在高度經驗(yàn)化、重複(fù)化的任務(wù)處理中表現不俗,研發一(yī)個以它為底座的重構工具勢在必行。細心的你,會發現上(shàng)麵的截圖並不是來自需要科學上網的chatGPT,而是源自我們做的接入GPT API的重(chóng)構小工具。

圖片關鍵詞


自動走查,解決走(zǒu)查困難問題

用內置掃描器來替(tì)代人(rén)工走查(chá),當前工具預(yù)置掃描器已支持(chí)java代碼、DDL、xml掃描,精確的按任務文件維度,處理一個(gè)超大文件,在保證上下文完整的情形下,拆解成符合AI token要求的較小任務(wù)單元(代碼段)。

對掃描拆解的代碼段,按照預置場景下的命中策略,判斷是否需(xū)要送AI處理,打標(biāo)識生成真正的待辦任務。

這樣不再依賴於人工走查和人員經驗(yàn),既節約了時間,又減少了疏漏(lòu),同時一定程度上提升任務轉化效率及準確(què)率。


可視化項目管(guǎn)理

傳統的數據庫重構項目研發(fā)管理(lǐ),代碼走查完(wán)成後(hòu),由研發經理分配到人,現在不需要了。工具提供(gòng)項(xiàng)目維度的(de)管理,將AI交互使用場景分類,進行場景化(huà)管理,場景掃描生成任務後,自動均勻(yún)分配給項目研發人(rén)員。

例如,Oracle2PostgreSQL的重構項目,包含的(de)兩種場景(jǐng):

DDL轉換場景:將Oracle數據庫中的表、存儲過程、函數、視圖等DDL導(dǎo)出到文(wén)件中,文本掃描器(qì)掃描生成DDL轉換任務,分配給研發(fā)人(rén)員進行審(shěn)核後(hòu),就(jiù)可以直接交給AI處理;



代碼工程轉換場景:上傳或git拉取代碼工程並托(tuō)管,javaparser、文本掃描(miáo)器(qì)會對代碼工程(chéng)做自動走(zǒu)查掃描,將需(xū)要(yào)處理的java類、mapper.xml文件等,作為任務,分配給研發人員,待審核後(hòu),直接交由AI處(chù)理。


提供任務可視化及閉環(huán)管理,項目(mù)管理者在監控界麵上對場景任務的分配情況一目了然(rán)。


一鍵AI處理

數據庫替換重構(gòu)項目中,需要研發經理做好技術背調,並輸(shū)出任務清單,然後對研發團隊進行賦能和分配任務,接下來研發人(rén)員按包路徑維度(dù),結合背調(diào)知識庫,逐個修改。這樣做的缺點是容易(yì)代入個人編(biān)碼(mǎ)習慣,無(wú)法標準化,可能會帶來不必要的BUG,對業務產生影響。

工具自動化後,研發人員隻需要關注分配的任務,按照任務清單對代碼(mǎ)段(duàn)審核,就可以一鍵送AI處理,AI會響應輸出結果代碼(mǎ)段或SQL,然後針對預處理後的AI返回結果,進行人(rén)工校準,就可以一鍵複(fù)寫生成java類和SQL。

人機交互模式,將高度經驗化、重複化的部分研發工作,交由AI處理,研發(fā)人員(yuán)做好審(shěn)核(hé)和校驗,充分利用了AI編(biān)碼能力,節約了工作量,同時提升了準確率和代碼質量。

幹(gàn)貨:一點心得


模型選擇(zé):text-davinci-003模型 or gpt-3.5-turbo模型

01
模型(xíng)和使用場景分析

text-davinci-003是基於GPT-3的模型,適用於廣泛的自然語言處理任務,包括對話生成、問題回(huí)答、文本摘(zhāi)要和翻譯等。它功能強大但相對較(jiào)慢,適合複雜和深(shēn)入的文本處理,不要求實時性。

gpt-3.5-turbo是基於GPT-3.5的模型,具有高性能、低延遲的特點。它適用於快速生成文本的場景,如在線聊天機器人、客戶支持自動化和內容創作(zuò)輔助。在(zài)對話和短文本方(fāng)麵表現出色,響應速度快。

02
token和頻次限製

兩種模型對於每分鍾調(diào)用頻次、交互token均有限製。開始我們傾向於選擇token大和調用頻次高的達芬奇模型,但(dàn)試(shì)驗後發現,在轉換速率和(hé)準確率(lǜ)上gpt-3.5-turbo要遠優(yōu)於達芬奇,可(kě)是基於chatgpt更(gèng)高的時效和性能要求,OpenAI對它做了更多的限流控製。

圖片關鍵詞

綜上,gpt-3.5-turbo模型更加適合用於高效率、高質量的生成型任務,在算力性能和實時性方麵優勢很大,選擇接入(rù)它沒錯(cuò)。


turbo模型速率限製解決方案

turbo的限流控製很讓人(rén)頭疼,於是工具研發中引入了令牌桶算法,支持接入多個apikey,完美解決了限流問題。

令牌桶算法(Token Bucket Algorithm)是一種流量控製算法,用於控製資(zī)源(yuán)訪問速率。它是一種(zhǒng)經典的算法,常用於(yú)網絡(luò)傳輸、API限流、請求調度的(de)場景。
圖片關鍵詞

token限製解決方案
提(tí)煉(liàn)出java、xml、DDL文件不同的特征,通過預置(zhì)的Java類掃(sǎo)描器和文本類掃描器,保障上下文(wén)完整性(xìng),以及符合交互(hù)的token限製。


場景命(mìng)中策略
openai是收費的,內(nèi)測中免費賬戶流量很快就耗費殆盡。如(rú)何篩選命中有效內容,把實際需要處理的內容交給它很關鍵(jiàn)。

基於這些考慮,抽象出(chū)了場景的概念,在場景下預置不同的正則表達(dá)式策略,並(bìng)提取符合策略規則的內容/代碼段,提交給AI處理。


AI交互(hù)指令校準:
讓我們再接著思考:在特定使用場景(jǐng)下如(rú)何設置合理角色和prompt?又怎麽固定(dìng)返回我們想要的結果?

模型選擇、加載:需要分析場景任務選擇合適的模(mó)型,將模型加載到計(jì)算環境中,以便(biàn)進行後續的校準和(hé)交互(hù);


樣本數據準備:為(wéi)了進行指令(lìng)的校準,我們將需要問詢的數據整理(lǐ)成樣本數據;


指令示例:樣(yàng)本數(shù)據和特定的場景指令集,組(zǔ)合形成待校準指令集;


篩選指令:根據不同指令的響應,選(xuǎn)擇符合預期的指令作為場景的prompt。



人機交互的設計(jì)

初版設計思路為:掃描->AI處理->回寫,驗證後發現存在著準確性、及時率的一些問題,於是我們考慮使用半自動-人機交互模式來解決這(zhè)些問題,流程優化為:掃描->任務審核->AI處理->任務校準->回寫(xiě),並且提供差異比(bǐ)對和異常(cháng)重送的(de)功能,以提升交互準確率。


圖片關鍵詞

總結:說點想說(shuō)的

隨著AI的不斷發展和應用,其強大的自然語言預處(chù)理機製和大數據的魅力(lì),在各個領域展現出巨(jù)大的潛力。在代碼解(jiě)釋分析(xī)、代碼生成、知識庫檢索等方麵(miàn)也擁有無(wú)限(xiàn)可能,未來,我們可以期待它作為研發的好幫手,發揮(huī)更重要(yào)的作(zuò)用。


官方微信公眾號

国产亚洲熟妇在线视频雲計算科技股份有限公司 版權所有 2003-2023

蘇ICP備10224443號-6       蘇公網安備 32011402011374號

国产亚洲熟妇在线视频-亚洲熟妇AV乱码在线观看-亚州国产AV一区二区三区伊在-中文字幕无码人妻少妇免费视频-欧美 日韩 人妻 高清 中文-熟妇人妻中文字幕无码老熟妇-丰满熟女人妻一区二区三-亚洲精品字幕