GPT-Engineer预提示工程与定制化配置
GPT-Engineer预提示工程与定制化配置【免费下载链接】gpt-engineer项目地址: https://gitcode.com/gh_mirrors/gpt/gpt-engineer...
GPT-Engineer预提示工程与定制化配置
【免费下载链接】gpt-engineer 项目地址: https://gitcode.com/gh_mirrors/gpt/gpt-engineer
GPT-Engineer的预提示系统是其核心架构的重要组成部分,通过一系列精心设计的模板文件来指导AI模型生成高质量的代码。该系统采用模块化设计理念,包含entrypoint、generate、improve、clarify等多个关键文件,每个文件承担特定角色,共同构成完整的代码生成工作流。系统通过PrepromptsHolder类管理预提示文件的加载和使用,支持高度定制化配置,用户可以通过--use-custom-preprompts参数指定自定义预提示目录,实现AI代理身份特征修改、跨项目记忆保持和领域特定优化。
预提示(preprompts)系统工作机制
GPT-Engineer 的预提示系统是其核心架构的重要组成部分,它通过一系列精心设计的模板文件来指导 AI 模型生成高质量的代码。这个系统采用了模块化的设计理念,每个预提示文件都承担着特定的角色,共同构成了一个完整的代码生成工作流。
预提示文件结构与功能
预提示系统包含多个关键文件,每个文件都有其独特的作用:
预提示文件 | 主要功能 | 使用场景 |
---|---|---|
entrypoint |
生成项目入口脚本 | 创建运行和依赖安装脚本 |
generate |
代码生成核心逻辑 | 新项目代码生成阶段 |
improve |
代码改进指导 | 现有代码优化阶段 |
clarify |
需求澄清机制 | 模糊需求交互澄清 |
file_format |
文件格式规范 | 代码文件结构标准化 |
file_format_diff |
差异格式规范 | 代码改进时的差异格式 |
file_format_fix |
修复格式规范 | 代码修复时的格式要求 |
philosophy |
编码哲学指导 | 代码设计原则和最佳实践 |
roadmap |
项目规划指导 | 项目架构和发展方向 |
预提示加载机制
GPT-Engineer 通过 PrepromptsHolder
类来管理预提示文件的加载和使用。这个类采用磁盘存储的方式,从指定目录读取所有预提示文件:
class PrepromptsHolder:
"""预提示文本的持有器,从磁盘存储中检索预提示文本"""
def __init__(self, preprompts_path: Path):
self.preprompts_path = preprompts_path
def get_preprompts(self) -> Dict[str, str]:
preprompts_repo = DiskMemory(self.preprompts_path)
return {file_name: preprompts_repo[file_name] for file_name in preprompts_repo}
系统提示构建流程
预提示系统通过组合不同的预提示文件来构建完整的系统提示。核心的构建函数展示了这一机制:
代码生成阶段的工作机制
在代码生成阶段,系统使用 setup_sys_prompt
函数来构建完整的系统提示:
def setup_sys_prompt(preprompts: MutableMapping[Union[str, Path], str]) -> str:
return (
preprompts["roadmap"]
+ preprompts["generate"].replace("FILE_FORMAT", preprompts["file_format"])
+ "\nUseful to know:\n"
+ preprompts["philosophy"]
)
这个组合过程确保了 AI 模型能够获得全面的指导信息,包括项目规划、代码生成规范和编码哲学。
代码改进阶段的工作机制
对于现有代码的改进,系统使用 setup_sys_prompt_existing_code
函数:
def setup_sys_prompt_existing_code(preprompts: MutableMapping[Union[str, Path], str]) -> str:
return (
preprompts["roadmap"]
+ preprompts["improve"].replace("FILE_FORMAT", preprompts["file_format_diff"])
+ "\nUseful to know:\n"
+ preprompts["philosophy"]
)
入口点生成机制
入口点生成是预提示系统的另一个重要功能,它专门用于创建项目的运行脚本:
def gen_entrypoint(ai: AI, prompt: Prompt, files_dict: FilesDict,
memory: BaseMemory, preprompts_holder: PrepromptsHolder) -> FilesDict:
preprompts = preprompts_holder.get_preprompts()
messages = ai.start(
system=(preprompts["entrypoint"]),
user=user_prompt + "\nInformation about the codebase:\n\n" + files_dict.to_chat(),
step_name=curr_fn(),
)
定制化配置支持
预提示系统支持高度定制化,用户可以通过 --use-custom-preprompts
参数指定自定义的预提示目录。这种设计使得用户能够:
- 修改 AI 代理的身份特征:通过调整预提示内容来改变 AI 的行为模式
- 跨项目记忆保持:定制预提示可以让 AI 在不同项目间保持一致的编码风格
- 领域特定优化:针对特定技术栈或业务领域进行专门优化
实际工作流程示例
以下是一个完整的预提示系统工作流程示例:
技术实现细节
预提示系统的技术实现基于以下几个核心组件:
- 磁盘存储接口:使用
DiskMemory
类来管理预提示文件的读写操作 - 字典映射:将文件名映射到文件内容,便于快速检索和使用
- 模板替换:支持占位符替换(如
FILE_FORMAT
),实现动态内容生成 - 模块化组合:通过函数式编程方式组合不同的预提示内容
这种设计使得预提示系统既保持了灵活性,又确保了性能效率,能够适应各种复杂的代码生成场景。
通过深入了解 GPT-Engineer 的预提示系统工作机制,开发者可以更好地利用这一强大工具,实现更精准、高效的代码生成和定制化开发体验。
generate/entrypoint/improve等核心提示模板
GPT-Engineer的核心提示模板系统是其代码生成能力的基石,通过精心设计的预提示(preprompts)来指导AI模型生成高质量、结构化的代码。这些模板不仅定义了代码生成的行为模式,还确保了输出的一致性和功能性。
核心提示模板架构
GPT-Engineer的提示模板系统采用模块化设计,每个模板承担特定的职责:
generate模板:新项目生成引擎
generate模板是创建新项目的核心指令集,其设计哲学强调系统性和完整性:
# generate模板核心结构示意
generate_prompt = """
Think step by step and reason yourself to the correct decisions...
First lay out the names of the core classes, functions, methods...
FILE_FORMAT # 此处会被替换为file_format模板内容
You will start with the "entrypoint" file, then go to the ones that are imported...
Please note that the code should be fully functional. No placeholders.
Follow language and framework appropriate best practices...
Make sure that files contain all imports, types etc...
Ensure to implement all code, if you are unsure, write a plausible implementation.
Include module dependency or package manager dependency definition file.
Before you finish, double check that all parts of the architecture is present.
When you are done, write finish with "this concludes a fully working implementation".
"""
generate模板的关键特性:
特性 | 描述 | 重要性 |
---|---|---|
逐步推理 | 要求AI模型进行系统性思考 | 确保逻辑完整性 |
架构优先 | 先定义核心类和方法结构 | 建立清晰的项目框架 |
入口点优先 | 从entrypoint文件开始生成 | 保持代码组织有序 |
完全功能 | 禁止使用占位符 | 保证代码可立即运行 |
依赖管理 | 包含包管理器定义文件 | 确保环境一致性 |
entrypoint模板:运行指令生成器
entrypoint模板专门用于生成项目运行指令,其设计简洁而实用:
You will get information about a codebase that is currently on disk in the current folder.
The user will ask you to write a script that runs the code in a specific way.
You will answer with code blocks that include all the necessary terminal commands.
Do not install globally. Do not use sudo.
Do not explain the code, just give the commands.
Do not use placeholders, use example values (like . for a folder argument) if necessary.
entrypoint模板的设计原则:
- 上下文感知:基于磁盘上的现有代码库生成指令
- 命令导向:直接输出可执行的终端命令
- 安全性:避免使用全局安装和sudo权限
- 实用性:使用具体的示例值而非占位符
improve模板:代码改进专家
improve模板用于在现有代码基础上进行改进,支持差异化的代码更新:
improve_prompt = """
Think step by step and reason yourself to the correct decisions...
Make changes to existing code and implement new code in the unified git diff syntax...
FILE_FORMAT # 此处会被替换为file_format_diff模板
As far as compatible with the user request, start with the "entrypoint" file...
Please note that the code should be fully functional. No placeholders.
Follow language and framework appropriate best practices...
Make sure that files contain all imports, types etc...
Ensure to implement all code, if you are unsure, write a plausible implementation.
Include module dependency or package manager dependency definition file.
Before you finish, double check that all parts of the architecture is present.
When you are done, write finish with "this concludes a fully working implementation".
improve模板的核心能力:
- 差异语法支持:使用统一的git diff格式进行代码修改
- 向后兼容:确保改进与现有代码库兼容
- 增量更新:在保持现有功能的基础上添加新特性
- 架构完整性:检查所有架构部件是否完整
文件格式模板系统
GPT-Engineer使用专门的文件格式模板来规范代码输出格式:
file_format模板(用于generate):
You will output the content of each file necessary to achieve the goal, including ALL code.
Represent files like so:
FILENAME
CODE
The following tokens must be replaced like so:
FILENAME is the lowercase combined path and file name including the file extension
CODE is the code in the file
Example representation of a file:
src/hello_world.py
print("Hello World")
Do not comment on what every file does. Please note that the code should be fully functional. No placeholders.
file_format_diff模板(用于improve): 提供类似的格式化规范,但支持差异化的代码表示。
模板协同工作机制
这些核心模板通过精密的协同工作流程来实现代码生成:
定制化配置实践
开发者可以通过自定义preprompts文件夹来定制这些模板:
# 使用自定义预提示
gpte <project_dir> --use-custom-preprompts
# 自定义模板目录结构
custom_preprompts/
├── generate
├── entrypoint
├── improve
├── file_format
└── file_format_diff
定制建议:
- 根据特定技术栈调整代码规范要求
- 添加团队特定的代码风格指南
- 针对特定领域优化架构模式
- 增强错误处理和日志记录要求
通过深入理解和合理配置这些核心提示模板,开发者可以显著提升GPT-Engineer的代码生成质量和项目一致性,使其更好地适应特定的开发需求和技术环境。
自定义预提示与AI身份配置
在GPT-Engineer中,预提示工程是构建智能编码代理的核心机制。通过自定义预提示,开发者可以精确控制AI代理的行为模式、思考逻辑和输出风格,从而打造出符合特定项目需求的专属AI工程师。
预提示系统架构解析
GPT-Engineer的预提示系统采用模块化设计,每个预提示文件对应AI代理在特定阶段的行为指令。系统通过PrepromptsHolder
类统一管理所有预提示内容:
class PrepromptsHolder:
def __init__(self, preprompts_path: Path):
self.preprompts_path = preprompts_path
def get_preprompts(self) -> Dict[str, str]:
preprompts_repo = DiskMemory(self.preprompts_path)
return {file_name: preprompts_repo[file_name] for file_name in preprompts_repo}
系统默认包含以下核心预提示文件:
预提示文件 | 功能描述 | 使用场景 |
---|---|---|
entrypoint |
定义代码执行规范 | 项目初始化阶段 |
generate |
代码生成逻辑框架 | 核心代码生成过程 |
clarify |
需求澄清机制 | 交互式需求确认 |
improve |
代码改进策略 | 现有代码优化 |
file_format |
文件格式规范 | 代码结构标准化 |
自定义预提示配置流程
1. 启用自定义预提示
通过CLI参数启用项目级别的自定义预提示功能:
gpte my-project --use-custom-preprompts
系统会自动将默认预提示文件复制到项目目录的preprompts/
文件夹中,便于个性化修改。
2. 预提示文件结构定制
每个预提示文件都承担特定的指导职责,以下是一个完整的自定义配置示例:
自定义generate
预提示:
作为资深{技术栈}专家,你需要:
1. 采用{设计模式}实现核心功能
2. 遵循{代码规范}标准
3. 包含完整的单元测试覆盖
4. 提供详细的API文档注释
优先考虑性能优化和内存管理,确保代码在生产环境中的稳定性。
自定义entrypoint
预提示:
你是一个专注于{项目类型}开发的AI工程师。
执行要求:
- 使用Docker容器化部署方案
- 配置CI/CD流水线脚本
- 包含环境变量配置文件
- 提供多环境部署指南
输出格式要求代码块包含完整的可执行命令序列。
AI身份角色配置策略
通过预提示工程,可以为AI代理赋予不同的专业身份:
技术专家角色配置
质量保障角色配置
# 质量保障预提示配置示例
quality_prompt = """
作为软件质量保障专家,你的代码必须满足:
质量标准:
- 测试覆盖率 ≥ 90%
- 静态代码分析零警告
- 性能基准测试达标
- 安全漏洞扫描通过
开发实践:
- TDD测试驱动开发
- 代码审查标准遵循
- 持续集成流水线
- 监控告警集成
"""
高级配置技巧
1. 条件化预提示策略
根据项目类型动态调整AI行为:
2. 多阶段预提示协作
复杂项目可以采用分阶段预提示策略:
阶段 | 预提示文件 | 核心职责 | 输出成果 |
---|---|---|---|
需求分析 | clarify |
需求澄清确认 | 需求规格说明书 |
架构设计 | architecture |
系统架构规划 | 架构设计文档 |
代码实现 | generate |
核心代码生成 | 可运行代码库 |
测试验证 | testing |
质量保障验证 | 测试套件报告 |
部署运维 | deployment |
生产环境部署 | 部署配置脚本 |
实战配置示例
企业级Java项目配置
// custom-preprompts/generate
/**
* 企业级Java开发专家配置
* 技术栈:Spring Boot + MyBatis + Redis
* 质量标准:SonarQube + JaCoCo
* 部署环境:Kubernetes + Docker
*
* 开发规范:
* 1. 遵循阿里巴巴Java开发手册
* 2. 使用Lombok减少样板代码
* 3. 集成Swagger API文档
* 4. 配置多环境配置文件
*/
数据科学项目配置
# custom-preprompts/generate
"""
数据科学专家模式启用
技术要求:
- 使用Pandas进行数据处理
- Scikit-learn机器学习 pipeline
- Matplotlib/Seaborn可视化
- Jupyter Notebook集成
最佳实践:
- 数据预处理标准化
- 特征工程自动化
- 模型评估指标完整
- 实验可重现性保障
"""
配置验证与优化
实施自定义预提示后,需要通过以下步骤验证配置效果:
- 功能验证:确保AI能够正确理解定制化指令
- 质量评估:检查输出代码是否符合预设标准
- 性能测试:验证生成代码的运行效率
- 迭代优化:根据实际效果持续调整预提示内容
通过精细化的预提示工程配置,开发者可以打造出高度专业化的AI编码助手,显著提升项目开发效率和质量一致性。这种配置方式特别适合需要遵循特定技术规范、编码标准或架构约束的企业级项目开发场景。
多模态输入支持与图像处理能力
GPT-Engineer 通过先进的视觉模型支持,为开发者提供了强大的多模态输入能力,使得代码生成过程能够充分利用图像信息来增强理解和实现精度。这一功能特别适用于需要视觉参考的复杂项目,如UI设计、架构图解析和流程图实现等场景。
图像输入处理机制
GPT-Engineer 的图像处理能力建立在 DiskMemory 类的智能文件处理机制之上。系统能够自动识别和处理常见的图像格式,包括 PNG、JPEG 和 JPG 文件,并将其转换为适合AI模型处理的格式。
class DiskMemory(BaseMemory):
def __getitem__(self, key: str) -> str:
full_path = self.path / key
if full_path.suffix in [".png", ".jpeg", ".jpg"]:
with full_path.open("rb") as image_file:
encoded_string = base64.b64encode(image_file.read()).decode("utf-8")
mime_type = "image/png" if full_path.suffix == ".png" else "image/jpeg"
return f"data:{mime_type};base64,{encoded_string}"
这种设计使得图像文件能够与文本提示无缝集成,为AI模型提供丰富的视觉上下文信息。
多模态提示构建
Prompt 类专门设计用于处理包含图像内容的多模态输入,通过 image_urls
字段存储和管理图像数据:
class Prompt:
def __init__(
self,
text: str,
image_urls: Optional[Dict[str, str]] = None,
entrypoint_prompt: str = "",
):
self.text = text
self.image_urls = image_urls
self.entrypoint_prompt = entrypoint_prompt
def to_langchain_content(self):
content = [{"type": "text", "text": f"Request: {self.text}"}]
if self.image_urls:
for name, url in self.image_urls.items():
image_content = {
"type": "image_url",
"image_url": {
"url": url,
"detail": "low",
},
}
content.append(image_content)
return content
视觉模型检测与适配
AI 类具备自动检测视觉模型的能力,确保只有支持多模态的模型才会处理图像输入:
class AI:
def __init__(
self,
model_name="gpt-4-turbo",
temperature=0.1,
azure_endpoint=None,
streaming=True,
vision=False,
):
self.vision = (
("vision-preview" in model_name)
or ("gpt-4-turbo" in model_name and "preview" not in model_name)
or ("claude" in model_name)
)
命令行接口集成
通过 Typer 框架,GPT-Engineer 提供了直观的命令行选项来指定图像目录:
@app.command()
def main(
project_path: str = typer.Argument(..., help="Path to the project directory."),
model: str = typer.Option(
"gpt-4-turbo", "--model", "-m", help="The model to use for generation."
),
image_directory: str = typer.Option(
"", "--image_directory", help="Relative path to a folder containing images."
),
# ... 其他参数
):
使用流程示例
以下是使用多模态输入功能的完整工作流程:
实际应用场景
1. UI界面设计实现
当需要根据设计稿实现前端界面时,可以将UI设计图放入图像目录,配合文本描述:
prompt文件内容:
基于提供的设计图实现一个响应式电商产品详情页面,包含产品图片轮播、规格选择、购买按钮等功能。
图像目录结构:
prompt/images/
├── product-detail-design.png
├── color-variants.jpg
└── mobile-layout.jpeg
2. 架构图解析开发
对于复杂的系统架构,可以通过架构图辅助AI理解系统组件关系:
prompt文件内容:
根据系统架构图实现微服务架构,包含用户服务、订单服务、支付服务和消息队列组件。
图像目录结构:
prompt/images/
└── system-architecture.png
3. 流程图转代码
将业务流程流程图转换为实际的代码实现:
prompt文件内容:
实现用户注册流程,包括邮箱验证、密码强度检查和欢迎邮件发送功能。
图像目录结构:
prompt/images/
└── registration-flowchart.png
技术实现细节
图像编码与传输
GPT-Engineer 使用 Base64 编码将图像数据嵌入到提示中,确保数据的完整性和安全性:
# 图像编码过程
def encode_image(image_path):
with open(image_path, "rb") as image_file:
encoded_string = base64.b64encode(image_file.read()).decode("utf-8")
mime_type = "image/png" if image_path.endswith(".png") else "image/jpeg"
return f"data:{mime_type};base64,{encoded_string}"
多模态消息构建
系统构建符合 LangChain 标准的多模态消息结构:
def build_multimodal_message(text, image_paths):
content = [{"type": "text", "text": text}]
for image_path in image_paths:
encoded_image = encode_image(image_path)
image_content = {
"type": "image_url",
"image_url": {
"url": encoded_image,
"detail": "low" # 控制图像细节级别
}
}
content.append(image_content)
return content
性能优化策略
为了优化多模态处理的性能,GPT-Engineer 实现了以下策略:
- 延迟加载:仅在需要时处理图像文件
- 缓存机制:对已处理的图像进行缓存以避免重复编码
- 细节控制:支持不同的图像细节级别(low/medium/high)
- 批量处理:优化多图像场景下的处理效率
错误处理与验证
系统包含完善的错误处理机制:
def validate_image_directory(image_dir):
if not os.path.isdir(image_dir):
raise ValueError("提供的图像目录不是有效的目录")
if len(os.listdir(image_dir)) == 0:
raise ValueError("提供的图像目录为空")
# 检查支持的图像格式
supported_formats = {'.png', '.jpg', '.jpeg'}
image_files = [f for f in os.listdir(image_dir)
if os.path.splitext(f)[1].lower() in supported_formats]
if not image_files:
raise ValueError("图像目录中未找到支持的图像格式文件")
扩展性与兼容性
GPT-Engineer 的多模态支持设计具有良好的扩展性:
特性 | 说明 | 支持状态 |
---|---|---|
图像格式 | PNG, JPEG, JPG | ✅ 已支持 |
模型兼容 | GPT-4 Vision, Claude | ✅ 已支持 |
自定义模型 | 其他视觉模型 | 🔄 计划中 |
视频输入 | 短视频片段 | 🔄 未来规划 |
3D模型 | 三维设计文件 | 🔄 未来规划 |
通过这种模块化的设计,GPT-Engineer 能够持续扩展其多模态能力,适应不断发展的AI技术 landscape。
多模态输入支持使得 GPT-Engineer 不仅仅是一个代码生成工具,更成为一个能够理解复杂视觉需求的智能开发助手,为开发者提供了前所未有的表达能力和实现精度。
总结
GPT-Engineer通过先进的预提示工程系统和多模态输入支持,为开发者提供了强大的代码生成和定制化配置能力。预提示系统采用模块化设计,包含generate、entrypoint、improve等核心模板,每个模板承担特定的代码生成职责,通过精密的协同工作流程实现高质量的代码输出。系统支持高度定制化,用户可以自定义预提示内容来打造符合特定项目需求的专属AI工程师。多模态输入能力进一步增强了系统的实用性,支持图像处理和各种视觉参考的复杂项目开发。这种综合性的设计使GPT-Engineer成为一个能够理解复杂需求、生成高质量代码的智能开发助手,显著提升了项目开发效率和质量一致性。
【免费下载链接】gpt-engineer 项目地址: https://gitcode.com/gh_mirrors/gpt/gpt-engineer
更多推荐
所有评论(0)