返回顶部
热门问答 更多热门问答
技术文章 更多技术文章

AutoCodeGenTestFix 是一个基于大模型的自动代码生成、测试和修复工具

[复制链接]
链载Ai 显示全部楼层 发表于 4 小时前 |阅读模式 打印 上一主题 下一主题

ingFang SC";text-wrap: wrap;line-height: 1.75;font-size: 15px;margin: 1.5em 8px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">

ingFang SC";text-wrap: wrap;line-height: 1.75;font-size: 15px;margin: 1.5em 8px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">现在,我估计,99.99% 的程序员都在使用 GPT 写代码,但是,我相信很多人碰到了和我一样的问题,就是 GPT 生成的代码,他不一定是可用的,有时候,他可能会漏掉一些分支逻辑,这就导致了我们在使用 GPT 生成代码的时候,需要自己手动检查代码的质量,这个过程是非常耗时的。

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 15px;margin: 1.5em 8px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">为了解决这个问题,我思考了一种方式,那就是让 GPT 自己验证自己生成的代码,如果发现有错误,自己修复这些错误,这样就可以大大提高我们使用 GPT 生成代码的效率。

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 15px;margin: 1.5em 8px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">这不就是妥妥的,打败魔法的终极方法就是靠魔法吗?整个实现的源码在此:

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 15px;margin: 1.5em 8px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">https://github.com/brhoollynodeStudy/AutoCodeGenTestFix/blob/main/main.py ,

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 15px;margin: 1.5em 8px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">下面我们称之为AutoCodeGenTestFix

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 1.2em;font-weight: bold;display: table;margin: 4em auto 2em;padding-right: 0.2em;padding-left: 0.2em;background: rgb(150, 18, 238);color: rgb(255, 255, 255);">项目介绍

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 15px;margin: 1.5em 8px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 15px;letter-spacing: 1.5px;text-wrap: wrap;text-align: left;line-height: 1.75;color: rgb(150, 18, 238);">AutoCodeGenTestFix是一个基于大模型的自动代码生成、测试和修复工具。该项目旨在通过自动化流程,帮助开发者快速生成代码、编写测试用例、执行测试并修复代码,从而提高开发效率和代码质量。项目基于langchain这个库构建,简化了很多工程化的操作。

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 1.2em;font-weight: bold;display: table;margin: 4em auto 2em;padding-right: 0.2em;padding-left: 0.2em;background: rgb(150, 18, 238);color: rgb(255, 255, 255);">解决的问题

这个项目解决的问题,上面已经提到过了,就是让 GPT 自己验证自己生成的代码,如果发现有错误,自己修复这些错误,目的就是保证代码的质量。

项目架构

项目基于以下几个主要组件:

  • CodeGenerationAgent:生成初始代码。

  • TestGenerationAgent:生成相应的单元测试用例。

  • TestExecutionAgent:执行测试用例并获取测试结果。

  • TestResultAgent:分析测试结果。

  • CodeFixAgent:根据测试结果修复代码。

以下是项目的架构图:

+----------------------++----------------------++----------------------++----------------------++----------------------+
||||||||||
|CodeGenerationAgent|--->|TestGenerationAgent|--->|TestExecutionAgent|--->|TestResultAgent|--->|CodeFixAgent|
||||||||
+----------------------++----------------------++----------------------++----------------------++----------------------+

他的工作流程如下:其中最核心的是TestResultAgent,它会根据测试结果,判断代码的质量,如果发现有错误,会调用CodeFixAgent来修复代码,这样保证了代码的质量。

核心部分

#定义CodeGenerationAgent,用于生成初始代码
code_generation_template=PromptTemplate(
input_variables=["requirement"],
template="根据以下需求生成 Python 代码,只返回代码部分,不包含任何说明或解释:\n\n需求:{requirement}\n\n代码:"
)
code_generation_chain=code_generation_template|llm

#定义TestGenerationAgent,用于生成测试用例
test_generation_template=PromptTemplate(
input_variables=["code"],
template="根据以下代码生成 Python 的单元测试用例,只返回测试代码,不包含任何说明或解释:\n\n{code}\n\n测试代码:"
)
test_generation_chain=test_generation_template|llm

这就是左右互搏的核心部分,通过这个核心部分,我们可以实现代码的生成、测试、修复。

使用方式

1. 安装必要的库

首先,确保安装好必要的库:

pipinstalllangchainlangchain_openaipytest

2. 设置 OpenAI API 密钥

将你的 OpenAI API 密钥设置为环境变量,或在代码中直接设置:

importopenai
openai.api_key='your-openai-api-key'#替换为你的OpenAIAPI密钥

4. 示例

以下是一个简单的示例,展示如何使用AutoCodeGenTestFix解决 LeetCode 上的最长公共子串问题:

pythonmain.py"实现一个函数,输入两个字符串s1和s2,返回它们的最长公共子串的长度。"

展望

这个项目目前还在开发中,我会继续完善它,增加更多功能,比如目前可能写一个具体的功能函数是可以胜任的,但是如果是一个前端组件呢?那么自动化测试就是一个非常大的挑战,我会继续努力,让这个项目更加完善。

以下是一些可能的改进方向:

  • 更多大模型支持:支持更多的大模型,提供更多的选择。

  • 前端组件生成:支持生成前端组件代码,并自动生成测试用例。



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

链载AI是专业的生成式人工智能教程平台。提供Stable Diffusion、Midjourney AI绘画教程,Suno AI音乐生成指南,以及Runway、Pika等AI视频制作与动画生成实战案例。从提示词编写到参数调整,手把手助您从入门到精通。
  • 官方手机版

  • 微信公众号

  • 商务合作

  • Powered by Discuz! X3.5 | Copyright © 2025-2025. | 链载Ai
  • 桂ICP备2024021734号 | 营业执照 | |广西笔趣文化传媒有限公司|| QQ