为 GitHub Copilot 创建有效的提示

已完成

提示是一个自然语言说明,告知 GitHub Copilot 你想要执行的操作。 提示可用于提问、传达请求或描述任务。

例如,以下提示表示问题、请求和任务说明。

Question: How do I create a button that submits a form?

Request: Add a button that opens a modal dialog. The button should be blue with rounded corners.

Task: Build a product page that displays a product title, product image, product description, and price. Product information should be fetched from the attached ProductsList.json file. The price should be formatted as currency. The page should also include a button to add the product to the cart.

提示的质量直接影响 GitHub Copilot 响应的质量。

什么是良好的提示?

创建高质量的提示对于从 GitHub Copilot 获取最大价值至关重要。 以下策略将帮助你创建生成更准确、更相关且有用的响应的提示。

由泛入精

编写 Copilot 的提示时,请从目标或方案的广泛描述开始,然后提供特定要求。 此方法为 Copilot 提供了必要的上下文,同时确保满足详细需求。

Example:

Write a function that tells me if a number is prime.

The function should take an integer and return true if the integer is prime.

The function should error if the input is not a positive integer.

提供具体示例

示例是将意图传达给 Copilot 的最有效方法之一。 可以提供示例输入数据、预期输出,甚至示例实现来指导 AI 的理解。

Example:

Write a function that finds all dates in a string and returns them in an array. Dates can be formatted like:

- 05/02/24
- 05/02/2024
- 5/2/24
- 5/2/2024
- 05-02-24
- 05-02-2024
- 5-2-24
- 5-2-2024

Example usage:
findDates("I have a dentist appointment on 11/14/2023 and book club on 12-1-23")

Expected return: ["11/14/2023", "12-1-23"]

将复杂任务分解为更简单的步骤

面对复杂或大型任务时,将其分解为较小的可管理组件。 此方法可带来更好的结果,并更轻松地调试和优化各个部分。

示例:与其要求 Copilot 生成完整的单词搜索谜题,不如将其分解:

  1. Write a function to generate a 10 by 10 grid of letters
  2. Write a function to find all words in a grid of letters, given a list of valid words
  3. Write a function that uses the previous functions to generate a 10 by 10 grid containing at least 10 words
  4. Update the previous function to print the grid and 10 random words from the grid

消除歧义

避免模糊引用和可解释多种方式的模糊术语。 明确你指的是什么,以及你想科皮洛特做什么。

不佳的示例

  • “这有什么用途?(不清楚“这个”指的是什么)。
  • “修复错误”(未指定哪个错误或如何修复它)。

更好的示例

  • “createUser 函数的作用是什么?
  • “上一个响应中的代码有什么用途?
  • “修复电子邮件输入字段中的验证错误。

库文件注意事项

  • 如果使用不常见的库,请描述其用途。
  • 对于特定库,请包括 import 语句或指定要使用的库。

提供相关上下文

通过有效地管理开发环境,帮助 Copilot 了解项目结构和意图。

在 IDE 中

  • 打开相关文件并关闭不相关的文件。
  • 突出显示希望 Copilot 引用的特定代码部分。
  • 使用聊天参与者,例如 Visual Studio Code 中的 @workspace 或 JetBrains IDE 中的 @project

在 Copilot 对话中:

  • 引用特定文件或代码块。
  • 附加相关的文档或规范。
  • 使用清晰的文件路径和函数名称。

迭代和改进

不要期望在第一次尝试上取得完美的结果。 在进行迭代对话时,Copilot 效果最佳,根据收到的响应优化请求。

迭代策略

  • 如果使用内联建议,请删除当前提示,然后使用修改后的提示重试。
  • 在 Copilot Chat 中,引用以前的响应并请求进行特定修改。
  • 通过请求增量改进来构建部分解决方案。

维护相关的对话历史记录

Copilot Chat 使用对话历史记录来了解上下文,因此从战略上管理此历史记录。

最佳做法

  • 为不同的任务或项目启动新线程。
  • 删除可能会混淆未来响应的不相关或失败的请求。
  • 使对话专注于相关功能。

遵循良好的编码做法

现有代码库的质量会影响 Copilot 生成适当建议的能力。 在代码中保持高标准,以获得更好的 AI 帮助。

代码质量因素

  • 使用一致的代码样式和模式。
  • 为变量和函数选择描述性名称。
  • 添加有意义的注释来解释复杂逻辑。
  • 将代码结构为模块化、范围良好的组件。
  • 包括全面的单元测试。

Note

你可以通过请求注释、重构建议或将大型函数分解成更小、更易于管理的部分,来请求 Copilot 帮助提高代码质量。

优良的提示词包括:

  • 清楚:准确描述所需的内容。
  • 具体:包括布局、行为或样式详细信息。
  • 上下文:引用现有代码或结构。

循环访问提示

如果 GitHub Copilot 的初始响应不符合预期,则可能需要迭代修改您的提示词。 请考虑以下策略:

  • 编辑提示以更具体。
  • 向聊天添加上下文,以阐明目标或要求。
  • 使用 Copilot Chat 提出基于先前响应的后续问题。

评估和回应科皮洛特的建议

了解如何评估 Copilot 的建议对于有效的氛围编码至关重要。 并不是每个建议都是完美的,并且知道何时接受、拒绝或修改响应会显著改善开发体验。

何时接受建议

当 Copilot 的建议符合以下条件时接受这些建议:

  • 满足你的要求:该代码准确执行所要求的内容。
  • 遵循最佳做法:使用适当的模式、命名约定和结构。
  • 结构良好:代码可读、可维护且格式正确。
  • 包括适当的错误处理:解决边缘情况和潜在故障。
  • 符合项目风格:与现有的代码库模式和约定一致。

要接受的好建议示例

提示: “创建用于验证电子邮件地址的函数”

Copilot 建议:

function validateEmail(email) {
    const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
    if (typeof email !== 'string') {
        throw new Error('Email must be a string');
    }
    return emailRegex.test(email.toLowerCase());
}

应接受此建议,因为它包括输入验证、错误处理和使用合理的正则表达式模式。

何时拒绝建议

在以下情况拒绝 Copilot 的建议:

  • 不要解决你的提示:代码解决了与请求不同的问题。
  • 包含安全漏洞:使用不安全的做法或公开敏感数据。
  • 过于复杂:使用不必要的复杂性实现的简单任务。
  • 使用已弃用的方法:依赖于过时或已废弃的应用程序接口 (API)。
  • 缺少错误处理:不要考虑潜在的故障情况。
  • 违反编码标准:不要遵循团队的既定做法。

要拒绝的建议示例

提示: “创建安全密码验证函数”

不佳的建议

function validatePassword(password) {
    return password.length > 6;
}

这应该被拒绝,因为它过于简单,无法正确验证密码强度。

何时修改建议

在以下情况下修改 Copilot 的建议:

  • 主要是正确的,但需要调整:核心逻辑是健全的,但细节需要调整。
  • 需要其他功能:基本功能良好,但需要增强功能。
  • 存在小样式问题:代码有效,但与格式设置首选项不匹配。
  • 需要不同的变量名称:逻辑正确,但可以改进命名。
  • 需要性能优化:功能优化,但效率可能更高。

要修改的建议示例

Copilot 建议:

function calculateTotal(items) {
    let total = 0;
    for (let i = 0; i < items.length; i++) {
        total += items[i].price;
    }
    return total;
}

您的修改以提高可读性和现代 JavaScript:

function calculateTotal(items) {
    return items.reduce((total, item) => total + item.price, 0);
}

改进建议的策略

如果建议不太正确,请尝试以下方法:

优化提示

  • 添加更具体的要求。
  • 包括预期输入/输出的示例。
  • 指定正在使用的编程样式或框架。

请求修改

  • “使上一个函数在错误处理时更加可靠。
  • “简化刚刚编写的代码。”
  • “将 TypeScript 类型添加到上一个函数。”

以增量方式生成

  • 从基本版本开始,并请求增强功能。
  • 一次添加一个功能,而不是一次请求一切。
  • 在移动到下一个增强功能之前测试每个迭代。

Tip

修改建议时,请保留正常运行的部件,并特定于需要更改的内容。 这有助于 Copilot 了解偏好并提供更好的未来建议。

Summary

为 GitHub Copilot 创建有效的提示对于最大限度地发挥其在 vibe coding 中的潜力至关重要。 从常规说明开始,提供具体示例、分解复杂任务和维护清晰的通信,可以指导 Copilot 生成满足需求的高质量代码。 循环访问提示并了解如何评估建议将进一步增强开发体验,使你能够有效地利用 AI 帮助,同时保持对编码过程的控制。