前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >GPT-Migrate——一款可将代码库从一个框架或语言迁移到另一个框架或语言的AI应用

GPT-Migrate——一款可将代码库从一个框架或语言迁移到另一个框架或语言的AI应用

作者头像
山行AI
发布2023-08-10 13:43:51
4980
发布2023-08-10 13:43:51
举报
文章被收录于专栏:山行AI山行AI

前言

在人工智能兴起的当下,AI正在重塑着很多行业。今天介绍的是一款位于github热榜榜首的,可轻松将您的代码库从一个框架或语言迁移到另一个框架或语言的AI应用:GPT-Migrate。

GPT-Migrate

轻松将您的代码库从一个框架或语言迁移到另一个框架或语言。

⚡️ 使用方法

1.安装 Docker 并确保它正在运行。建议使用至少 GPT-4,最好是 GPT-4-32k。2.设置您的OpenAI API 密钥[1]并安装 Python 的依赖包:export OPENAI_API_KEY=<your key>pip install -r requirements.txt3.使用您要迁移的目标语言运行主要脚本:python main.py --targetlang nodejs4.(可选)如果您希望 GPT-Migrate 在对迁移后的应用程序进行测试之前验证所创建的单元测试,请确保您的现有应用程序已暴露,并使用 --sourceport 标志。要针对基准执行此操作,请打开一个单独的终端,导航到 benchmarks/language-pair/source 目录,并在安装所需的依赖后运行 python app.py。它将在端口 5000 上进行暴露。使用此选项时,请使用 --sourceport 标志。

默认情况下,此脚本将执行 flask-nodejs 基准测试。您可以使用下面的选项指南指定语言、源目录和许多其他内容。

💡 选项

您可以通过将以下选项传递给 main.py 脚本来自定义 GPT-Migrate 的行为:

--model:要使用的大型语言模型。默认为 "gpt-4-32k"。•--temperature:AI 模型的温度设置。默认为 0。•--sourcedir:包含要迁移的代码的源目录。默认为 "../benchmarks/flask-nodejs/source"。•--sourcelang:要迁移的代码的源语言或框架。无默认值。•--sourceentry:相对于源目录的入口文件名。例如,对于 Python,可以是 app.pymain.py 文件。默认为 "app.py"。•--targetdir:迁移后代码所在的目录。默认为 "../benchmarks/flask-nodejs/target"。•--targetlang:迁移的目标语言或框架。默认为 "nodejs"。•--operating_system:Dockerfile 的操作系统。常见选项为 'linux''windows'。默认为 'linux'。•--testfiles:包含要测试函数的文件的逗号分隔列表。例如,对于具有 REST 端点的 Python 应用程序,可以是 app.pymain.py 文件。包括完整的相对路径。默认为 "app.py"。•--sourceport:(可选)针对原始应用程序进行单元测试的端口。无默认值。如果不包含,GPT-Migrate 将不会尝试针对原始应用程序测试单元测试文件。•--targetport:针对迁移后应用程序进行单元测试的端口。默认为 8080。•--guidelines:在迁移期间希望遵循的风格或小的功能性指南。例如,“使用制表符,而不是空格”。默认为空字符串。•--step:要运行的步骤。选项为 'setup''migrate''test''all'。默认为 'all'

例如,要将 Python 代码库迁移到 Node.js,您可以运行以下命令:

代码语言:javascript
复制
python main.py --sourcedir /path/to/my-python-app --sourceentry app.py --targetdir /path/to/my-nodejs-app --targetlang nodejs

这将获取 ./my-python-app 中的 Python 代码,将其迁移到 Node.js,并将生成的代码写入 ./my-nodejs-app

使用 GPT 进行辅助调试

https://user-images.githubusercontent.com/25165841/250233075-eff1a535-f40e-42e4-914c-042c69ba9195.mp4

🤖 工作原理

对于从 --sourcelang 迁移到 --targetlang 的代码库迁移...

1.GPT-Migrate 首先为 --targetlang 创建一个 Docker 环境,该环境可以通过参数传入,也可以由 GPT-Migrate 自动评估。2.它递归评估您现有的代码,以识别第三方 --sourcelang 依赖项,并选择相应的 --targetlang 依赖项。3.它从指定的 --sourceentry 文件开始,递归重建新的 --targetlang 代码。可以使用 --step migrate 选项启动此步骤。4.它使用新的代码库在 Docker 环境中启动应用程序,并在 --targetport 上公开,根据需要进行迭代调试。5.它使用 Python 的 unittest 框架编写单元测试,并根据需要可选地对这些单元测试进行与现有应用程序的集成测试,前提是现有应用程序正在运行并在 --sourceport 上公开。可以使用 --step test 选项启动此步骤。6.它使用这些单元测试对 --targetport 上的新代码进行测试。7.它使用日志、错误消息、相关文件和目录结构的上下文,为您迭代调试代码。它会选择一个或多个操作(移动、创建或编辑文件)然后执行它们。如果它想要执行任何类型的 shell 脚本(移动文件),它将首先征求许可。最后,如果在任何时候它卡住了或用户结束了调试循环,它将输出用户按照下一步迁移的指示进行操作。8.新的代码库已完成,并存在于 --targetdir 目录中。

📝 提示词设计

子问题以以下方式组织:

HIERARCHY:这定义了偏好的概念。有4个偏好级别,每个级别的优先级高于前一个级别。•p1:偏好级别 1。这些是最通用的提示,包括广泛的准则。•p2:偏好级别 2。这些是更具体的提示,包括特定类型操作的准则(例如编写代码的最佳实践和理念)。•p3:偏好级别 3。这些是更具体的提示,包括特定操作的指导(例如创建特定文件、调试、编写测试)。•p4:偏好级别 4。这些是最具体的提示,包括输出格式。

提示是由多个子提示组合而成。这个标记和可组合性的概念可以扩展到其他属性,使提示更加健壮。这是我们非常感兴趣并积极探索的领域。

在这个存储库中,prompt_constructor() 函数接受一个或多个子提示,并生成一个字符串,该字符串可以用变量格式化。例如,GUIDELINESp1WRITE_CODEp2 等:

代码语言:javascript
复制
prompt = prompt_constructor(HIERARCHY, GUIDELINES, WRITE_CODE, DEBUG_TESTFILE, SINGLEFILE).format(targetlang=targetlang,buggyfile=buggyfile)

📈 性能

GPT-Migrate目前处于开发阶段,还未准备好供生产使用。例如,在相对简单的基准测试中,它可以顺利处理像Python或JavaScript这样的"简单"语言的约50%的情况,但在处理C++或Rust等更复杂的语言时,可能需要一些人工辅助。

✅ 基准测试

我们正在积极努力构建一个健壮的基准测试库。如果您有一个代码库想要贡献,请提交一个 PR!目前的基准测试是从头开始构建的:REST API 应用程序,具有一些端点和依赖文件。

🧗 路线图

以下是待办事项列表中的改进计划。如果您想要完成其中的任何一项或其他任务,请提交一个 PR :)

高优先级

•根据窗口大小添加限制模型输入大小的逻辑。请参见问题#2[2]。

中等紧急性

•为整个项目添加单元测试,以提高可靠性和持续集成/持续交付 (CI/CD)•添加更多的基准测试示例,特别是更大的代码库•添加功能,让LLM在调试过程中能够访问其他文件中的依赖函数•添加对其他LLM的支持

低紧急性

•允许模型在调试过程中进行互联网搜索请求•识别并解决特定语言的问题

📣 行动呼吁

我们正在寻找有才华的贡献者。无论您对特定语言或框架有特别的热情,想要帮助创建更强大的测试套件,还是对如何改进项目有有趣的想法,我们都欢迎您的加入!

🛠 专家辅助迁移

由于请求的增加,我们决定创建一个标准化的流程来帮助人们进行迁移。如果您是一个需要帮助进行大规模迁移的公司,或者是愿意提供帮助的专家,请访问以下网站:https://gpt-migrate.com/

声明

本文翻译整理自:https://github.com/0xpayne/gpt-migrate,感兴趣的请点赞、收藏。

References

[1] OpenAI API 密钥: https://platform.openai.com/account/api-keys [2] #2: https://github.com/0xpayne/gpt-migrate/issues/2

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-07-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 山行AI 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • GPT-Migrate
  • ⚡️ 使用方法
    • 💡 选项
      • 🤖 工作原理
        • 📝 提示词设计
      • 📈 性能
        • ✅ 基准测试
          • 🧗 路线图
            • 📣 行动呼吁
              • 🛠 专家辅助迁移
                • References
            • 声明
            相关产品与服务
            腾讯云服务器利旧
            云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档