《王植萌-開源大語言模型基座在去哪兒網的代碼生成應用.pdf》由會員分享,可在線閱讀,更多相關《王植萌-開源大語言模型基座在去哪兒網的代碼生成應用.pdf(43頁珍藏版)》請在三個皮匠報告上搜索。
1、代碼生成模型基座在去哪兒網的代碼生成應用王植萌 去哪兒網演講嘉賓王植萌去哪兒網基礎研發團隊負責人/技術委員會主席/人工智能委員會公共技術分會負責人專注于SOP+AIAgents大模型應用大模型基座在軟件工程領域提效目 錄CONTENTS1.代碼生成模型基座應用的目的與目標2.代碼生成模型的落地策略3.代碼生成模型在落地過程中遇到的難點4.問題解決的具體方案和結果5.后續工作展望代碼生成模型基座應用的目的與目標PART 01代碼生成模型基座的目的與目標數字化轉型瘦身AI引領的全流程提效代碼生成模型基座的目的與目標需求域開發域測試域運維域根據需求生成checklist/TestCase技術知識管理
2、圖譜代碼生成代碼補全CRUnitTest生成排期助手應用級接口測試生成AIOPS目標:提效20%代碼生成模型基座的目的與目標模型基座層提示詞工程層CoT層Agent層Multi-Agents層chatGPTGPT4CodeXcodellamastarcoder模板langchainlangchain4jAgentsSpringbootSpringBoot-QUNAR-agents代碼生成模型基座的應用策略PART 02代碼生成模型基座的應用策略DMAIC原則定義:用戶接受率、用戶留存率、用戶覆蓋度度量:用戶接受率(NPS)、用戶留存率(周活躍用戶)、用戶覆蓋率(相對于工程師全量的覆蓋度)分析:
3、哪些場景是用戶的痛點(TOP3:需求分析階段、代碼階段、日常解答問題)提升:圍繞需求階段、開發測試階段、日常值班來規劃場景保持:成本可控,ROI可持續的方式來形成正向循環需求調研與分析代碼開發方面DMAIC原則定義:生成、補全代碼的BenchMark測試,生成、補全代碼的用戶接受度,生成、補全代碼的應用普及度生成、補全代碼在工程師提交代碼中的占比度量:用戶接受度使用AI開發助手中點擊Tab鍵采納的數量和生成代碼到用戶IDE的數量做比來衡量,BenchMark采用QUNAR自定義的業務場景代碼問題來作為全集,100分為github-copilot的生成結果,代碼提交占比按照工程師接納行數與其周提
4、交代碼行數做比分析:關鍵節點包括:模型選擇、生成速度、上下文輸入、返回結果評估、返回結果完整性校驗、用戶交互時機選擇,用戶操作結果回收提升:圍繞能跑通、可補、可用、有場景用、如何證明自己可用來不斷提升保持:監控、統計面板、新模型實驗的SOP代碼生成模型基座的落地難點PART 03用戶對于代碼生成工具的負向觀點對正常寫代碼思路有干擾功能不夠安全代碼補全接受率不高補全太慢與工作環境集成不夠補全代碼與上下文結合不足代碼生成模型的落地難點模型基座:開源、商用?模型部署:大???是否量化?提示詞工程:模板?上下文?光標周圍?引用文件、類?返回結果評估:完整?能否編譯通過?與用戶交互:IDEA?Web?VS
5、Code?與GitHub Copilot插件如何兼容?結果如何度量:試用、推廣時機?模型基座Replit_3b6月,AI開發助手首次具備代碼補全能力代碼補全-開源模型代碼生成、CR等功能-微軟GPT3.5接口starcoder_15.5b7月,具備中間補全能力codellama_7b9月,代碼補全體驗達到可用水平,開始進行推廣應用codellama_13b11月,代碼補全BenchMark與github copilot持平,全司內推薦應用模型部署GPU內存 量化 8bit/4bit吞吐能力 TGI&vllm提示詞工程如何構建合理的System Prompt?返回結果評估構建適合本公司實際情況的
6、評價樣本1.通過方法注釋,生成基礎的通用算法2.對于已有方法,生成該方法的方法體注釋,包括方法的參數列表注釋3.對于無注釋的方法,自動根據方法體內上下文生成業務代碼,盡量包含日志和監控打點4.對于有注釋的方法,自動根據方法體內上下文及注釋中的提示生成業務代碼,盡量包含日志和監控打點5.打印日志時,自動補全想要輸出的占位符變量6.打印監控時,在try catch塊中,根據上文成功的正向打點,在catch塊補全失敗的反向打點7.對于同一個類中的方法調用,自動補全參數列表8.對于同一個類中的方法調用,自動補全完整業務9.自動識別其他類(實體)中的字段,并正確調用getter/setter與用戶交互什
7、么時候觸發補全?觸發時刻的用戶感知,如何讓用戶感知到同時維持心流狀態用戶保持心流狀態的最長可等待時間返回結果自動評分返回結果自動校驗結果如何度量BenchMark度量用戶接受率度量用戶補全/提交比度量用戶應用覆蓋度用戶周度應用UV問題解決的具體方案和結果PART 04問題解決的具體方案與結果模型基座選型:兩條腿走路問題解決的具體方案與結果模型部署及初步效果初始的度量初始的度量定義一個空方法,在方法簽名上做好注釋,使用插件生成相應的算法代碼。初始的度量在一個已寫完整的方法上,通過鍵入/*來開始提示對方法注釋的生成,要求注釋中包含對方法內容的邏輯解釋,以及方法參數列表的參數含義說明。初始的度量當我
8、已經完成了一個方法的大部分代碼時,我需要對一些邊界條件做完善,如此時我需要對某個外部獲取的實體判空,并輸出日志監控以記錄異常。初始的度量在方法注釋中明確提示邊界條件的處理方式,期望按照注釋生成相應的監控和日志。初始的度量打印日志時,自動補全想要輸出的占位符變量初始的度量打印監控時,在try catch塊中,根據上文成功的正向打點,在catch塊補全失敗的反向打點初始的度量對于同一個類中的方法調用,自動補全參數列表。初始的度量對于同一個類中的方法調用,自動補全參數列表。初始的度量自動識別其他類(實體)中的字段,并正確調用getter/setter問題解決的具體方案與結果更換模型 codellam
9、a_7b-codellama13b對返回值給與評分,設置展示閾值做補全完整性校驗限制返回token數,提升處理速度Codellama補全接受度 17%-25%0.000.100.200.300.400.500.6010月30日10月31日11月1日11月2日11月3日11月4日11月5日11月6日11月7日11月8日11月9日11月10日11月11日11月12日codellama代碼展示次數代碼次數接受比0.000.100.200.300.400.500.6010月30日10月31日11月1日11月2日11月3日11月4日11月5日11月6日11月7日11月8日11月9日11月10日11月11
10、日11月12日codellama代碼行數接受比問題解決的具體方案與結果提示詞工程:問題解決的具體方案與結果返回結果評估:問題解決的具體方案與結果與用戶交互:用戶對于正在補全有感知可自由開關代碼補全功能本地有緩存用戶可在一定范圍內選擇模型結果的度量度量常態化:后續工作展望PART 05后續工作展望模型基座:更便宜的SFT(QLora?)、更精煉的模型模型部署:更小的量化損失提示詞工程:結合Agent框架,代碼生成工程化、SOP化返回結果評估:更迅速、更全面與用戶交互:IDE集成能力更強,更少的跳出訴求,更友好的提示用戶完善注釋結果如何度量:效果度量標準更加標準化,權威性更強后續工作展望-直接補全與自然語言生成結合觸發代碼補全模型識別返回結果是否接受AI插件代碼可用性評估模型代碼模型大語言模型推理補全接受結果自然語言描述模型識別返回結果是否接受推理生成是否THANKS