《代碼大模型對于工程理解的探索研究-汪晟杰.pdf》由會員分享,可在線閱讀,更多相關《代碼大模型對于工程理解的探索研究-汪晟杰.pdf(40頁珍藏版)》請在三個皮匠報告上搜索。
1、代碼大模型對于工程理解的探索研究騰訊云 產品專家/汪晟杰 代碼大模型的內核 IDE的新體驗 下一代編碼變革 提示詞的3S原則01 編碼過程的輔助 根據 survey.stackoverflow.co 統計根據 內部問卷反饋編寫代碼 82.55%正在或計劃使用 70%代碼學習者可能性更高代碼測試 75.81%代碼糾查 77.99%提升開發效率 48%工具智能化 24%AI新技術探索 16%經驗復用 12%AI 及新技術探索訴求日益強烈及新技術探索訴求日益強烈代碼本質的幾大特征代碼本質的幾大特征秩序性010102020303邏輯性上下文感知性代碼大模型本質要解決Token/算力成本01010202
2、0303語料/意圖理解質量/自動化評測代碼大模型的產品賽道可見的價值數據安全=好010102020303IDE+編碼效能=快對話+工程理解=準【應用形態】打造流暢高效的編程體驗【模型】探索適合代碼場景的行業模型q LLaMa系的模型 token window size 有限(2048),涉及到代碼理解/生成這類 prompt/output 任務,易因超出token長度限制或由于上下文信息不全導致任務中斷q LLaMa 是綜合模型,預訓練階段私用代碼知識庫僅占 6.5%,工程知識量存在天花板q LLaMa系模型 humanEval 和 MBPP 測試結果低于專用代碼生成模型【企業需求】符合國內行
3、業客戶訴求SMAF多模能力數據看板豐富場景代碼安全Securityq 保證基礎模型里用于訓練的代碼是安全的MaaS Analysis Fullq 保障補全出來的代碼是安全的q 各部門的業務特性不同,可能需要多個性化行業模型q 根據不同業務特性,進行二次訓練,補全模型q 如何保障二次訓練以及行業代碼的訓練效果q 有哪些效能指標,可以幫助管理者觀察工具對開發工作的提升q 代碼補全是高頻場景,優先度最高q AI 編碼輔助之外,代碼掃描、評審、以及DevOps上下游規劃q 針對專業開發者,提升工作效率和質量,對AI輔助生成的代碼存在批判性思維 q 針對代碼學習鉆研用戶,專注代碼本身,創建小的、即時使用
4、的任務型應用程序 q 具備高粘度的編程體驗,及時補全將調用的函數、方法等輔助性編碼實踐下文 q 響應速度更快、成本更低,基于更小的模型?智能編碼下衍生的智能編碼下衍生的SMAF訴求訴求全鏈路 N+1+1 成本與體驗的拉扯代碼補全技術對話單元測試代碼診斷訓練推理管理平臺模型工廠數據運營4+1+1代碼生成率代碼采納率對話采納率測試生成率耗時情況QPS全鏈路遙測基于混元進行大模型指令對齊和強化學習進行行業模型的訓練和推理優化,提升產品響應速度與交互體驗反饋真實場景下的bad base,挖掘行業場景價值體體驗驗成成本本用相對較低的推理成本,batch 計算,小于300ms的延遲預訓練更小的代碼模型SF
5、T 微調IDE+AI 打造原生效果的打造原生效果的AI輔助的輔助的IDE形態形態VSCode 實驗性原生交互接口實驗性原生交互接口探索如何將 AI 更深入地集成到 VS Code 中,并提出了許多很酷的想法,例如改進的重命名和重構、基于示例的代碼轉換以及使用創建文件 glob 模式或正則表達式的方法自然語言。-摘自 vscode 的blogchat:可能是關于聊天功能的 API 提案。inlineCompletionsAdditions:可能是關于內聯補全添加的 API 提案。interactive:可能是關于交互功能的 API 提案。documentPaste:可能是關于文檔粘貼的 API
6、提案。interactiveUserActions:可能是關于交互用戶行為的 API 提案。chatProvider:可能是關于聊天提供者的 API 提案。codeActionAI:可能是關于代碼行為 AI 的 API 提案。findTextInFiles:可能是關于在文件中查找文本的 API 提案。textSearchProvider:可能是關于文本搜索提供者的 API 提案。terminalDataWriteEvent:可能是關于終端數據寫入事件的 API 提案。terminalExecuteCommandEvent:可能是關于終端執行命令事件的 API 提案。terminalSelect
7、ion:可能是關于終端選擇的 API 提案。terminalQuickFixProvider:可能是關于終端快速修復提供者的 API 提案。handleIssueUri:可能是關于處理問題 URI 的 API 提案。readonlyMessage:可能是關于只讀消息的 API 提案。chatVariables:可能是關于聊天變量的 API 提案。mappedEditsProvider:可能是關于映射編輯提供者的 API 提案。aiRelatedInformation:可能是關于 AI 相關信息的 API 提案。chatAgents:可能是關于聊天代理的 API 提案。chatAgents2:可
8、能是關于聊天代理2的 API 提案。chatAgents2Additions:可能是關于聊天代理2添加的 API 提案。defaultChatAgent:可能是關于默認聊天代理的 API 提案。這些 API 提案的具體含義和實現細節,通常會在項目的文檔或者相關的提案文檔中有詳細的描述。如果你想了解更多關于這些 API 提案的信息,你可能需要查閱這些文檔。以AI為內核的IDE,布局下一代開發者利器AI化的IDE體驗010102020303利用本機算力云和倉庫的增值下一代編碼變革提示詞工程與3S原則010102020303習慣:問+編碼停頓更注重注釋文檔提示詞工程智能編碼習慣的智能編碼習慣的 3T
9、NB目標目標 Tab Tab Tab No Backspaceq 根據注釋生成代碼q 根據函數定義,生成函數體實現q 根據上文生成下文代碼q 根據當前代碼行輸入,補全整行代碼騰訊混元大模型 1.根據注釋補全函數體2.補全依賴的新函數實現3.根據上文補全下文4.根據上文補全下文5.根據上文生成測試函數提示工程在代碼場景下的重要性提示工程在代碼場景下的重要性Github Copilot 提示工程的示例提示工程的示例你是一名編碼助理,通過澄清用戶的問題并提供用戶可以搜索的相關關鍵字列表來幫助用戶回答其工作區中有關代碼的問題。用戶會向您提供工作區中潛在的相關信息。這些信息可能不完整。請不要提及或要求用
10、戶提供更多信息。您只需澄清并提供關鍵字。不要試圖直接回答用戶的問題。#附加規則逐步思考:1.閱讀用戶的問題,了解他們提出的關于工作空間的問題。2.如果問題中有模棱兩可的詞語,例如它、那個、這個,請查看對話歷史記錄來理解這些詞語。3.輸出問題的澄清版本,并解決所有歧義。在澄清問題時,請務必保留問題的意思。4.然后輸出相關關鍵詞的簡短標記符列表,用戶可以嘗試搜索這些關鍵詞來回答他們的問題。這些關鍵詞可以用作文件名、符號名、縮寫或相關代碼中的注釋。將與問題最相關的關鍵詞放在前面。不要包含過于通用的關鍵詞。5.對于Markdown相關關鍵字列表中的每個關鍵字,如果適用,請在其后添加一個逗號分隔的變體列
11、表。例如:對于encode,可能的變體包括encoding、encoded、encoder、encoders??紤]同義詞和復數形式。#示例用戶:base64編碼的代碼在哪里?回復:base64編碼的代碼在哪里?-base64encoding,base64encoder,base64encode-base64,base64-encode,encoded,encoder,encoders提示工程的準度的提示工程的準度的3S準則準則提示工程的基本原理,可以總結為3個個S如下。這些核心規則是創建有效提示的基礎。單個單個 Single:始終將提示集中在單個、定義明確的任務或問題上。具體具體 Specif
12、ic:確保說明明確且詳細,最好能附帶一個示例或者模擬信息結構。具體且具象帶來理解會帶來更精確的代碼建議。簡短簡短 Short:在具體的同時,保持提示簡明扼要。這種平衡確保了清晰度,而不會使騰訊云AI代碼助手超載或使交互復雜化。六大定律六大定律 定律一:有想法的程序員無法替代。智能編碼目前代碼速寫輔助,依然需要你有開發思路。定律一:有想法的程序員無法替代。智能編碼目前代碼速寫輔助,依然需要你有開發思路。定律二:學會引導定律二:學會引導AI,學會提示詞,學會提示詞,AI是你記憶存儲。是你記憶存儲。定律三定律三:每個模型的習性不同,提示詞會不同,你要像訓練小狗一樣摸透他,即使你不懂大模型每個模型的習
13、性不同,提示詞會不同,你要像訓練小狗一樣摸透他,即使你不懂大模型原理。原理。定律四:好好做好架構復用,不然你的代碼里都是重復代碼定律四:好好做好架構復用,不然你的代碼里都是重復代碼 定律五:用上手了,代碼補全留存高于對話。定律五:用上手了,代碼補全留存高于對話。AI理解工程代碼,還需要傳統方式相結合。理解工程代碼,還需要傳統方式相結合。定律六:軟件工程不會被定律六:軟件工程不會被AI顛覆,流程但會被簡化,被智能化。學會定義上層提示詞顛覆,流程但會被簡化,被智能化。學會定義上層提示詞DSL,編排,編排是未來開發者的技能之一。是未來開發者的技能之一。智能編碼輔助實戰智能編碼輔助實戰 工程場景的代碼
14、語義增強搜索 對話:企業知識庫RAG 補全:跨文件能力 特性提示詞擴展02 工程理解的輔助 工程場景下的項目創建開始工程場景下的項目創建開始workspace/new語義增強檢索的幾大特征語義增強檢索的幾大特征Codebase Indexing010102020303強化搜索Embedding&速度企業知識庫RAG擴展上下文感知能力workspace#codebase本質上是在完成提示詞的精簡化工程的上下文補全引入更多的工程策略可行性方案打開過的文件010102020303基于語法特性目錄相關性相鄰選項卡不同語言同包下代碼補全代碼補全+跨文件跨文件 實戰實戰特性提示詞擴展特性提示詞擴展Prom
15、pt as Code 單元測試增強探索 智能體 Devin&Copilot Workspace03 AISE的探索與挑戰軟件工程軟件工程3.0邁入邁入AI時代時代研發流程研發流程+AI :艱巨但一步步,未來可期艱巨但一步步,未來可期AI 輔助的端到端軟件研發過程q自動/輔助完成項目計劃制定和排期q輔助完成需求細化、拆分以及分解到用戶故事和任務q自動生成驗收標準q代碼反向工程生成項目文檔q基于AI給出代碼評審意見,輔助完成源代碼評審,打破技術鴻溝產品/項目經理開發人員市場人員市場人員q用戶行為分析q大量用戶反饋數據處理q提取并生成高質量產品需求、改進點市場人員設計師(UI/UX)q自動生成UI原
16、型q基于原型自動生成可用的界面代碼(html/CSS)組件測試人員技術支持q海量日志分析和關鍵信息提取q自動分析運維問題并定位到代碼q根據內部知識庫快速檢索和響應用戶問題,提高用戶滿意度qAI輔助結對編程q代碼補全和生成q代碼分析和交互式代碼生成q輔助調試,安全問題監測和性能改進q基于用戶故事生成測試用例、測試步驟和預期結果q從代碼自動生成測試腳本q根據數據結構描述自動生成大量場景化測試數據q自動執行生成的測試自動化腳本為什么說單元測試做的好,很難為什么說單元測試是軟件工程3.0 必須要解決的測試方法種類多010102020303項目本身不具備可單測生成質量難以運行框架多難以mock無標準最佳
17、實踐大模型的單元測試可行性增加示例代碼感知框架010102020303語法樹找相關跨文件策略感知Mock對象生成完成可執行單測依賴文件的調用鏈CoT 與 智能體在開發中的價值CoT010102020303Funtion CallReAct思維樹拆解業務邏輯單元推理+行動workspace/newNotebook 調研與CoT實戰1.生成需求拆解的幾個子任務,通過title 和 content組裝。2.在組裝成子任務的數據集的時候,我們給出了組裝示例,以穩定大模型的生成質量。3.根據子任務,組裝成子任務所需執行的提示詞列表。用于用戶點擊創建文件后依次執行代碼文件。開放話題:未來形態是怎樣?開放話
18、題:未來形態是怎樣?云端云端IDE加速加速AI助手為新的載體助手為新的載體 總結 騰訊云AI代碼助手04 關注與總結小結一下小結一下 下一下一個個AI時代改變了編碼習慣和過程。大模型提供了在開發者賽道下產品化時代改變了編碼習慣和過程。大模型提供了在開發者賽道下產品化的無數新場景,但同時也存在技術挑戰,中文語料、數據安全性和隱私保護的無數新場景,但同時也存在技術挑戰,中文語料、數據安全性和隱私保護等問題,也需要考慮在受限資源下多模型怎么落地運轉。等問題,也需要考慮在受限資源下多模型怎么落地運轉。深度探索提示工程、代碼模型能力和深度探索提示工程、代碼模型能力和AI應用框架是應用框架是AI產品的重要組成部分,產品的重要組成部分,它們可以幫助我們更好地定義新的軟件模式。它們可以幫助我們更好地定義新的軟件模式。產品開發指標會作為新的效能度量,和產品改進的手段。產品開發指標會作為新的效能度量,和產品改進的手段。3TNB是產品努力方向、是產品努力方向、3S原則是提示詞準則、六大定律是發現機遇的鑰匙。原則是提示詞準則、六大定律是發現機遇的鑰匙。對話對話+RAG、補全、補全+跨文件,有效解決了企業痛點,延伸代碼和知識庫的理解??缥募?,有效解決了企業痛點,延伸代碼和知識庫的理解。面向企業及個人的騰訊云面向企業及個人的騰訊云 AI 代碼助手代碼助手 https:/