Skip to content

提示模板

ByteBuddy 允许您使用 promptTemplates 配置为不同模型角色自定义提示模板.此功能使您能够针对特定任务(如编辑、应用更改和自动完成)定制 AI 的行为.

配置概述

提示模板在您的 config.yaml 文件中的模型定义内配置:

yaml
models:
  - name: "gpt-4"
    provider: "openai"
    model: "gpt-4"
    apiKey: "${OPENAI_API_KEY}"
    roles:
      - chat
      - edit
      - apply
      - autocomplete
    promptTemplates:
      edit: |
        这是编辑前的代码:
        ${original_code}

        请根据以下说明进行编辑:${instructions}

        仅提供编辑后的代码, 无需解释.
      apply: |
        原始代码:${original_code}
        新代码:${new_code}
      autocomplete: |
        完成以下代码:
        ${prefix}

可用的模板类型

1. 编辑模板 (promptTemplates.edit)

使用 /edit 命令或通过编辑界面编辑代码时使用.

可用变量:

  • ${original_code}:要编辑的原始代码
  • ${instructions}:用户的编辑说明
  • ${filepath}:正在编辑的文件路径
  • ${language}:文件的编程语言

默认模板:

yaml
promptTemplates:
  edit: |
    这是编辑前的代码:
    ${original_code}

    请根据以下说明进行编辑:${instructions}

    仅提供编辑后的代码, 无需解释.

自定义示例:

yaml
models:
  - name: "gpt-4"
    provider: "openai"
    model: "gpt-4"
    promptTemplates:
      edit: |
        您是一名专业的软件工程师.根据用户的说明编辑以下代码.

        文件:${filepath}
        语言:${language}

        原始代码:
        ```${language}
        ${original_code}
        ```

        说明:${instructions}

        要求:
        1. 保持代码质量和最佳实践
        2. 为复杂更改添加适当的注释
        3. 确保向后兼容性

        仅提供编辑后的代码.

2. 应用模板 (promptTemplates.apply)

应用 AI 生成的代码更改时使用.

可用变量:

  • ${original_code}:原始代码
  • ${new_code}:要应用的新代码
  • ${filepath}:文件路径

默认模板:

yaml
promptTemplates:
  apply: |
    原始代码:${original_code}
    新代码:${new_code}

自定义示例:

yaml
models:
  - name: "gpt-4"
    provider: "openai"
    model: "gpt-4"
    promptTemplates:
      apply: |
        <code>${original_code}</code>
        <update>${new_code}</update>

3. 自动完成模板 (promptTemplates.autocomplete)

用于代码自动完成建议.

可用变量:

  • ${prefix}:光标前的代码前缀
  • ${suffix}:光标后的代码后缀(如果可用)
  • ${filepath}:文件路径
  • ${language}:编程语言

默认模板:

yaml
promptTemplates:
  autocomplete: |
    完成以下代码:
    ${prefix}

自定义示例:

yaml
models:
  - name: "gpt-4"
    provider: "openai"
    model: "gpt-4"
    promptTemplates:
      autocomplete: |
        您是一个代码完成助手.完成以下代码片段.

        文件:${filepath}
        语言:${language}

        当前代码:
        ```${language}
        ${prefix}
        ```

        仅提供完成部分, 无需解释.

4. 聊天模板 (promptTemplates.chat)

用于一般聊天对话.

可用变量:

  • ${messages}:对话历史
  • ${system_message}:系统消息(如果配置)

自定义示例:

yaml
models:
  - name: "gpt-4"
    provider: "openai"
    model: "gpt-4"
    promptTemplates:
      chat: |
        您是 ByteBuddy, 一个 AI 编程助手.帮助用户完成他们的编码任务.

        对话历史:
        ${messages}

        当前请求:${current_message}

        提供有帮助、准确且简洁的响应.

模板语法

ByteBuddy 使用 Handlebars 语法进行提示模板化, 支持基本的变量替换.

基本变量

yaml
promptTemplates:
  edit: |
    你好, ${name}!

变量替换

支持在模板中使用以下变量:

  • ${original_code}:原始代码
  • ${instructions}:编辑说明
  • ${filepath}:文件路径
  • ${language}:编程语言
  • ${new_code}:新代码
  • ${prefix}:代码前缀
  • ${suffix}:代码后缀
  • ${messages}:对话历史

高级配置

模型特定模板

不同的模型可以有不同的提示模板:

yaml
models:
  - name: "gpt-4-editor"
    provider: "openai"
    model: "gpt-4"
    apiKey: "${OPENAI_API_KEY}"
    roles:
      - edit
    promptTemplates:
      edit: |
        [GPT-4 特定编辑模板]
        ${original_code}
        说明:${instructions}

  - name: "claude-3-applier"
    provider: "anthropic"
    model: "claude-3-sonnet"
    apiKey: "${ANTHROPIC_API_KEY}"
    roles:
      - apply
    promptTemplates:
      apply: |
        <human>应用此更改:</human>
        <original>${original_code}</original>
        <new>${new_code}</new>

模板中的环境变量

您可以在模板中使用环境变量:

yaml
models:
  - name: "gpt-4"
    provider: "openai"
    model: "gpt-4"
    promptTemplates:
      edit: |
        项目:${PROJECT_NAME}
        环境:${ENVIRONMENT}

        代码:${original_code}
        说明:${instructions}

使用案例

1. 代码审查模板

yaml
models:
  - name: "gpt-4"
    provider: "openai"
    model: "gpt-4"
    promptTemplates:
      edit: |
        您是一名高级代码审查员.分析以下代码:

        文件:${filepath}
        语言:${language}

        要审查的代码:
        ```${language}
        ${original_code}
        ```

        审查标准:
        1. 代码质量和可读性
        2. 安全漏洞
        3. 性能问题
        4. 最佳实践合规性
        5. 错误处理

        提供具体、可操作的反馈.

2. 文档生成器

yaml
models:
  - name: "gpt-4"
    provider: "openai"
    model: "gpt-4"
    promptTemplates:
      edit: |
        为此 ${language} 代码生成文档:

        ```${language}
        ${original_code}
        ```

        包括:
        1. 函数/类描述
        2. 参数和返回值
        3. 使用示例
        4. 边缘情况和注意事项

        使用 Markdown 格式.

3. 测试生成器

yaml
models:
  - name: "gpt-4"
    provider: "openai"
    model: "gpt-4"
    promptTemplates:
      edit: |
        为此 ${language} 代码生成测试:

        ```${language}
        ${original_code}
        ```

        要求:
        1. 覆盖所有公共方法
        2. 包括边缘情况
        3. 遵循测试框架约定
        4. 添加适当的断言

        仅提供测试代码.

4. 重构助手

yaml
models:
  - name: "gpt-4"
    provider: "openai"
    model: "gpt-4"
    promptTemplates:
      edit: |
        重构此 ${language} 代码以改进:

        1. 可读性
        2. 可维护性
        3. 性能

        原始代码:
        ```${language}
        ${original_code}
        ```

        重构目标:${instructions}

        提供重构后的代码并解释更改.

最佳实践

1. 保持模板简洁

yaml
# ✅ 良好
models:
  - name: "gpt-4"
    promptTemplates:
      edit: |
        编辑:${original_code}
        说明:${instructions}

# ❌ 避免
models:
  - name: "gpt-4"
    promptTemplates:
      edit: |
        您是一个 AI 助手... [非常长的系统消息]
        用户希望您... [冗余说明]
        请... [多个请求]
        原始:${original_code}
        说明:${instructions}

2. 使用适当的变量

yaml
# ✅ 良好 - 使用可用变量
models:
  - name: "gpt-4"
    promptTemplates:
      edit: |
        文件:${filepath}
        语言:${language}
        代码:${original_code}
        说明:${instructions}

# ❌ 避免 - 使用不存在的变量
models:
  - name: "gpt-4"
    promptTemplates:
      edit: |
        用户:${username}  # 此变量不存在
        时间:${timestamp} # 此变量不存在
        代码:${original_code}

3. 保持一致性

yaml
# ✅ 良好 - 一致的格式
models:
  - name: "gpt-4"
    promptTemplates:
      edit: |
        [编辑]
        文件:${filepath}
        代码:${original_code}
        说明:${instructions}
      apply: |
        [应用]
        原始:${original_code}
        新:${new_code}

# ❌ 避免 - 不一致的格式
models:
  - name: "gpt-4"
    promptTemplates:
      edit: |
        编辑模式
        =========
        代码:${original_code}
        说明:${instructions}
      apply: |
        请应用此更改:
        - 旧:${original_code}
        - 新:${new_code}

4. 测试您的模板

config.yaml 中配置模板后, 通过实际使用来测试模板效果:

  1. 在聊天中尝试编辑功能
  2. 检查 AI 响应符合预期
  3. 根据需要调整模板内容

故障排除

常见问题

  1. 模板不工作

    • 检查变量名是否与可用变量匹配
    • 验证 YAML 语法是否正确
    • 确保模板分配给正确的模型
  2. 意外的 AI 响应

    • 模板可能过于冗长或令人困惑
    • 说明可能含糊不清
    • 尝试简化模板
  3. 性能问题

    • 非常长的模板会增加令牌使用量
    • 考虑优化模板长度

调试技巧

  1. 检查配置文件 验证 config.yaml 文件的语法和结构.

  2. 使用简单测试 从简单的模板开始, 逐步增加复杂性.

  3. 检查模型兼容性 确保模板适合所选模型的提示格式.

完整配置示例

yaml
models:
  - name: "gpt-4-editor"
    provider: "openai"
    model: "gpt-4"
    apiKey: "${OPENAI_API_KEY}"
    roles:
      - edit
      - apply
      - autocomplete
    promptTemplates:
      edit: |
        您是专业的软件工程师.请根据以下说明编辑代码:

        文件:${filepath}
        语言:${language}

        原始代码:
        ```${language}
        ${original_code}
        ```

        说明:${instructions}

        要求:
        1. 保持代码质量
        2. 遵循最佳实践
        3. 保持现有代码风格

        仅提供编辑后的代码.

      apply: |
        应用代码更改:
        原始代码:${original_code}
        新代码:${new_code}

      autocomplete: |
        完成以下代码:

        ```${language}
        ${prefix}
        ```

        文件:${filepath}
        仅提供完成部分, 无需解释.

  - name: "claude-3-autocomplete"
    provider: "anthropic"
    model: "claude-3-haiku"
    apiKey: "${ANTHROPIC_API_KEY}"
    roles:
      - autocomplete
    promptTemplates:
      autocomplete: |
        完成代码片段:

        ```${language}
        ${prefix}
        ```

        考虑文件上下文:${filepath}
        仅提供代码完成部分.

context:
  - provider: "codebase"
  - provider: "diff"

rules:
  - "始终包含适当的错误处理"
  - "遵循现有代码风格"

自定义提示模板使您能够根据特定的工作流程和要求定制 ByteBuddy 的行为, 提高 AI 协助的质量和相关性.