SWE-Agent:普林斯顿大学开源,和Devin一样的软件工程师!

云渲染与流化平台开发与运维人工智能与算法

Aitrainee | 公众号:AI进修生

🌟SWE-agent 将llm(例如GPT-4)转变为 软件工程代理 ,它会处理 GitHub 问题并尝试使用 GPT-4 或你选择的 LLM 自动修复它。

picture.image

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

Hello,大家好啊,你可能还记得认知实验室的 Devin ,这家公司正在寻求 20 亿美元 的估值,目标是打造世界上 第一个人工智能软件工程师 。虽然有几个开源项目(比如 Thea 和 open Devin)试图复制 Devin 的功能,但我们一直没有关于这些开源项目性能的数据。直到现在,出现了一个新的开源项目叫做 SWE-agent ,它代表软件工程代理,表现非常接近 Devin。

在 SWE-bench 测试中,Devin 的 最高精度是 13.86% 。SWE-agent 的表现非常接近这一数值,甚至可能在某些情况下表现得更好。Devin 团队测试了 25% 的 SWE 基准测试数据,而 SWE-agent 在整个数据集上表现良好。更棒的是,SWE-agent 只需要大约 93 秒 就能完成任务,而 Devin 需要 大约 5 分钟

SWE-agent 的工作原理是通过设计简单的 LM-centric 命令和反馈格式,让大模型更容易浏览仓库、查看、编辑和执行代码文件。我们称之为 🤖 Agent-Computer Interface (ACI)

就像语言模型需要好的提示工程一样,好的 ACI 设计 也能大大提升代理的效果。我们的研究显示,没有经过精心调试的 ACI 的基础代理表现远不如 SWE-agent。

在设计 ACI 的过程中,项目研究团队发现了一些非常有用的功能,并把它们集成到了 SWE-agent 中:

    1. 语法检查 :当编辑命令发出时,我们会运行一个 linter,如果代码语法不正确,编辑命令不会通过。
    1. 专用文件查看器 :我们为代理配备了一个特别设计的文件查看器,而不是简单地显示文件内容。这个查看器每次只显示 100 行,并且有上下滚动和搜索命令。
    1. 全目录字符串搜索命令 :这个工具可以简洁地列出每个有匹配项的文件。我们发现,如果显示太多上下文,模型反而会感到困惑。
    1. 命令反馈 :当命令没有输出时,我们会返回一条消息:“Your command ran successfully and did not produce any output.”

这个项目由普林斯顿大学的研究人员开发和维护,完全开源。他们还有一个 Discord 服务器和演示网站,大家可以去看看。从实现的角度来看,SWE-agent 非常简单和优雅。

picture.image

目前,SWE-agent 专注于 GitHub repos ,未来可能会扩展到其他软件工程任务。

现如何设置和使用 SWE-agent?

  1. 当 SWE-agent 收到一个问题时,它会提出一个计划,比如首先复制所描述的错误。

  2. 它会创建一个新的文件来重现这个错误,然后运行代码看看能不能遇到同样的问题。

  3. 确认问题后,它会一步步找到解决方案,查看代码,找到问题所在,修复问题,最后发出拉取请求。

✨ 演示&教程

✨ 使用 SWE-agent 作为开发工具

提供了一个命令行工具和一个图形网页界面:

picture.image

使用Docker部署

除了从源码安装 SWE-agent,你也可以直接使用 Docker 运行该软件。

    1. 安装 Docker,然后在本地启动 Docker。
    1. 运行 docker pull sweagent/swe-agent:latest
    1. 将你的 API 令牌添加到文件 keys.cfg 中,如 此处 所述,或者将它们作为环境变量传递。

运行命令行界面

假设你在当前目录中创建了 keys.cfg,运行


      
      
          

        docker run 
        --
        rm
         
        -
        it 
        -
        v 
        /
        var
        /
        run
        /
        docker
        .
        sock
        :/
        var
        /
        run
        /
        docker
        .
        sock \
          

          
        -
        v $
        (
        pwd
        )/
        keys
        .
        cfg
        :/
        app
        /
        keys
        .
        cfg \
          

          sweagent
        /
        swe
        -
        agent
        -
        run
        :
        latest \
          

          python run
        .
        py 
        --
        image\_name
        =
        sweagent
        /
        swe
        -
        agent
        :
        latest \
          

          
        --
        model\_name gpt4 \
          

          
        --
        data\_path https
        ://
        github
        .
        com
        /
        pvlib
        /
        pvlib
        -
        python
        /
        issues
        /
        1603
         \
          

          
        --
        config\_file config
        /
        default\_from\_url
        .
        yaml  
        --
        skip\_existing
        =
        False
      
    

!!! 提示 "Windows" 如果你在 Windows 上使用 Docker,使用 -v //var/run/docker.sock:/var/run/docker.sock (双斜杠)进行转义(更多信息)。

如果你想以环境变量的形式传递密钥,使用


      
      
          

        docker run 
        --
        rm
         
        -
        it 
        -
        v 
        /
        var
        /
        run
        /
        docker
        .
        sock
        :/
        var
        /
        run
        /
        docker
        .
        sock \
          

          
        -
        e GITHUB\_TOKEN
        =
        "yourgithubtoken"
         \
          

          
        -
        e OPENAI\_API\_KEY
        =
        "youropenaikey"
         \
          

          sweagent
        /
        swe
        -
        agent
        -
        run
        :
        latest \
          

          
        # 以上命令的其余部分
      
    

!!! 警告 "获取更新" 尽管镜像 sweagent/swe-agent:latest 具有 latest 标签, 但它并不会在你每次运行 docker run 时自动更新。相反, 你需要手动运行


      
      
          

        ```bash
          

        docker pull sweagent/swe-agent-run:latest
          

        docker pull sweagent/swe-agent:latest
          

        ```
          

          

        定期更新。
      
    

!!! 提示 "检索生成的文件" 可选的 --rm 标志会在命令终止后删除 Docker 容器。因此,要从容器中检索文件(例如生成的补丁文件),请移除此标志。

运行 Web 服务器

!!! 提示 "提示" 请同时阅读上一节中的提示,了解如何传递环境变量和保持最新。

要运行 Web 服务器,请确保转发端口 3000:


      
      
          

        docker run 
        -
        p 
        3000
        :
        3000
         
        -
        it 
        -
        v 
        /
        var
        /
        run
        /
        docker
        .
        sock
        :/
        var
        /
        run
        /
        docker
        .
        sock \
          

          
        -
        v $
        (
        pwd
        )/
        keys
        .
        cfg
        :/
        app
        /
        keys
        .
        cfg \
          

          sweagent
        /
        swe
        -
        agent
        -
        run
        :
        latest bash start\_web\_ui
        .
        sh
      
    

!!! 提示 "更多提示" 如果遇到问题,请参阅 安装问题部分 获取更多帮助。

知音难求,自我修炼亦艰

抓住前沿技术的机遇,与我们一起成为创新的超级个体

(把握AIGC时代的个人力量)

picture.image

点这里👇关注我,记得标星哦~

一键三连「分享」、「点赞」和「在看」

科技前沿进展日日相见 ~

picture.image

0
0
0
0
关于作者
关于作者

文章

0

获赞

0

收藏

0

相关资源
字节跳动 XR 技术的探索与实践
火山引擎开发者社区技术大讲堂第二期邀请到了火山引擎 XR 技术负责人和火山引擎创作 CV 技术负责人,为大家分享字节跳动积累的前沿视觉技术及内外部的应用实践,揭秘现代炫酷的视觉效果背后的技术实现。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论