为 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 生成完整的单词搜索谜题,不如将其分解:
Write a function to generate a 10 by 10 grid of lettersWrite a function to find all words in a grid of letters, given a list of valid wordsWrite a function that uses the previous functions to generate a 10 by 10 grid containing at least 10 wordsUpdate 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 帮助,同时保持对编码过程的控制。