AutoCodeGenTestFix 是一个基于大模型的自动代码生成、测试和修复工具
来源:互联网
时间:2026-08-13 14:08:10
可以说,当下几乎所有程序员都在用GPT写代码。但有个问题很普遍,也让人头疼:GPT生成的代码,不一定能用。它可能漏掉某个分支逻辑,导致代码根本跑不通,或者运行结果和预期不符。这样一来,用完之后还得自己人肉检查一遍质量,而这个环节恰恰非常耗时。
怎么解决?想了个挺直接的办法——让GPT自己验证自己生成的代码。如果发现错误,就让GPT自己动手修复。一个闭环,彻底把人工审查的环节给解放出来。用魔法打败魔法,不是很典吗?
整个实现的核心代码在:
https://github.com/brhoollynodeStudy/AutoCodeGenTestFix/blob/main/main.py
我们把这个项目叫作 `AutoCodeGenTestFix`。
## 项目介绍
`AutoCodeGenTestFix` 是一个基于大语言模型的自动代码生成、测试和修复工具。它的核心目标只有一个:通过自动化流程,帮开发者快速生成代码、自动写好测试用例、执行测试,再根据测试结果自动修复代码。整个项目基于 `langchain` 构建,简化了大量工程化操作,让思路本身更清晰地暴露出来。
## 解决的问题
前面说了,就是让AI自我校验:生成代码 → 自动写测试 → 跑测试 → 分析结果 → 修代码。保证代码质量这件事,不再靠人工死磕,而是变成一个自动化循环。
## 项目架构
整个系统由五个主要的Agent组成,各司其职:
- **CodeGenerationAgent**:根据需求生成初始代码。
- **TestGenerationAgent**:为生成的代码自动编写单元测试。
- **TestExecutionAgent**:执行测试用例,拿到测试结果。
- **TestResultAgent**:分析测试结果,判断代码是否存在问题。
- **CodeFixAgent**:一旦发现问题,就根据测试结果进行修复。
架构图如下:
```
+----------------------+ +----------------------+ +----------------------+ +----------------------+ +----------------------+
| | | | | | | | | |
| CodeGenerationAgent | ---> | TestGenerationAgent | ---> | TestExecutionAgent | ---> | TestResultAgent | ---> | CodeFixAgent |
| | | | | | | | | |
+----------------------+ +----------------------+ +----------------------+ +----------------------+ +----------------------+
```
这里面最核心的是 `TestResultAgent`。它的职责是判断代码质量,一旦发现错误,就触发 `CodeFixAgent` 进行修复。整条链路闭环运转,保证了最终输出的代码是可靠的。
### 核心部分
实现“左右互搏”的关键逻辑在Prompt定义里。这里直接看代码:两个Agent的Prompt都很干净,一个负责生成代码,一个负责生成对应的测试用例。
```python
# 定义 CodeGenerationAgent,用于生成初始代码
code_generation_template = PromptTemplate(
input_variables=["requirement"],
template="根据以下需求生成 Python 代码,只返回代码部分,不包含任何说明或解释:nn需求:{requirement}nn代码:"
)
code_generation_chain = code_generation_template | llm
# 定义 TestGenerationAgent,用于生成测试用例
test_generation_template = PromptTemplate(
input_variables=["code"],
template="根据以下代码生成 Python 的单元测试用例,只返回测试代码,不包含任何说明或解释:nn{code}nn测试代码:"
)
test_generation_chain = test_generation_template | llm
```
通过这两个核心Prompt,整个“代码生成→测试→修复”的循环得以打通。
## 使用方式
### 1. 安装必要的库
确保环境中安装了必要的依赖:
```
pip install langchain langchain_openai pytest
```
### 2. 设置 OpenAI API 密钥
将你的 OpenAI API 密钥配置为环境变量,或者在代码中直接设置:
```python
import openai
openai.api_key = 'your-openai-api-key' # 替换为你的 OpenAI API 密钥
```
### 4. 示例
用一个LeetCode经典题来演示:求最长公共子串的长度。执行下面这一条命令即可:
```
python main.py "实现一个函数,输入两个字符串 s1 和 s2,返回它们的最长公共子串的长度。"
```
## 展望
这个项目目前还远未成熟,后续会持续迭代,补充更多功能。当前写一个具体的功能函数已经可以胜任,但如果是前端组件呢?自动化测试变得非常棘手。这是一个很大的挑战,也是接下来要啃的硬骨头。
一些值得探索的方向:
- **更多大模型支持**:接入更多模型,给用户更多选择。
- **前端组件生成**:打通前端代码生成和自动测试的链路,让AI不仅能写后端逻辑,也能生成带UI的组件,并自己完成测试验证。 -
- 关于宇宙的好的网名有哪些
- 角色扮演 | 1
- 网名