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