成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

OpenDevin自動(dòng)化代碼生成工具評(píng)述

發(fā)布于 2024-5-31 16:23
瀏覽
0收藏

1.概念

    OpenDevin整個(gè)系統(tǒng)分為前端和后端兩個(gè)主要部分。前端負(fù)責(zé)處理用戶交互和顯示結(jié)果,而后端負(fù)責(zé)處理業(yè)務(wù)邏輯和執(zhí)行 AI Agent。在計(jì)算機(jī)科學(xué)和人工智能領(lǐng)域,"智能體"(Agent)一詞通常用來指代那些在特定環(huán)境中展示出自治性、反應(yīng)性、社交性、主動(dòng)性、推理性以及認(rèn)知性等智能特性的軟件或硬件實(shí)體。AI智能體是一個(gè)具備復(fù)雜推理、記憶和任務(wù)執(zhí)行能力的高級(jí)系統(tǒng)。

2.OpenDevin核心組件

AgentHub

    OpenDevin是一個(gè)集成了多種智能體(Agent)實(shí)現(xiàn)的平臺(tái),包括monologue_agent、codeact_agent、planner_agent、SWE_agent、delegator_agent和dummy_agent等。用戶可以根據(jù)自己的需求,自由選擇使用其中任何一個(gè)智能體。每個(gè)智能體都被設(shè)計(jì)成一個(gè)循環(huán)流程,通過調(diào)用agent.step()方法,在每次迭代中接收當(dāng)前狀態(tài)(State)作為輸入,并輸出相應(yīng)的動(dòng)作(Actions)來執(zhí)行操作或命令。執(zhí)行動(dòng)作后,智能體可能會(huì)接收到一些觀察(Observations)結(jié)果。在實(shí)現(xiàn)智能體的過程中,每個(gè)智能體類都需要實(shí)現(xiàn)step和search_memory這兩個(gè)方法。step方法用于執(zhí)行指令,而search_memory方法則用于從智能體的記憶中查詢信息。此外,OpenDevin還提供了一些輔助方法,如reset(重置智能體狀態(tài))、register(注冊(cè)智能體)、get_cls(獲取智能體類)、list_agents(列出所有智能體)等,這些方法可以幫助用戶更好地管理和維護(hù)智能體的狀態(tài)以及注冊(cè)信息。

狀態(tài) (State)

狀態(tài)對(duì)象是智能體執(zhí)行任務(wù)時(shí)所依賴的重要信息的集合體。它主要包括以下三個(gè)方面的內(nèi)容:

  1. 智能體采取的動(dòng)作的歷史記錄以及這些動(dòng)作產(chǎn)生的觀察結(jié)果。這些觀察結(jié)果可能包括文件的內(nèi)容、命令的輸出等信息。
  2. 自智能體執(zhí)行最近一步動(dòng)作以來,所發(fā)生的一系列動(dòng)作和觀察結(jié)果的軌跡。這些信息有助于智能體追蹤和分析任務(wù)的執(zhí)行過程。
  3. 一個(gè)計(jì)劃(plan)對(duì)象,它包含了智能體的主要目標(biāo)。智能體可以通過AddTaskAction和ModifyTaskAction這兩個(gè)操作來添加和修改子任務(wù),從而更好地實(shí)現(xiàn)其主要目標(biāo)。

動(dòng)作 (Actions)

Agent 有一系列可以執(zhí)行的動(dòng)作列表,其中一些包括:

  • CmdRunAction:在沙盒化的終端中運(yùn)行命令。
  • FileReadAction:讀取文件內(nèi)容。
  • ModifyTaskAction:更改子任務(wù)的狀態(tài)。
  • AgentThinkAction:允許 Agent 添加純文本到歷史記錄中的無操作。
  • AgentFinishAction:停止控制循環(huán),允許用戶輸入新任務(wù)。

觀察 (Observations)

Agent 在執(zhí)行動(dòng)作后可能接收到的觀察結(jié)果列表如下:

  • CmdOutputObservation:命令執(zhí)行輸出。
  • BrowserOutputObservation:瀏覽 URL 后的輸出。
  • FileReadObservation:文件讀取操作的輸出。
  • AgentRecallObservation:Agent 回憶操作的輸出。
  • AgentErrorObservation:Agent 執(zhí)行操作時(shí)發(fā)生錯(cuò)誤的輸出。

前后端布局如下:

OpenDevin自動(dòng)化代碼生成工具評(píng)述-AI.x社區(qū)

OpenDevin自動(dòng)化代碼生成工具評(píng)述-AI.x社區(qū)

3.OpenDevin的能力

OpenDevin支持多種Agent智能體的選擇。以CodeActAgent為例,它是一個(gè)開源的語(yǔ)言模型(LLM),它具有對(duì)文本操作進(jìn)行顯式優(yōu)化的能力。它使用可執(zhí)行的Python代碼來將LLM代理的動(dòng)作統(tǒng)一到一個(gè)統(tǒng)一的操作空間中,稱為CodeAct。借助Python解釋器,CodeAct可以執(zhí)行代碼操作,并通過多輪交互動(dòng)態(tài)修改之前的操作或根據(jù)新的觀察發(fā)出新的操作。CodeActAgent框架可以根據(jù)現(xiàn)有的若干Action-Observation對(duì)的軌跡預(yù)測(cè)下一步需要執(zhí)行什么Action,遵循業(yè)界流行的ReAct反思框架。ReAct的提示模版一般包含這些內(nèi)容的多次重復(fù):

Thought: ...
Action: ...
Observation: ...
... (Repeat many times)

CodeAct的思想是: 由LLM生成的代碼和用戶發(fā)起的消息構(gòu)成Action,在環(huán)境中運(yùn)行代碼就視為執(zhí)行了這個(gè) Action,擴(kuò)大了 Agent 的 action space,用更少的交互次數(shù)完成更多的任務(wù)。在CodeAct的架構(gòu)中,Agent接收來自User和Environment的消息,互相之間進(jìn)行消息通信。同時(shí)使用CoT(Chain of Thoughts)思維樹將任務(wù)進(jìn)行切分,直接將執(zhí)行結(jié)果轉(zhuǎn)為自然語(yǔ)言總結(jié)。Agent會(huì)向 Environment 發(fā)出 Action,生成代碼并執(zhí)行;向 User 發(fā)送 Action 的生成自然語(yǔ)言回復(fù)。User會(huì)向Agent發(fā)送自然語(yǔ)言的請(qǐng)求或者反饋,同時(shí)接收 Agent 的 Action 的生成自然語(yǔ)言回復(fù)。而Environment會(huì)向 Agent 發(fā)送 Action 的執(zhí)行結(jié)果,因?yàn)樗梢酝ㄟ^bash 命令行或 Python 解釋器執(zhí)行 Action 生成的代碼。以下是CodeAct框架的原理圖:

OpenDevin自動(dòng)化代碼生成工具評(píng)述-AI.x社區(qū)

OpenDevin自動(dòng)化代碼生成工具評(píng)述-AI.x社區(qū)

 SWE-Agent是另一種有效的代碼生成智能體。它不僅支持簡(jiǎn)單的代碼生成任務(wù),還支持軟件維護(hù)(例如錯(cuò)誤修復(fù))和軟件演化(如功能添加)等更為復(fù)雜的程序改進(jìn)任務(wù)。其精心定制的 ACI(Agent-Computer Interface) 極大地增強(qiáng)了 Agent 創(chuàng)建和編輯代碼文件、瀏覽完整代碼庫(kù)以及執(zhí)行程序的能力。SWE-agent的核心功能包括:搜索與導(dǎo)航、文件查看器、文件編輯器以及上下文管理。

 SWE-agent 通過搜索與導(dǎo)航,能夠簡(jiǎn)潔地列出所有包含搜索字符串的文件名,減少混淆。導(dǎo)航代碼庫(kù)需要找到適合當(dāng)前任務(wù)的文件和內(nèi)容。常見策略是查找可能有用的術(shù)語(yǔ),如問題中提到的文件、函數(shù)或類定義。SWE-agent 引入了特殊命令 find file、search file 和 search dir,當(dāng)搜索文件名或文件/目錄中的字符串時(shí),這些命令會(huì)輸出搜索結(jié)果的摘要

 當(dāng)搜索到想查看的文件后,可以通過調(diào)用 open 命令打開路徑來使用交互式文件查看器。文件查看器一次最多顯示文件的 100 行窗口,Agent 可以使用 scroll down 和 scroll up 命令移動(dòng)窗口,也可以使用 goto 命令跳至特定行。為了方便文件內(nèi)導(dǎo)航和代碼定位,SWE-agent 顯示打開文件的完整路徑、文件的總行數(shù)、當(dāng)前窗口前后的省略行數(shù)以及每行的行號(hào)(在可見行前添加)。

OpenDevin自動(dòng)化代碼生成工具評(píng)述-AI.x社區(qū)

  在進(jìn)行文件編輯的階段,SWE-agent不僅支持基本的文件瀏覽,還提供了高效的滾動(dòng)和搜索功能。限制每次顯示的代碼行數(shù)為 100 行,旨在提高瀏覽效率且減少信息過載。

OpenDevin自動(dòng)化代碼生成工具評(píng)述-AI.x社區(qū)

為了保持 Agent 上下文的簡(jiǎn)潔性和充分性,SWE-agent 構(gòu)建了一系列詳細(xì)且復(fù)雜的提示詞模板。在每個(gè)步驟中都會(huì)接收到關(guān)于正確使用 bash 和 ACI 命令的指令、文檔和演示。若執(zhí)行代碼錯(cuò)誤,SWE-agent 會(huì)要求重試,直到收到正確生成的響應(yīng)。一旦收到有效響應(yīng),過去的錯(cuò)誤信息將被省略,僅保留最初的。又或者,當(dāng)命令執(zhí)行成功但無輸出時(shí),系統(tǒng)會(huì)提供明確的反饋,增強(qiáng)交互明確性。

SWE-agent的工作流程如下圖,整體上仍然使用了ReAct框架,通過反復(fù)采取行動(dòng)和獲得反饋來與環(huán)境進(jìn)行工作。

OpenDevin自動(dòng)化代碼生成工具評(píng)述-AI.x社區(qū)

在初始化階段,agent會(huì)創(chuàng)建一個(gè)實(shí)例,提供模擬的開發(fā)環(huán)境,并且將整個(gè)交互過程中所有的軌跡存儲(chǔ)到特定的工作目錄中。同時(shí),每個(gè)實(shí)例都會(huì)被審查,以確定是否有任何實(shí)例不符合條件應(yīng)該被跳過。對(duì)選定的實(shí)例進(jìn)行環(huán)境重置,將其恢復(fù)到該實(shí)例的初始狀態(tài),并獲取初始信息。

執(zhí)行階段,首先為 Agent 配置適當(dāng)?shù)膮?shù)并初始化其內(nèi)部模型,以準(zhǔn)備迎接下游任務(wù)。在一個(gè)交互循環(huán)中,Agent首先會(huì)根據(jù)當(dāng)前的文件狀態(tài)state和觀察結(jié)果observation,生成對(duì)應(yīng)的思考thought和行動(dòng)action。在這個(gè)過程中,實(shí)例會(huì)根據(jù) Agent 提出的行動(dòng)執(zhí)行相應(yīng)的命令,結(jié)果將被更新到觀察結(jié)果中。每次交互后, Agent 的行動(dòng)、觀察結(jié)果和響應(yīng)的行為軌跡都會(huì)被保存。當(dāng) Agent 的行動(dòng)中包含“submit”命令時(shí),意味著問題已解決,同時(shí)保存補(bǔ)丁patch并標(biāo)記該問題為已完成done = True,交互循環(huán)隨之結(jié)束。

    保存階段,Agent 在整個(gè)交互過程中生成的預(yù)測(cè)結(jié)果以及行動(dòng)軌跡都會(huì)被記錄。

3.OpenDevin的體驗(yàn)

    OpenDevin可以在Windows、Linux等操作系統(tǒng)進(jìn)行部署,同時(shí)提供前端UI頁(yè)面。詳細(xì)的前后端部署流程請(qǐng)見 OpenDevin。使用Ollama部署大語(yǔ)言模型,并在如下的初始化頁(yè)面中選擇已經(jīng)部署好的各項(xiàng)服務(wù)。

    用戶可以根據(jù)自己的偏好和需求,選擇不同的智能體Agent。不同Agent可以執(zhí)行的任務(wù)以及流程會(huì)有些不同。以下是分別使用SWE-agent和CoderAgent對(duì)同一個(gè)問題進(jìn)行回答的結(jié)果,兩者都使用codeqwen1.5-7B作為基座模型。可以看到SWE-agent將用戶輸入的任務(wù)拆解成編寫代碼、分不同語(yǔ)言實(shí)現(xiàn)以及寫入3個(gè)主要步驟,能完成一系列的任務(wù)而非只是對(duì)話問答。

OpenDevin自動(dòng)化代碼生成工具評(píng)述-AI.x社區(qū)

OpenDevin自動(dòng)化代碼生成工具評(píng)述-AI.x社區(qū)

使用SWE-agent作為agent,配合GPT4對(duì)問題的理解和生成文本能力,可以讓大語(yǔ)言模型完成項(xiàng)目級(jí)代碼的生成。下圖顯示了通過指令讓OpenDevin訪問github代碼庫(kù),復(fù)制到本地并新建分支,完成文件的修改并且push到遠(yuǎn)程的一系列流程,大語(yǔ)言模型先后完成了任務(wù)拆解,規(guī)劃執(zhí)行并且調(diào)用各項(xiàng)工具的工作流程,展示了其能夠進(jìn)行自主生成代碼并提交的能力。

OpenDevin自動(dòng)化代碼生成工具評(píng)述-AI.x社區(qū)

OpenDevin自動(dòng)化代碼生成工具評(píng)述-AI.x社區(qū)

OpenDevin自動(dòng)化代碼生成工具評(píng)述-AI.x社區(qū)

參考文獻(xiàn)

1. Devin: https://www.cognition-labs.com/introducing-devin

2. SWE-agent: https://github.com/princeton-nlp/SWE-agent

3. CodeAct-agent: [2402.01030] Executable Code Actions Elicit Better LLM Agents (arxiv.org)

4. OpenDevin/SWE-bench: Enhanced fork of SWE-bench, tailored for OpenDevin's ecosystem. (github.com)

5. Qwen/Qwen1.5-14B-Chat · Hugging Face

6. 2404.10225 (arxiv.org)

7. 2405.15793 (arxiv.org)

本文轉(zhuǎn)載自?? AI遇見云??,作者:魏至強(qiáng)

收藏
回復(fù)
舉報(bào)
回復(fù)
相關(guān)推薦
主站蜘蛛池模板: 成人在线视频网站 | 午夜精品久久久久99蜜 | 亚洲视频一区 | 永久网站| 欧美无乱码久久久免费午夜一区 | 久久久久久久国产 | 成人精品影院 | 91视视频在线观看入口直接观看 | 亚洲国产精品视频 | 欧美在线a | 国产精品精品视频一区二区三区 | 亚洲精品无人区 | 欧美精品片 | 国产免费播放视频 | 亚洲97 | 国产精品欧美精品 | 免费观看一级视频 | 日韩在线视频一区 | 成年人网站免费视频 | 狠狠色狠狠色综合日日92 | 69av网| 欧美理论片在线 | 西西裸体做爰视频 | 日韩精品一区二区三区四区视频 | 久久亚洲天堂 | 久久久精品一区 | 精品日韩电影 | 亚洲系列第一页 | 久久综合av | 亚洲一区自拍 | 欧美日本免费 | 精品国产乱码久久久久久影片 | 欧美精品一区二区三区蜜桃视频 | 欧美一区二区三区在线 | 欧美一区二区三区久久精品 | 在线视频 欧美日韩 | 日韩在线播放中文字幕 | 日韩高清一区 | 天天操夜夜艹 | 成人在线看片 | 国产精品美女久久久久久不卡 |