菜单

CLI和代理系统

相关源文件

本文档介绍了 gpt-engineer 的命令行界面 (CLI) 和 Agent 系统,这是代码生成和改进功能的主要入口点和编排层。CLI 处理用户命令并配置 Agent,而 Agent 系统负责协调 AI 交互、文件处理和代码执行。

有关 AI 接口工作原理的详细信息,请参阅 AI 接口。有关文件处理和存储的详细信息,请参阅 文件处理系统内存和存储

架构概述

CLI 和 Agent 系统构成了 gpt-engineer 的核心编排层,连接用户输入和 AI 代码生成功能。该系统遵循一个明确定义的流程

来源: gpt_engineer/applications/cli/main.py502-512 gpt_engineer/applications/cli/cli_agent.py36-101

命令行界面

CLI 是用户与 gpt-engineer 交互的主要入口点。它解析命令行参数、配置系统并编排代码生成或改进过程。

命令结构

CLI 工具是使用 Typer 构建的,提供两个主要命令:

  • gpte <project_path> - 根据提示生成新代码
  • gpte <project_path> -i - 根据提示改进现有代码

关键参数

参数标志描述
项目路径(位置参数)项目目录的路径
模型-m, --model要使用的 LLM 模型(默认值:gpt-4o)
温度-t, --temperature控制输出的随机性(默认值:0.1)
改进模式-i, --improve激活代码改进模式
精简模式-l, --lite使用简化的提示进行生成
澄清模式-c, --clarify在实现之前与 AI 讨论规范
自我修复模式-sh, --self-heal自动修复失败的代码
Azure 端点-a, --azureAzure OpenAI 服务的端点

来源: gpt_engineer/applications/cli/main.py281-380

CLI 工作流程

来源: gpt_engineer/applications/cli/main.py382-557

智能体系统

Agent 系统负责编排代码生成和改进过程。它遵循 BaseAgent 接口,并在 CliAgent 中有一个具体实现。

BaseAgent 接口

BaseAgent 抽象基类定义了所有 Agent 的接口。

来源: gpt_engineer/core/base_agent.py16-31 gpt_engineer/applications/cli/cli_agent.py36-101

CliAgent 实现

CLI 工具使用的 BaseAgent 接口的主要实现是 CliAgent 类。它协调:

  1. 通过配置的 code_gen_fn 进行代码生成
  2. 入口点生成
  3. 通过配置的 process_code_fn 进行代码执行
  4. 通过配置的 improve_fn 进行代码改进

初始化

可以使用工厂方法 with_default_config 创建 Agent。

来源: gpt_engineer/applications/cli/cli_agent.py102-150 gpt_engineer/applications/cli/main.py504-512

代码生成过程

代码生成过程由 CliAgent.init() 方法编排,该方法遵循以下步骤:

来源: gpt_engineer/applications/cli/cli_agent.py152-183 gpt_engineer/core/default/steps.py121-151

标准代码生成

标准代码生成函数(gen_code)遵循以下步骤:

  1. 使用预提示设置系统提示
  2. 以提示开始 AI 对话
  3. 从 AI 响应中提取代码
  4. 将聊天转换为文件字典
  5. 记录生成的代码

自定义生成选项

CLI 提供替代的代码生成选项:

  1. 精简模式lite_gen):仅包含文件格式指令的简化提示
  2. 澄清模式clarified_gen):在代码生成前与用户进行交互式澄清
  3. 自我修复模式self_heal):尝试自动修复失败的代码

来源: gpt_engineer/tools/custom_steps.py40-233

代码改进过程

CliAgent.improve() 方法处理代码改进过程。

来源: gpt_engineer/applications/cli/cli_agent.py185-232 gpt_engineer/core/default/steps.py271-398

代码执行

执行阶段由 execute_entrypoint 函数处理,该函数:

  1. 验证入口点文件是否存在
  2. 提示用户是否允许执行代码
  3. 将文件上传到执行环境
  4. 在入口点文件中运行命令
  5. 返回可能已修改的文件字典

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

组件交互

CLI 和 Agent 系统与几个关键组件进行交互:

依赖项和依赖注入

来源: gpt_engineer/applications/cli/cli_agent.py83-101 gpt_engineer/core/base_memory.py13-15 gpt_engineer/core/base_execution_env.py8-42 gpt_engineer/core/preprompts_holder.py7-29

配置与自定义

CLI 和 Agent 系统通过多种机制进行定制:

自定义步骤

该系统支持关键功能的自定义实现:

  • code_gen_fn:控制代码如何生成
  • improve_fn:控制代码如何改进
  • process_code_fn:控制代码执行和处理

预提示

该系统使用 PrepromptsHolder 来管理流程各个阶段使用的模板提示。可以通过提供一个包含修改后模板的自定义目录来定制这些模板。

来源: gpt_engineer/applications/cli/main.py173-200 gpt_engineer/core/preprompts_holder.py7-29

错误处理与日志记录

该系统包括全面的错误处理和日志记录。

  1. 日志在每次运行时开始时进行存档。
  2. 每个步骤的日志消息都保存在专用日志文件中。
  3. 改进过程中的错误处理会捕获并报告问题。
  4. 调试模式启用 Python 的事后调试器。
  5. 详细模式启用详细日志记录。

来源: gpt_engineer/applications/cli/main.py431-448 gpt_engineer/core/default/steps.py376-397

关键文件及其功能

文件描述
applications/cli/main.pyCLI 入口点、参数解析、流程编排
applications/cli/cli_agent.pyCLI 工具的主要 Agent 实现
core/default/steps.py代码生成和改进的标准步骤
tools/custom_steps.py替代的生成和改进策略
core/base_agent.pyAgent 的抽象基类
core/base_execution_env.py代码执行环境的接口
core/base_memory.py数据存储组件的接口