科技日新月異的今天,以大模型、Agent等為代表的人工智能技術(shù)正引領(lǐng)各行各業(yè)的深刻變革。軟件開發(fā)領(lǐng)域,一場(chǎng)由AI驅(qū)動(dòng)的產(chǎn)業(yè)智能化升級(jí)快速演變,進(jìn)入智能化軟件開發(fā)2.0時(shí)代。
近日,我們采訪了硅心科技(以下簡(jiǎn)稱:aiXcoder)總裁劉德欣,主要圍繞企業(yè)如何落地領(lǐng)域化大模型,如何更好地?fù)肀е悄芑浖_發(fā)2.0時(shí)代等話題進(jìn)行深入探討。以下內(nèi)容根據(jù)采訪實(shí)錄整理。
請(qǐng)劉總簡(jiǎn)單介紹下智能化軟件開發(fā)1.0時(shí)代及其發(fā)展現(xiàn)狀?
智能化軟件開發(fā)1.0時(shí)代可以說(shuō)是通過(guò)引入大模型技術(shù),集中實(shí)現(xiàn)了軟件開發(fā)的一些初級(jí)自動(dòng)化場(chǎng)景,包括代碼生成、代碼補(bǔ)全、單元測(cè)試生成和缺陷檢測(cè)等。系統(tǒng)也支持簡(jiǎn)單的需求捕獲和拆分等任務(wù)。但是,這些功能通常是以獨(dú)立的方式執(zhí)行,不能深入理解和應(yīng)用企業(yè)特定的業(yè)務(wù)邏輯。
目前國(guó)內(nèi)外的玩家主要有GitHub的Copilot、Amazon的CodeWhisperer、百度的comate 、阿里的通義靈碼、甚至包括我們aiXcoder的上一代產(chǎn)品等。各家產(chǎn)品在功能和能力上差異并不大,缺乏明顯的差異化。盡管產(chǎn)品在宣傳中,強(qiáng)調(diào)了具有更強(qiáng)的上下文理解能力和更大的參數(shù)量,甚至與GPT-3.5等模型進(jìn)行比較占據(jù)優(yōu)勢(shì),但實(shí)際上并沒(méi)有真正解決大模型與企業(yè)領(lǐng)域知識(shí)融合這一核心問(wèn)題,使得它們無(wú)法滿足企業(yè)基于自身的業(yè)務(wù)落地大模型的需求,簡(jiǎn)單來(lái)講,覺(jué)得大模型學(xué)不會(huì)自己企業(yè)的領(lǐng)域知識(shí),幻覺(jué)和生成結(jié)果不確定性嚴(yán)重;而這種孤立性和對(duì)業(yè)務(wù)邏輯的理解不足,也導(dǎo)致了其產(chǎn)品對(duì)軟件開發(fā)復(fù)雜需求的處理浮于表面,實(shí)際上代碼輸出的準(zhǔn)確性和實(shí)用性往往會(huì)大打折扣,限制了其在實(shí)際企業(yè)業(yè)務(wù)環(huán)境中的應(yīng)用效果和用戶的信任度。
您認(rèn)為智能化軟件開發(fā)1.0時(shí)代具體存在的問(wèn)題有哪些?
智能化軟件開發(fā)1.0存在的問(wèn)題主要問(wèn)題是不進(jìn)行有效個(gè)性化訓(xùn)練而直接落地大模型,這會(huì)直接產(chǎn)生兩大缺陷:應(yīng)用模式缺陷和技術(shù)缺陷。
首先,從應(yīng)用模式來(lái)看,主要缺陷表現(xiàn)在兩個(gè)方面。
第一,在訓(xùn)練層面,缺乏對(duì)業(yè)務(wù)原始需求與設(shè)計(jì)的考量。1.0時(shí)代的產(chǎn)品往往只關(guān)注代碼本身的語(yǔ)法和結(jié)構(gòu),忽略了代碼必須服務(wù)于具體的業(yè)務(wù)需求和邏輯,所以并沒(méi)有將需求分析和設(shè)計(jì)文檔等企業(yè)背景知識(shí)融合進(jìn)模型的訓(xùn)練中,導(dǎo)致生成/補(bǔ)全的代碼往往缺乏業(yè)務(wù)邏輯,從而使產(chǎn)品的準(zhǔn)確性和可用性不足。
第二,在測(cè)試層面,無(wú)法形成需求到測(cè)試的閉環(huán)。測(cè)試自動(dòng)化在1.0時(shí)代通常只基于現(xiàn)有代碼進(jìn)行,忽略了測(cè)試的本質(zhì)是驗(yàn)證需求的完整性和正確性,沒(méi)能深入到需求層面,而是僅依賴于代碼級(jí)的表面生成,沒(méi)有實(shí)現(xiàn)對(duì)原始需求的全面交互和驗(yàn)證。
其次,從技術(shù)缺陷來(lái)看,主要表現(xiàn)在三個(gè)方面。
一是環(huán)境依賴信息的缺失,現(xiàn)在的大模型訓(xùn)練主要是在開源代碼及企業(yè)代碼上的訓(xùn)練,這種脫離企業(yè)背景知識(shí),僅對(duì)代碼訓(xùn)練的方式,依然缺乏足夠的項(xiàng)目上下文支持,這導(dǎo)致生成的代碼雖然在語(yǔ)法上正確,但經(jīng)常與項(xiàng)目的實(shí)際業(yè)務(wù)需求不符。雖然各大模型廠商都在上下文長(zhǎng)度上努力,但并不會(huì)從根源上解決這一技術(shù)缺陷。
二是當(dāng)前的智能化開發(fā)輔助主要依賴于大模型的語(yǔ)言能力,通過(guò)模式匹配和簡(jiǎn)單的Prompt指令生成代碼。然而,這種方法僅停留在表層語(yǔ)言模型的使用上,無(wú)法深入理解復(fù)雜的業(yè)務(wù)邏輯和編程規(guī)范,導(dǎo)致大模型在實(shí)際應(yīng)用中的表現(xiàn)不盡如人意,影響了結(jié)果的有效性和可靠性,尤其是生成內(nèi)容的可靠性仍然存在較大問(wèn)題。
三是微調(diào)方法的局限性,盡管在1.0時(shí)代我們采用了全參微調(diào)(Fine Tuning)、以及LoRa、Adapter、Prompt等PEFT高效參數(shù)微調(diào)(部分參數(shù)微調(diào))方式,甚至嘗試使用RAG和MoE等方法讓大模型學(xué)習(xí)特定領(lǐng)域知識(shí),但這些常規(guī)微調(diào)技術(shù)和方法仍存在局限性。盡管它們?cè)谀承┨囟ㄈ蝿?wù)中表現(xiàn)出一定的效果,但由于沒(méi)有充分訓(xùn)練企業(yè)領(lǐng)域的專有數(shù)據(jù)和背景知識(shí),這些方法在真實(shí)業(yè)務(wù)應(yīng)用中的表現(xiàn)往往難以達(dá)到預(yù)期,無(wú)法完全滿足實(shí)際業(yè)務(wù)的需求。
從客戶角度來(lái)看,我們發(fā)現(xiàn)很多大模型在通用的場(chǎng)景或者主流的測(cè)評(píng)集上表現(xiàn)都不錯(cuò),聲稱也能達(dá)到30%到50%的準(zhǔn)確率。但是一旦拿到企業(yè)中去應(yīng)用,通常發(fā)現(xiàn)準(zhǔn)確率下降到了10%以下。即使用各種方式做微調(diào),效果也不盡如人意。對(duì)于企業(yè)而言,技術(shù)團(tuán)隊(duì)和商務(wù)團(tuán)隊(duì)盡力引入并上線了智能軟件開發(fā)產(chǎn)品,也進(jìn)行了相應(yīng)的微調(diào),但如果最終結(jié)果無(wú)法達(dá)到預(yù)期,可能會(huì)引發(fā)內(nèi)部大量用戶和軟件開發(fā)人員的投訴,帶來(lái)巨大的風(fēng)險(xiǎn)。綜合來(lái)看,真實(shí)企業(yè)軟件開發(fā)場(chǎng)景是非常復(fù)雜的,具有很強(qiáng)的業(yè)務(wù)邏輯、擁有明確的編碼規(guī)范和獨(dú)特的代碼風(fēng)格,在多階段的復(fù)雜開發(fā)流程中更是涉及多角色、多工具、多團(tuán)隊(duì)的共同協(xié)作參與。盡管智能化軟件開發(fā)1.0時(shí)代提供了一定的軟件自動(dòng)化支持,但其并沒(méi)有真正解決企業(yè)領(lǐng)域知識(shí)問(wèn)題,也沒(méi)有充分考慮真實(shí)開發(fā)場(chǎng)景的復(fù)雜需求。所以基于這樣一個(gè)背景,aiXcoder率先提出了軟件開發(fā)2.0時(shí)代的概念,并已成功在多家大型企業(yè)中落地實(shí)施。通過(guò)這一模式,企業(yè)才能真正抓住并充分利用大模型所帶來(lái)的技術(shù)紅利。
aiXcoder如何定義智能化軟件開發(fā)2.0時(shí)代的?
智能化軟件開發(fā)2.0時(shí)代:首先通過(guò)嚴(yán)格的數(shù)據(jù)治理和鏈?zhǔn)焦芾?#xff0c;對(duì)企業(yè)的特定領(lǐng)域知識(shí)進(jìn)行全面的結(jié)構(gòu)化處理,確保從需求定義、設(shè)計(jì)、編碼到最終代碼提交的每個(gè)環(huán)節(jié)都得到精準(zhǔn)記錄和系統(tǒng)關(guān)聯(lián)。在此基礎(chǔ)上,進(jìn)行低成本、高度個(gè)性化的模型訓(xùn)練,構(gòu)建基于領(lǐng)域的軟件工程大模型。通過(guò)多智能體協(xié)同自動(dòng)化、傳統(tǒng)軟件開發(fā)方法和最佳實(shí)踐的有機(jī)結(jié)合,全面保障了開發(fā)流程的高效性與結(jié)果的準(zhǔn)確性,使大模型從單一的代碼生成工具轉(zhuǎn)變?yōu)榕c企業(yè)開發(fā)過(guò)程深度協(xié)同的智能體集合,顯著提升了開發(fā)效率和產(chǎn)品質(zhì)量。
我們所定義的智能化軟件開發(fā)2.0時(shí)代,其核心概念并不復(fù)雜??梢杂靡粋€(gè)公式來(lái)概括:智能化軟件開發(fā)2.0 = 專業(yè)軟工領(lǐng)域大模型 + 多Agent協(xié)同 + 傳統(tǒng)軟件工程方法。
首先,本階段的智能軟件開發(fā)強(qiáng)調(diào)對(duì)軟件研發(fā)流程的高度數(shù)據(jù)治理。整個(gè)開發(fā)全過(guò)程,從需求分析、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)、編碼實(shí)現(xiàn)、測(cè)試,直到最終產(chǎn)品上線,每一個(gè)環(huán)節(jié)都通過(guò)結(jié)構(gòu)化的數(shù)據(jù)治理和全面的數(shù)據(jù)鏈管理進(jìn)行鏈?zhǔn)綌?shù)據(jù)追蹤,確保軟件開發(fā)的原始需求被精確記錄并與系統(tǒng)緊密關(guān)聯(lián)。這種全鏈條的協(xié)同工作方式,不僅使得大模型能夠最大程度地理解企業(yè)特定的業(yè)務(wù)邏輯,還能夠在開發(fā)的每一個(gè)階段中準(zhǔn)確反映這些邏輯。同時(shí),基于經(jīng)過(guò)治理的領(lǐng)域化數(shù)據(jù)集,對(duì)模型進(jìn)行個(gè)性化訓(xùn)練,使大模型能夠深入學(xué)習(xí)并應(yīng)用企業(yè)的領(lǐng)域知識(shí),從而構(gòu)建一個(gè)低成本、高度個(gè)性化的企業(yè)領(lǐng)域化大模型,這將是最關(guān)鍵的一步。此外,在實(shí)現(xiàn)領(lǐng)域個(gè)性化的基礎(chǔ)上,通過(guò)多Agent方式處理軟件開發(fā)流程中的各類任務(wù),并結(jié)合傳統(tǒng)的軟件開發(fā)方法、工具和最佳實(shí)踐,確保了領(lǐng)域大模型輸出的準(zhǔn)確性和可靠性。
這種結(jié)合了專業(yè)軟工領(lǐng)域大模型、多Agent協(xié)同,以及傳統(tǒng)軟件工程方法、工具與最佳實(shí)踐的協(xié)同自動(dòng)化方式,正是我們所定義的智能化軟件開發(fā)2.0時(shí)代。
根據(jù)智能化軟件開發(fā)2.0時(shí)代的定義和特性,劉總,您認(rèn)為企業(yè)在邁入2.0時(shí)代時(shí),應(yīng)該重點(diǎn)關(guān)注哪些關(guān)鍵行動(dòng)或策略?有哪些具體的準(zhǔn)備工作是企業(yè)需要優(yōu)先考慮的?
結(jié)合多年來(lái)我們團(tuán)隊(duì)對(duì)軟件工程領(lǐng)域的深刻理解,以及aiXcoder在企業(yè)領(lǐng)域化大模型落地方面的豐富經(jīng)驗(yàn)。我們總結(jié)了以下4個(gè)核心策略,幫助企業(yè)更好的擁抱智能軟件開2.0時(shí)代。
第一是面向領(lǐng)域的開發(fā)數(shù)據(jù)治理,這一點(diǎn)非常關(guān)鍵。簡(jiǎn)而言之,企業(yè)需要對(duì)最原始的需求文檔進(jìn)行深入治理,將自然語(yǔ)言表達(dá)的“大白話”需求逐步轉(zhuǎn)化為精確的開發(fā)語(yǔ)言描述,從需求分析、設(shè)計(jì),到開發(fā)、測(cè)試及運(yùn)維等環(huán)節(jié)的數(shù)據(jù)、知識(shí)都進(jìn)行整合并進(jìn)行全鏈條數(shù)據(jù)治理,并確保數(shù)據(jù)質(zhì)量、規(guī)模與多樣性,以服務(wù)于領(lǐng)域大模型的構(gòu)建與優(yōu)化。值得一提的是,這種數(shù)據(jù)管理框架和方法能夠高效復(fù)用,日后大模型產(chǎn)生的海量數(shù)據(jù)都是基于該框架治理,從而可持續(xù)用于訓(xùn)練,這有助于提高企業(yè)在應(yīng)對(duì)市場(chǎng)變化時(shí)的靈活性和響應(yīng)速度。
第二是基于領(lǐng)域數(shù)據(jù)的個(gè)性化模型構(gòu)建。通過(guò)利用治理好的領(lǐng)域知識(shí)數(shù)據(jù)集,并充分考慮企業(yè)算力資源、代碼量等因素,對(duì)大模型進(jìn)行靈活的個(gè)性化訓(xùn)練及參數(shù)調(diào)優(yōu),確保大模型能夠精準(zhǔn)捕捉并反映企業(yè)業(yè)務(wù)需求,使其逐步掌握企業(yè)特定的業(yè)務(wù)流程與邏輯、專業(yè)術(shù)語(yǔ)和編碼規(guī)范。進(jìn)一步地,通過(guò)應(yīng)用PEFT、MoE、RAG和AI Agent等技術(shù)和方法,確保個(gè)性化訓(xùn)練能夠根據(jù)企業(yè)具體業(yè)務(wù)需求進(jìn)行靈活調(diào)整和優(yōu)化。這樣的策略不僅增強(qiáng)了模型的業(yè)務(wù)適應(yīng)性,還提升了模型訓(xùn)練效率和輸出的準(zhǔn)確性。
第三點(diǎn)是將大模型的先進(jìn)能力與傳統(tǒng)軟件工程的方法和工具相結(jié)合。許多企業(yè)在引入大模型后,往往傾向于完全依賴大模型,忽視了原本效果優(yōu)異的軟件開發(fā)工具。這種做法實(shí)際上并不合理,因?yàn)榇竽P碗m然具有強(qiáng)大的能力,但其生成結(jié)果并非總是精準(zhǔn)無(wú)誤。為了確保大模型輸出結(jié)果的準(zhǔn)確性與可靠性,企業(yè)應(yīng)繼續(xù)結(jié)合和利用傳統(tǒng)的軟件工程工具與方法,使其與大模型協(xié)同工作,從而保障開發(fā)流程的時(shí)效性和結(jié)果的高質(zhì)量。
最后一點(diǎn)是面向各場(chǎng)景的智能協(xié)同。通過(guò)引入Agent技術(shù),將其與企業(yè)特有的軟件開發(fā)流程和現(xiàn)有的軟件開發(fā)工具相結(jié)合,以提升開發(fā)流程的透明度和效率。同時(shí),確保所有自動(dòng)化過(guò)程的合規(guī)性和可追蹤性,實(shí)現(xiàn)需求分析、設(shè)計(jì)、編碼、測(cè)試和部署等各個(gè)開發(fā)場(chǎng)景的深度協(xié)同。通過(guò)系統(tǒng)化的數(shù)據(jù)共享和流程整合,開發(fā)團(tuán)隊(duì)能夠在各個(gè)階段實(shí)現(xiàn)無(wú)縫銜接,從而更加高效地應(yīng)對(duì)復(fù)雜的項(xiàng)目需求和快速變化的市場(chǎng)環(huán)境。
aiXcoder如何幫助企業(yè)落地智能軟件開發(fā)2.0時(shí)代?
在與很多大型企業(yè)交流的過(guò)程中,我們發(fā)現(xiàn)目前企業(yè)普遍面臨著搞不懂、訓(xùn)不轉(zhuǎn)、學(xué)不會(huì)三大挑戰(zhàn),展開來(lái)講,就是企業(yè)缺乏優(yōu)秀人才,現(xiàn)有的技術(shù)人員搞不懂模型應(yīng)該如何訓(xùn)練。有些企業(yè)技術(shù)積累較好,試圖通過(guò)開源模型+各種微調(diào)的方式,嘗試讓大模型的能力更貼近企業(yè)的真實(shí)開發(fā)環(huán)境要求,最終還是發(fā)現(xiàn)大模型學(xué)不會(huì)企業(yè)的領(lǐng)域知識(shí),效果不盡如人意。
為此,我們發(fā)布了一個(gè)大模型落地框架LLM Adoption Framework(LAF),旨在幫助企業(yè)了解如何將大模型與領(lǐng)域知識(shí)相結(jié)合,并利用我們的經(jīng)驗(yàn),幫助來(lái)自各個(gè)領(lǐng)域和行業(yè)的企業(yè)有效地部署和落地領(lǐng)域大模型。具體來(lái)說(shuō),該框架是一種咨詢的方法論,分為以下三個(gè)階段:第一個(gè)階段,評(píng)估階段。我們首先會(huì)根據(jù)企業(yè)的商業(yè)目標(biāo)進(jìn)行全面評(píng)估,深入了解企業(yè)已開展的工作,以及為何未能實(shí)現(xiàn)大模型落地的預(yù)定業(yè)績(jī)目標(biāo),并分析導(dǎo)致這些差距的原因。第二階段,模型構(gòu)建及訓(xùn)練階段?;谶@些差距企業(yè)應(yīng)該怎么選擇模型,怎么準(zhǔn)備和處理數(shù)據(jù),如何訓(xùn)練模型,可以通過(guò)哪些數(shù)據(jù)治理的方法來(lái)達(dá)到預(yù)期的狀態(tài)。此階段旨在精確構(gòu)建并優(yōu)化大模型,確保模型深度融合并體現(xiàn)企業(yè)特有的領(lǐng)域知識(shí)。在這一階段,不僅進(jìn)行模型架構(gòu)的設(shè)計(jì)與搭建,還包括針對(duì)企業(yè)獨(dú)特業(yè)務(wù)邏輯和領(lǐng)域特定數(shù)據(jù)的深入治理及訓(xùn)練過(guò)程。第三階段,上線及產(chǎn)品化階段。這一階段主要涉及產(chǎn)品化的過(guò)程。我們將幫助企業(yè)將領(lǐng)域大模型與其內(nèi)部多個(gè)平臺(tái)通過(guò)API進(jìn)行集成,并確保模型能力能夠有效輸出到業(yè)務(wù)端,所有這些都需要根據(jù)企業(yè)的實(shí)際需求進(jìn)行定制化實(shí)現(xiàn)。
總而言之,aiXcoder的LAF并非特定于任何一個(gè)開源/閉源大模型提供商,而是大量利用aiXcoder提供的大模型訓(xùn)練、領(lǐng)域經(jīng)驗(yàn)和軟件工程最佳實(shí)踐為企業(yè)提供更具體的深度咨詢和指導(dǎo)。同時(shí),aiXcoder的LAF不僅限于aiXcoder模型使用,企業(yè)可以選擇任何閉源和開源模型,它是完全可以通用的,并非aiXcoder“獨(dú)門秘籍”,可以根據(jù)企業(yè)“領(lǐng)域知識(shí)”量身定制大模型落地實(shí)施及行動(dòng)計(jì)劃。
最后,總結(jié)一下我們的觀點(diǎn):
●?無(wú)論是開源還是閉源,選擇專業(yè)的軟件工程大模型,而不是通用大模型。
●?不關(guān)注大模型廠商宣傳支持了多少功能和HumanEval、MBPP、MultiPL-E等常規(guī)的“打榜”評(píng)測(cè)集評(píng)測(cè)結(jié)果,要關(guān)注大模型實(shí)際生成內(nèi)容是否真的理解企業(yè)的業(yè)務(wù)。
●?務(wù)必要結(jié)合領(lǐng)域知識(shí)治理并訓(xùn)練,再做進(jìn)一步微調(diào)。直接使用常規(guī)的全參微調(diào)、高效微調(diào)、RAG等方式幫助不大。
●?大模型落地要高度自治、解耦,企業(yè)業(yè)務(wù)的復(fù)雜程度和連續(xù)性,更不允許綁定某個(gè)大模型廠商。
●?一定要做個(gè)性化訓(xùn)練,不能直接落地代碼大模型,同時(shí)培養(yǎng)自己的技術(shù)人員,有效規(guī)避直接部署模型的高風(fēng)險(xiǎn)。
關(guān)于aiXcoder簡(jiǎn)介:aiXcoder孵化自北京大學(xué)軟件工程研究所,創(chuàng)始團(tuán)隊(duì)均來(lái)自北京大學(xué),是全球最早將深度學(xué)習(xí)技術(shù)應(yīng)用于代碼生成與代碼理解領(lǐng)域的團(tuán)隊(duì),也是最早將深度學(xué)習(xí)應(yīng)用在編程產(chǎn)品的團(tuán)隊(duì)。公司專注于AIGC for Code領(lǐng)域,致力于將前沿人工智能技術(shù)應(yīng)用于軟件工程,為企業(yè)提供完備的智能化軟件開發(fā)解決方案,包括私有化部署、領(lǐng)域化大模型落地及定制化開發(fā)等服務(wù),現(xiàn)已在金融、軍工、航空航天、通信、高科技等行業(yè)頭部企業(yè)部署實(shí)施。目前已服務(wù)智能編程社區(qū)版產(chǎn)品用戶80萬(wàn)+,獲得廣泛行業(yè)及眾多C端開發(fā)者們的認(rèn)可。
相關(guān)稿件