菜单

技术参考

相关源文件

本技术参考提供了构成 gpt-engineer 系统的核心组件的详细文档。它涵盖了实现 AI 辅助代码生成和改进的内部架构、数据结构和关键接口。有关使用系统的用户文档,请参阅 用户指南

1. 系统架构概述

gpt-engineer 系统围绕模块化组件设计,这些组件将 AI 交互、文件处理、代码生成和执行的关注点分开。以下是系统架构的概述。

来源: gpt_engineer/applications/cli/cli_agent.py36-101 gpt_engineer/core/ai.py50-117 gpt_engineer/core/base_memory.py1-16 gpt_engineer/core/base_agent.py17-31 gpt_engineer/core/base_execution_env.py8-42

2. 核心工作流程

工作流程从主要的 CLI 入口点开始,该入口点处理用户命令并协调代码生成或改进过程。

来源: gpt_engineer/applications/cli/main.py70-560 gpt_engineer/applications/cli/cli_agent.py152-232

3. AI 接口

AI 类负责管理与 GPT-4、Claude 或本地模型等语言模型的通信。它处理对话创建、消息格式化、令牌跟踪以及与 LLM 提供商的通信。

3.1 消息流

3.2 AI 接口实现

AI 类提供与语言模型交互的方法:

  • start():使用系统提示和用户消息开始对话。
  • next():使用新消息推进对话。
  • backoff_inference():处理具有指数退避的 LLM API 调用,以进行速率限制。

该系统支持多种模型提供商:

  • OpenAI (GPT-4, GPT-3.5)
  • Azure OpenAI
  • Anthropic (Claude)
  • 开源模型

3.3 令牌使用跟踪

令牌使用情况使用 `TokenUsageLog` 类进行跟踪,该类:

  1. 计算消息和响应中的令牌数。
  2. 维护令牌使用的运行总数。
  3. 根据当前定价计算使用成本。
  4. 处理多模态内容(如图像)的特殊令牌计数。

来源: gpt_engineer/core/ai.py50-379 gpt_engineer/core/token_usage.py31-297

4. Agent 系统

Agent 系统负责协调代码生成和改进过程。

4.1 Agent 层级结构

4.2 代码生成过程

Agent 处理的主要代码生成步骤包括:

  1. 代码生成:将自然语言提示转换为代码文件。
  2. 入口点生成:为代码创建可执行的入口点脚本。
  3. 代码执行:运行生成的代码以验证功能。
  4. 改进:根据反馈对现有代码进行改进。

4.2.1 代码生成函数

几个函数实现了不同的代码生成方法:

功能目的模式
gen_code标准代码生成。默认
lite_gen简化生成,使用最少的提示。Lite
clarified_gen生成前的交互式澄清。Clarify
self_heal自动修复失败的代码。Self-healing
improve_fn对现有代码进行改进。Improve

来源: gpt_engineer/applications/cli/cli_agent.py36-232 gpt_engineer/core/default/steps.py63-397 gpt_engineer/tools/custom_steps.py40-233

5. 文件处理和存储

文件处理和存储系统负责代码的存储、解析和修改方式。

5.1 FilesDict

FilesDict 是表示代码文件集合的核心数据结构。

5.2 内存系统

内存系统为代码文件和日志提供持久性。

5.3 Diff 处理

改进过程使用 diffs 来表示对代码的更改。

来源: gpt_engineer/core/default/steps.py315-360 gpt_engineer/core/base_memory.py1-16

6. 执行环境

执行环境负责运行生成的代码以测试其功能。

6.1 执行接口

6.2 代码执行过程

来源: gpt_engineer/core/base_execution_env.py8-42 gpt_engineer/core/default/steps.py205-268

7. 提示系统

提示系统负责管理用于指导 LLM 代码生成的模板提示(预提示)。

7.1 预提示结构

7.2 系统提示构造

系统为不同操作构造提示。

来源: gpt_engineer/core/preprompts_holder.py7-29 gpt_engineer/core/default/steps.py75-118

8. 主 CLI 接口

CLI 接口是用户与系统交互的主要入口点。

8.1 命令结构

8.2 CLI 参数摘要

参数标志描述
project_path(位置参数)项目目录的路径。
model-m/--modelLLM 模型标识符。
temperature-t/--temperature控制 LLM 输出的随机性。
improve_mode-i/--improve启用改进模式。
lite_mode-l/--lite启用 Lite 生成模式。
clarify_mode-c/--clarify启用澄清模式。
self_heal_mode-sh/--self-heal启用自我修复模式。
azure_endpoint-a/--azureAzure OpenAI 端点 URL。
use_custom_preprompts--use-custom-preprompts使用自定义提示。
prompt_file--prompt_file提示文件的路径。
skip_file_selection-s/--skip-file-selection在改进模式下跳过文件选择。

来源: gpt_engineer/applications/cli/main.py281-425 gpt_engineer/applications/cli/main.py432-557

9. 测试和开发

该系统包含核心组件的自动化测试。

9.1 测试基础设施

测试的组织方式与组件结构相匹配:

  • Agent 测试:验证 Agent 的行为和工作流程。
  • Steps 测试:测试代码生成和改进等单个步骤。
  • CLI 测试:测试命令行接口功能。

9.2 Mock 组件

为了进行测试,系统使用了关键组件的 Mock 实现。

来源: tests/core/default/test_steps.py79-334 tests/applications/cli/test_cli_agent.py19-154

10. 集成点

10.1 LLM 提供商集成

该系统通过统一的接口与多个 LLM 提供商集成。

10.2 文件系统集成

该系统通过 `DiskMemory` 和 `DiskExecutionEnv` 类与本地文件系统集成。

来源: gpt_engineer/core/ai.py330-379 gpt_engineer/applications/cli/main.py456-465