AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


AutoCodeGenTestFix 是一个基于大模型的自动代码生成、测试和修复工具
发布日期:2024-06-26 09:40:15 浏览次数: 1900


现在,我估计,99.99% 的程序员都在使用 GPT 写代码,但是,我相信很多人碰到了和我一样的问题,就是 GPT 生成的代码,他不一定是可用的,有时候,他可能会漏掉一些分支逻辑,这就导致了我们在使用 GPT 生成代码的时候,需要自己手动检查代码的质量,这个过程是非常耗时的。

为了解决这个问题,我思考了一种方式,那就是让 GPT 自己验证自己生成的代码,如果发现有错误,自己修复这些错误,这样就可以大大提高我们使用 GPT 生成代码的效率。

这不就是妥妥的,打败魔法的终极方法就是靠魔法吗?整个实现的源码在此:

https://github.com/brhoollynodeStudy/AutoCodeGenTestFix/blob/main/main.py ,

下面我们称之为 AutoCodeGenTestFix

项目介绍

AutoCodeGenTestFix 是一个基于大模型的自动代码生成、测试和修复工具。该项目旨在通过自动化流程,帮助开发者快速生成代码、编写测试用例、执行测试并修复代码,从而提高开发效率和代码质量。项目基于 langchain 这个库构建,简化了很多工程化的操作。

解决的问题

这个项目解决的问题,上面已经提到过了,就是让 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. 安装必要的库

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

pip install langchain langchain_openai  pytest

2. 设置 OpenAI API 密钥

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

import openai
openai.api_key = 'your-openai-api-key'  # 替换为你的 OpenAI API 密钥

4. 示例

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

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

展望

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

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

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

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




53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询