此页面记录了 gpt-engineer 的 AI 接口组件,它是 gpt-engineer 系统与各种大型语言模型 (LLM) 提供商之间的主要中介。AI 接口负责与 LLM 的通信、消息格式化、跟踪 token 使用量以及实现退避和重试逻辑等弹性策略。
有关使用此接口的 Agent 系统的信息,请参阅CLI 和 Agent 系统。有关接收 AI 响应后发生的文件的详细信息,请参阅文件处理系统。
AI 接口位于 gpt-engineer 架构的关键节点,连接 Agent 系统与外部语言模型提供商。它抽象了不同 LLM API 的复杂性,为系统的其余部分提供了一个统一的接口。
来源: gpt_engineer/core/ai.py16-438
AI 类是 AI 接口的核心组件,提供了管理与语言模型对话的方法。它负责消息格式化、token 跟踪和弹性模式的实现。
来源: gpt_engineer/core/ai.py50-379 gpt_engineer/core/token_usage.py180-297
在初始化 AI 类时,有几个配置选项可用于自定义其行为
| 参数 | 类型 | 默认 | 描述 |
|---|---|---|---|
model_name | str | "gpt-4-turbo" | 要使用的语言模型名称 |
temperature | 浮点数 | 0.1 | 模型输出随机性的温度设置 |
azure_endpoint | str | None | Azure 托管模型的端点 URL |
streaming | bool | True | 是否为模型响应使用流式传输 |
vision | bool | (auto) | 模型是否支持视觉功能 |
vision 参数是根据模型名称自动确定的,在可用时支持多模态输入。
来源: gpt_engineer/core/ai.py88-116
AI 接口提供了两个主要方法来管理与语言模型的对话
start() - 开始一次新的对话,包含系统和用户消息next() - 通过发送消息历史记录和新提示来推进现有对话来源: gpt_engineer/core/ai.py120-251
为了提高效率,AI 接口包含一个消息折叠机制,该机制会将相同类型的连续消息合并。这有助于减少 token 使用量,并将对话保持在上下文限制内
此方法会自动应用于非视觉模型的 next() 方法中。
来源: gpt_engineer/core/ai.py165-204
AI 接口通过统一的接口支持多个 LLM 提供商。根据模型名称和配置选择合适的提供商
来源: gpt_engineer/core/ai.py330-379
每个提供商都有特定的配置选项
| 提供商 | 类 | 关键配置 |
|---|---|---|
| OpenAI | ChatOpenAI | model, temperature, streaming |
| Azure OpenAI | AzureChatOpenAI | azure_endpoint, deployment_name, api_version |
| Anthropic | ChatAnthropic | model, temperature, max_tokens_to_sample |
| 支持视觉功能的模型 | ChatOpenAI | model, temperature, max_tokens |
来源: gpt_engineer/core/ai.py330-379
AI 接口实现了弹性模式,用于处理与 LLM 提供商通信时遇到的常见问题,特别是速率限制。
backoff_inference 方法使用指数退避策略来处理 OpenAI API 的速率限制错误
这种方法
来源: gpt_engineer/core/ai.py253-287
AI 接口通过 TokenUsageLog 类实现了详细的 token 使用量跟踪,该类
来源: gpt_engineer/core/token_usage.py31-297
对于支持视觉功能的模型,Tokenizer 类包含了图像 token 计数的特殊处理,遵循 OpenAI 的图像 token 计算指南
这使得能够准确地跟踪多模态对话的 token 使用量和成本估算。
来源: gpt_engineer/core/token_usage.py96-140
AI 接口提供了用于序列化和反序列化消息链的静态方法,这对于缓存、日志记录和调试非常有用
来源: gpt_engineer/core/ai.py290-328
对于没有直接 API 访问权限的开发或情况,ClipboardAI 类提供了一个替代实现,该实现
这有助于在没有 API 成本的情况下进行测试,并支持离线开发工作流程。
来源: gpt_engineer/core/ai.py386-437
AI 接口通常由 Agent 类使用,以处理代码生成和改进工作流程
来源: gpt_engineer/core/ai.py120-251 tests/applications/cli/test_main.py78-177
在使用 AI 接口时,有几个常见的模式
对话初始化:
对话延续:
响应提取:
Token 使用量报告:
这些模式构成了代码库中大多数与 AI 接口交互的基础。
使用 AI 接口时,请考虑这些性能因素
通过理解这些注意事项,您可以优化 AI 接口的使用,以兼顾成本和性能。