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这就是左右互搏的核心部分,通过这个核心部分,我们可以实现代码的生成、测试、修复。
首先,确保安装好必要的库:
pipinstalllangchainlangchain_openaipytest
将你的 OpenAI API 密钥设置为环境变量,或在代码中直接设置:
importopenai
openai.api_key='your-openai-api-key'#替换为你的OpenAIAPI密钥以下是一个简单的示例,展示如何使用AutoCodeGenTestFix解决 LeetCode 上的最长公共子串问题:
pythonmain.py"实现一个函数,输入两个字符串s1和s2,返回它们的最长公共子串的长度。"
这个项目目前还在开发中,我会继续完善它,增加更多功能,比如目前可能写一个具体的功能函数是可以胜任的,但是如果是一个前端组件呢?那么自动化测试就是一个非常大的挑战,我会继续努力,让这个项目更加完善。
以下是一些可能的改进方向:
•更多大模型支持:支持更多的大模型,提供更多的选择。
•前端组件生成:支持生成前端组件代码,并自动生成测试用例。
| 欢迎光临 链载Ai (https://www.lianzai.com/) | Powered by Discuz! X3.5 |