新智元報(bào)道
編輯:桃子 潤(rùn)
【新智元導(dǎo)讀】全球首個(gè) AI 程序員 Devin 誕生之后,讓碼農(nóng)紛紛恐慌。沒(méi)想到,微軟同時(shí)也整出了一個(gè) AI 程序員 ——AutoDev,能夠自主生成、執(zhí)行代碼等任務(wù)。網(wǎng)友驚呼,AI 編碼發(fā)展太快了。
全球首個(gè) AI 程序員 Devin 的橫空出世,可能成為軟件和 AI 發(fā)展史上一個(gè)重要的節(jié)點(diǎn)。它掌握了全棧的技能,不僅可以寫(xiě)代碼 debug,訓(xùn)模型,還可以去美國(guó)最大求職網(wǎng)站 Upwork 上搶單。
一時(shí)間,網(wǎng)友們驚呼,「程序員不存在了」?甚至連剛開(kāi)始攻讀計(jì)算機(jī)學(xué)位的人也恐慌,「10 倍 AI 工程師」對(duì)未來(lái)的工作影響。
除了 Cognition AI 這種明星初創(chuàng)公司,美國(guó)的各個(gè)大廠也早就在想辦法用 AI 智能體降本增效了。就在 3 月 14 日同一天,微軟團(tuán)隊(duì)也發(fā)布了一個(gè)「微軟 AI 程序員」——AutoDev。
與 Devin 這種極致追求效率和產(chǎn)出結(jié)果的方向有所不同。AutoDev 專為自主規(guī)劃、執(zhí)行復(fù)雜的軟件工程任務(wù)而設(shè)計(jì),還能維護(hù) Docker 環(huán)境中的隱私和安全。
在此之前,微軟已有主打產(chǎn)品 GitHub Copilot,幫助開(kāi)發(fā)人員完成軟件開(kāi)發(fā)。
然而,包括 GitHub Copilot 在內(nèi)的一些 AI 工具,并沒(méi)有充分利用 IDE 中所有的潛在功能,比如構(gòu)建、測(cè)試、執(zhí)行代碼、git 操作等。
基于聊天界面的要求,它們主要側(cè)重于建議代碼片段,以及文件操作。AutoDev 的誕生,就是為了填補(bǔ)這一空白。
用戶可以定義復(fù)雜的軟件工程目標(biāo),AutoDev 會(huì)將這些目標(biāo)分配給自主 AI 智能體來(lái)實(shí)現(xiàn)。
然后,這些 AI 智能體可以對(duì)代碼庫(kù)執(zhí)行各種操作,包括文件編輯、檢索、構(gòu)建過(guò)程、執(zhí)行、測(cè)試和 git 操作。
甚至,它們還能訪問(wèn)文件、編譯器輸出、構(gòu)建和測(cè)試日志、靜態(tài)分析工具等。
在 HumanEval 測(cè)試中,AutoDev 分別在代碼生成和測(cè)試生成方面,分別取得了 91.5% 和 87.8% Pass@1 的優(yōu)秀結(jié)果。
網(wǎng)友表示,AI 編碼發(fā)展太快了,2021 年 GitHub Copilot 能解決 28.8% 的 HumanEval 問(wèn)題,到了 2024 年,AutoDev 直接解決了 91.5% 的問(wèn)題。
不用人類插手,AutoDev 自主完成任務(wù)
AutoDev 工作流程如下圖所示,用戶定義一個(gè)目標(biāo),比如「測(cè)試特定方法」。
AI 智能體將測(cè)試寫(xiě)入一個(gè)新文件,并啟動(dòng)測(cè)試執(zhí)行命令,以上都在安全的評(píng)估環(huán)境中進(jìn)行。
然后,測(cè)試執(zhí)行的輸出(包括失敗日志)將合并到對(duì)話中。
AI 智能體分析這些輸出,觸發(fā)檢索命令,通過(guò)編輯文件合并檢索到的信息,然后重新啟動(dòng)測(cè)試執(zhí)行。
最后,Eval 環(huán)境提供有關(guān)測(cè)試執(zhí)行是否成功,以及用戶目標(biāo)完成情況的反饋。
整個(gè)過(guò)程由 AutoDev 自主協(xié)調(diào),除了設(shè)定初始目標(biāo)之外,無(wú)需要開(kāi)發(fā)人員干預(yù)。
相比之下,如果現(xiàn)有的 AI 編碼助手集成到 IDE 中,開(kāi)發(fā)人員必須手動(dòng)執(zhí)行測(cè)試(比如運(yùn)行 pytest)、向 AI 聊天界面提供失敗日志、可能需要識(shí)別要合并的其他上下文信息,并重復(fù)驗(yàn)證操作確保 AI 生成修改后的代碼后測(cè)試成功。
值得一提的是,AutoDev 從以前許多在 AI 智能體領(lǐng)域的研究中汲取了靈感,比如 AutoGen—— 編排語(yǔ)言模型工作流并推進(jìn)多個(gè)智能體之間的對(duì)話。
AutoDev 的能力超越了對(duì)話管理,使智能體能夠直接與代碼存儲(chǔ)庫(kù)交互,自動(dòng)執(zhí)行命令和操作,從而擴(kuò)展了 AutoGen。
同樣,AutoDev 的研究也借鑒了 Auto-GPT。這是一種用于自主任務(wù)執(zhí)行的開(kāi)源 AI 智能體,通過(guò)提供代碼和 IDE 特定功能來(lái)支持執(zhí)行復(fù)雜的軟件工程任務(wù)。
AutoDev 構(gòu)架
上圖是 AutoDev 架構(gòu)的簡(jiǎn)單示意圖。
AutoDev 主要由 4 個(gè)功能模塊組成:
-用于跟蹤和管理用戶與代理對(duì)話的對(duì)話管理器(Conversation Manager);
-為代理提供各種代碼和集成開(kāi)發(fā)環(huán)境相關(guān)工具的工具庫(kù)(Tools library);
-用于調(diào)度各種代理的代理調(diào)度器(Agents Scheduler);
-以及用于執(zhí)行操作的評(píng)估環(huán)境(Evaluation Environment)。
下面就給大家詳細(xì)介紹每種功能模塊。
規(guī)則、行動(dòng)和目標(biāo)配置
用戶通過(guò) yaml 文件配置規(guī)則和操作來(lái)啟動(dòng)流程。
這些文件定義了 AI 代理可以執(zhí)行的可用命令(操作)。
用戶可以通過(guò)啟用 / 禁用特定命令來(lái)利用默認(rèn)設(shè)置或細(xì)粒度權(quán)限,從而根據(jù)自己的特定需求量身定制 AutoDev。
配置步驟目的是實(shí)現(xiàn)對(duì) AI 代理能力的精確控制。
在這一階段,用戶可以定義人工智能代理的數(shù)量和行為,分配特定的責(zé)任、權(quán)限和可用操作。
例如,用戶可以定義一個(gè) 「開(kāi)發(fā)者 」代理和一個(gè) 「審核者 」代理,讓它們協(xié)同工作以實(shí)現(xiàn)目標(biāo)。
根據(jù)規(guī)則和操作配置,用戶可以指定 AutoDev 要完成的軟件工程任務(wù)或流程。
例如,用戶可以要求生成測(cè)試用例,并確保其語(yǔ)法正確、不包含錯(cuò)誤(這涉及編輯文件、運(yùn)行測(cè)試套件、執(zhí)行語(yǔ)法檢查和錯(cuò)誤查找工具)。
對(duì)話管理器(conversation manager)
會(huì)話管理器負(fù)責(zé)初始化會(huì)話歷史,在對(duì)正在進(jìn)行的會(huì)話進(jìn)行高級(jí)管理方面發(fā)揮著關(guān)鍵作用。它負(fù)責(zé)決定何時(shí)中斷對(duì)話進(jìn)程,并確保用戶、人工智能代理和整個(gè)系統(tǒng)之間的無(wú)縫交流。
它維護(hù)和管理的對(duì)話對(duì)象,主要包括來(lái)自代理的信息和來(lái)自評(píng)估環(huán)境(eval environment)的操作結(jié)果。
解析器
解析器解釋代理生成的響應(yīng),以預(yù)定格式提取指令和參數(shù)。它能確保指令格式正確,驗(yàn)證參數(shù)的數(shù)量和準(zhǔn)確性(例如,文件編輯指令需要文件路徑參數(shù))。
如果解析失敗,就會(huì)在對(duì)話中注入錯(cuò)誤信息,阻止對(duì)資源庫(kù)的進(jìn)一步操作。
通過(guò)強(qiáng)制執(zhí)行特定的代理權(quán)限和進(jìn)行額外的語(yǔ)義檢查,成功解析的命令會(huì)被進(jìn)一步分析。
它能確保建議的操作符合用戶指定的細(xì)粒度權(quán)限。
如果命令通過(guò)審查,對(duì)話管理器就會(huì)調(diào)用工具庫(kù)中的相應(yīng)操作。
輸出組織器
輸出組織器模塊主要負(fù)責(zé)處理從評(píng)估環(huán)境接收到的輸出。
它選擇關(guān)鍵信息(如狀態(tài)或錯(cuò)誤),有選擇地總結(jié)相關(guān)內(nèi)容,并將結(jié)構(gòu)良好的信息添加到對(duì)話歷史記錄中。
這可確保用戶對(duì) AutoDev 的操作和結(jié)果有一個(gè)清晰、有條理的記錄。
對(duì)話終止器
會(huì)話管理器決定何時(shí)結(jié)束會(huì)話。這可能發(fā)生在代理發(fā)出任務(wù)完成信號(hào)(停止命令)、對(duì)話達(dá)到用戶定義的最大迭代次數(shù) / token、或在進(jìn)程或評(píng)估環(huán)境中檢測(cè)到問(wèn)題時(shí)。
AutoDev 的全面設(shè)計(jì)確保了人工智能驅(qū)動(dòng)開(kāi)發(fā)的系統(tǒng)性和可控性。
代理調(diào)度程序(Multi-Agents)
代理調(diào)度器負(fù)責(zé)協(xié)調(diào)人工智能代理,以實(shí)現(xiàn)用戶定義的目標(biāo)。
配置了特定角色和可用命令集的代理協(xié)同運(yùn)行,執(zhí)行各種任務(wù)。調(diào)度器采用各種協(xié)作算法,如循環(huán)、基于令牌或基于優(yōu)先級(jí)的算法,來(lái)決定代理參與對(duì)話的順序和方式。
具體來(lái)說(shuō),調(diào)度算法包括但不限于以下幾種:
(i) 循環(huán)協(xié)作,按順序調(diào)用每個(gè)代理,讓每個(gè)代理執(zhí)行預(yù)定數(shù)量的操作;
(ii) 基于令牌的協(xié)作,讓一個(gè)代理執(zhí)行多個(gè)操作,直到它發(fā)出一個(gè)令牌,表示完成了分配的任務(wù);
(iii) 基于優(yōu)先級(jí)的協(xié)作,按照代理的優(yōu)先級(jí)順序啟動(dòng)代理。代理調(diào)度器通過(guò)當(dāng)前對(duì)話調(diào)用特定代理。
代理
由 OpenAI GPT-4 等大型語(yǔ)言模型(LLM)和為代碼生成而優(yōu)化的小型語(yǔ)言模型(SLM)組成的代理通過(guò)文本自然語(yǔ)言進(jìn)行交流。
這些代理從代理調(diào)度程序(Agent Scheduler)接收目標(biāo)和對(duì)話歷史,并根據(jù)規(guī)則和行動(dòng)配置指定的行動(dòng)做出響應(yīng)。每個(gè)代理都有其獨(dú)特的配置,有助于實(shí)現(xiàn)用戶目標(biāo)的整體進(jìn)展。
工具庫(kù)(Tools Library)
AutoDev 中的工具庫(kù)提供了一系列命令,使代理能夠?qū)Y源庫(kù)執(zhí)行各種操作。
這些命令旨在將復(fù)雜的操作、工具和實(shí)用程序封裝在簡(jiǎn)單直觀的命令結(jié)構(gòu)中。
例如,通過(guò) build 和 test <test_file> 這樣的簡(jiǎn)單命令,就能抽象出與構(gòu)建和測(cè)試執(zhí)行有關(guān)的復(fù)雜問(wèn)題。
-文件編輯:該類別包含用于編輯文件(包括代碼、配置和文檔)的命令。
-該類別中的實(shí)用程序,如寫(xiě)入、編輯、插入和刪除,提供了不同程度的精細(xì)度。
-代理可以執(zhí)行從寫(xiě)入整個(gè)文件到修改文件中特定行的各種操作。例如,命令 write <filepath> <start_line>-<end_line> <content> 允許代理用新內(nèi)容重寫(xiě)一系列行。
檢索:在這一類別中,檢索工具包括 grep、find 和 ls 等基本 CLI 工具,以及更復(fù)雜的基于嵌入的技術(shù)。
這些技術(shù)能讓代理查找類似的代碼片段,從而提高他們從代碼庫(kù)中檢索相關(guān)信息的能力。
例如,retrieve <content> 命令允許代理執(zhí)行與所提供內(nèi)容類似的基于嵌入的片段檢索。
-構(gòu)建與執(zhí)行:這類命令允許代理使用簡(jiǎn)單直觀的命令毫不費(fèi)力地編譯、構(gòu)建和執(zhí)行代碼庫(kù)。底層構(gòu)建命令的復(fù)雜性已被抽象化,從而簡(jiǎn)化了評(píng)估環(huán)境基礎(chǔ)架構(gòu)中的流程。這類命令的示例包括:構(gòu)建、運(yùn)行 <文件>。
-測(cè)試與驗(yàn)證:這些命令使代理能夠通過(guò)執(zhí)行單個(gè)測(cè)試用例、特定測(cè)試文件或整個(gè)測(cè)試套件來(lái)測(cè)試代碼庫(kù)。代理可以執(zhí)行這些操作,而無(wú)需依賴特定測(cè)試框架的底層命令。
這類工具還包括校驗(yàn)工具,如篩選器和錯(cuò)誤查找工具。這類命令的例子包括:檢查語(yǔ)法正確性的 syntax <file> 和運(yùn)行整個(gè)測(cè)試套件的 test。
-Git:用戶可以為 Git 操作配置細(xì)粒度權(quán)限。包括提交、推送和合并等操作。例如,可以授予代理只執(zhí)行本地提交的權(quán)限,或者在必要時(shí)將更改推送到源代碼庫(kù)。
-通信:代理可以調(diào)用一系列旨在促進(jìn)與其他代理和 / 或用戶交流的命令。值得注意的是,talk 命令可以發(fā)送自然語(yǔ)言信息(不解釋為版本庫(kù)操作命令),ask 命令用于請(qǐng)求用戶反饋,而 stop 命令可以中斷進(jìn)程,表示目標(biāo)已實(shí)現(xiàn)或代理無(wú)法繼續(xù)。
因此,AutoDev 中的工具庫(kù)為人工智能代理提供了一套多功能且易于使用的工具,使其能夠與代碼庫(kù)進(jìn)行交互,并在協(xié)作開(kāi)發(fā)環(huán)境中進(jìn)行有效交流。
評(píng)估環(huán)境(Eval Environment)
評(píng)估環(huán)境在 Docker 容器中運(yùn)行,可以安全地執(zhí)行文件編輯、檢索、構(gòu)建、執(zhí)行和測(cè)試命令。
它抽象了底層命令的復(fù)雜性,為代理提供了一個(gè)簡(jiǎn)化的界面。評(píng)估環(huán)境會(huì)將標(biāo)準(zhǔn)輸出 / 錯(cuò)誤返回給輸出組織器模塊。
整合
用戶通過(guò)指定目標(biāo)和相關(guān)設(shè)置啟動(dòng)對(duì)話。
對(duì)話管理器初始化一個(gè)對(duì)話對(duì)象,整合來(lái)自人工智能代理和評(píng)估環(huán)境的信息。隨后,對(duì)話管理器將對(duì)話分派給負(fù)責(zé)協(xié)調(diào)人工智能代理行動(dòng)的代理調(diào)度器。
作為人工智能代理,語(yǔ)言模型(大型或小型 LM)通過(guò)文本互動(dòng)提出指令建議。
命令界面包含多種功能,包括文件編輯、檢索、構(gòu)建和執(zhí)行、測(cè)試以及 Git 操作。對(duì)話管理器會(huì)對(duì)這些建議的命令進(jìn)行解析,然后將其引導(dǎo)至評(píng)估環(huán)境,以便在代碼庫(kù)中執(zhí)行。
這些命令在評(píng)估環(huán)境的安全范圍內(nèi)執(zhí)行,并封裝在 Docker 容器中。
執(zhí)行后,產(chǎn)生的操作將無(wú)縫集成到對(duì)話歷史中,為后續(xù)迭代做出貢獻(xiàn)。
這種迭代過(guò)程一直持續(xù)到代理認(rèn)為任務(wù)完成、用戶干預(yù)發(fā)生或達(dá)到最大迭代限制為止。
AutoDev 的設(shè)計(jì)確保了系統(tǒng)、安全地協(xié)調(diào)人工智能代理,以自主和用戶控制的方式完成復(fù)雜的軟件工程任務(wù)。
實(shí)證評(píng)估設(shè)計(jì)
在研究人員的實(shí)證評(píng)估中,評(píng)估了 AutoDev 在軟件工程任務(wù)中的能力和有效性,研究它是否能夠提升人工智能模型的性能,而不僅僅是簡(jiǎn)單的推理。
此外,研究人員還評(píng)估了 AutoDev 在步驟數(shù)、推理調(diào)用和 token 方面的成本。
主要是確定了三個(gè)實(shí)驗(yàn)研究問(wèn)題:
-?? ?? 1 : AutoDev 在代碼生成任務(wù)中的效果如何?
-?? ?? 2 : AutoDev 在測(cè)試生成任務(wù)中的效果如何?
-?? ?? 3 : AutoDev 完成任務(wù)的效率如何?
?? 1 : AutoDev 在代碼生成任務(wù)中的效率如何?
研究人員使用 Pass@k 指標(biāo)來(lái)衡量 AutoDev 的有效性,其中??表示嘗試的次數(shù)。
成功解決的問(wèn)題是指 AutoDev 生成的方法主體代碼滿足所有人工編寫(xiě)的測(cè)試。一次嘗試相當(dāng)于一次完整的 AutoDev 對(duì)話,其中涉及多個(gè)推理調(diào)用和步驟。
這與其他方法(如直接調(diào)用 GPT-4)形成鮮明對(duì)比,后者通常只涉及一次推理調(diào)用。有關(guān)多次推理調(diào)用和步驟的細(xì)節(jié)將在?? ?? 3 中進(jìn)一步探討。在本次評(píng)估中,研究人員設(shè)置?? = 1,從而計(jì)算 Pass@1,只考慮第一次嘗試的成功率。
?? 2:AutoDev 在測(cè)試生成任務(wù)中的效果如何?
對(duì)于這個(gè)研究問(wèn)題,研究人員修改了 HumanEval 數(shù)據(jù)集,來(lái)評(píng)估 AutoDev 在生成測(cè)試方面的能力。
研究人員考慮人工編寫(xiě)的解決方案,并放棄所提供的人工編寫(xiě)的測(cè)試。
他們指示 AutoDev 為重點(diǎn)方法生成測(cè)試用例,并根據(jù)測(cè)試成功率、重點(diǎn)方法的調(diào)用和測(cè)試覆蓋率對(duì)其進(jìn)行評(píng)估。
研究人員報(bào)告 Pass@1,如果測(cè)試通過(guò)并調(diào)用了焦點(diǎn)方法,則認(rèn)為測(cè)試成功。
此外,研究人員還將 AutoDev 測(cè)試的覆蓋率與人工編寫(xiě)的測(cè)試覆蓋率進(jìn)行了比較。
?? ?? 3:AutoDev 完成任務(wù)的效率如何?
在本研究問(wèn)題中,研究人員將調(diào)查 AutoDev 完成 SE 任務(wù)的效率。
研究人員分析了所需步驟或推理調(diào)用的數(shù)量、所使用命令的分布(如寫(xiě)入、測(cè)試)以及對(duì)話中使用的 token 總數(shù)。
AutoDev 設(shè)置
在本次評(píng)估中,AutoDev 基于 GPT-4 模型(gpt-4-1106-preview)與一個(gè)代理保持一致的設(shè)置。
啟用的操作包括文件編輯、檢索和測(cè)試。
唯一可用的通信命令是表示任務(wù)完成的 stop 命令。
其他命令,如詢問(wèn),都是禁用的,這就要求 AutoDev 在初始目標(biāo)設(shè)定之外,在沒(méi)有人類反饋或干預(yù)的情況下自主運(yùn)行。
實(shí)驗(yàn)結(jié)果
- AutoDev 在代碼生成任務(wù)中的效率如何?
表 1 顯示了,將 AutoDev 與兩種替代方法和零樣本基線進(jìn)行了比較。
研究人員將 AutoDev 與語(yǔ)言代理樹(shù)搜索(LATS)和 Reflexion 進(jìn)行了比較,這兩種方法是截至 2024 年 3 月 HumanEval 排行榜上的兩種領(lǐng)先方法。
零樣本基線(GPT-4)的結(jié)果取自 OpenAI GPT-4 技術(shù)報(bào)告。
AutoDev Pass@1 率為 91.5%,在 HumanEval 排行榜上穩(wěn)居第二。
值得注意的是,這個(gè)結(jié)果是在沒(méi)有額外訓(xùn)練數(shù)據(jù)的情況下獲得的,這將 AutoDev 與 LATS 區(qū)分開(kāi)來(lái),后者達(dá)到了 94.4%。
此外,AutoDev 框架將 GPT-4 性能從 67% 提升至 91.5%,相對(duì)提升了 30%。
這些結(jié)果體現(xiàn)出,AutoDev 有能力顯著提升大模型完成軟件工程任務(wù)方面的表現(xiàn)。
- AutoDev 在測(cè)試生成任務(wù)中的效果如何?
AutoDev 在針對(duì)測(cè)試生成任務(wù)修改的 HumanEval 數(shù)據(jù)集上,獲得了 87.8% Pass@1 分?jǐn)?shù),與使用相同 GPT-4 模型的基線相比,相對(duì)提高了 17%。
AutoDev 生成的正確測(cè)試(包含在 Pass@1 中)實(shí)現(xiàn)了 99.3% 的魯棒覆蓋率,與人工編寫(xiě)的測(cè)試的 99.4% 覆蓋率相當(dāng)。
- AutoDev 完成任務(wù)的效率如何?
圖 3 顯示了,AutoDev 在代碼生成和測(cè)試生成任務(wù)中使用的命令累積數(shù),其中考慮到問(wèn)題 1 和問(wèn)題 2 中每個(gè) HumanEval 問(wèn)題的平均評(píng)估命令數(shù)量。
對(duì)于代碼生成,AutoDev 平均執(zhí)行 5.5 條命令,其中包括 1.8 條寫(xiě)入操作、1.7 條測(cè)試操作、0.92 條停止操作(表示任務(wù)完成)、0.25 條錯(cuò)誤命令,以及最少的檢索(grep、find、cat)、語(yǔ)法檢查操作和通話通信命令。
在「測(cè)試生成」任務(wù)中,命令的平均數(shù)量與「代碼生成」任務(wù)一致。
不過(guò),「測(cè)試生成」任務(wù)涉及的檢索操作更多,錯(cuò)誤操作的發(fā)生率也更高,因此每次運(yùn)行的平均命令總數(shù)為 6.5 條。
在前兩個(gè)問(wèn)題中,為解決每個(gè) HumanEval 問(wèn)題而進(jìn)行的 AutoDev 對(duì)話的平均長(zhǎng)度分別為 1656 和 1863 個(gè) token。
這包括用戶的目標(biāo)、來(lái)自 AI 智能體的信息和來(lái)自評(píng)估環(huán)境的響應(yīng)。
相比之下,GPT-4(基線)的零樣本在每個(gè)任務(wù)中平均使用 200 個(gè) token(估計(jì)值)生成代碼,使用 373 個(gè) token 生成測(cè)試。
雖然 AutoDev 使用了更多的 token,但大量 token 用于測(cè)試、驗(yàn)證和解釋自己生成的代碼,超出了基線方法的范圍。
最后,AutoDev 會(huì)產(chǎn)生與協(xié)調(diào)人工智能智能體、管理對(duì)話以及在 Docker 環(huán)境中執(zhí)行命令相關(guān)的執(zhí)行成本。
接下來(lái),一起看一下 AutoDev 如何執(zhí)行測(cè)試生成任務(wù)。
開(kāi)發(fā)者給到任務(wù):設(shè)定生成遵循特定格式的 pytest 測(cè)試。
AutoDev 智能體啟動(dòng) write-new 命令,提供測(cè)試文件的文件路徑和內(nèi)容。
隨后,AutoDev 智能體觸發(fā)測(cè)試操作,AutoDev 在其安全的 Docker 環(huán)境中運(yùn)行測(cè)試,并給出測(cè)試執(zhí)行報(bào)告 JSON。
然后,AutoDev 開(kāi)始自主執(zhí)行:
AutoDev 智能體在 pytest 輸出中發(fā)現(xiàn)了一個(gè)錯(cuò)誤,認(rèn)識(shí)到需要進(jìn)行修復(fù),以使測(cè)試與函數(shù)的預(yù)期行為保持一致。
繼續(xù)如圖 5 所示,AutoDev 智能體發(fā)出寫(xiě)入命令,指定文件路徑和行號(hào)范圍 (5-5),以重寫(xiě)錯(cuò)誤的斷言語(yǔ)句。
隨后,AutoDev 智能體繼續(xù)執(zhí)行測(cè)試,并測(cè)試成功。
從上面例子中看得出,AutoDev 能夠自我評(píng)估生成的代碼,并解決自身輸出中的錯(cuò)誤。
此外,AutoDev 可以幫助用戶深入了解智能體的操作,并允許智能體在任務(wù)期間進(jìn)行交流。
隨著 Devin、AutoDev 等 AI 工程師的誕生,程序員們的工作可能會(huì)一大部分實(shí)現(xiàn)自動(dòng)化。
參考資料:
https://www.reddit.com/r/singularity/comments/1bfolbj/autodev_automated_aidriven_development_microsoft/
本文來(lái)自微信公眾號(hào):新智元 (ID:AI_era)
廣告聲明:文內(nèi)含有的對(duì)外跳轉(zhuǎn)鏈接(包括不限于超鏈接、二維碼、口令等形式),用于傳遞更多信息,節(jié)省甄選時(shí)間,結(jié)果僅供參考,IT之家所有文章均包含本聲明。