VS Code 中的提示工程
本文涵盖了编写提示以从 Visual Studio Code 中的 AI 获得更好、更相关的响应的技巧。提示工程或提示构建是您在讨论 AI 时经常会听到的术语,指的是如何以及将哪些信息打包并发送到 AI API 端点。
如果您不熟悉 VS Code 或 AI,您可能需要先查看 VS Code 中的 AI 概述 文章,或者直接进入 入门 教程。
充分利用行内建议
行内建议通过自动提供建议来完成您的代码、注释、测试等,从而帮助您更有效地编写代码。您可以做一些事情来帮助(“提示”)AI 提供最佳建议。
提供上下文
当 AI 拥有足够的上下文来了解您正在做什么以及您需要什么帮助时,它才能发挥最佳效果。就像您在向同事寻求特定编程任务的帮助时会提供上下文一样,您也可以对 AI 执行相同的操作。
打开文件
对于行内建议,VS Code 会查看您编辑器中的当前和打开的文件,以分析上下文并创建适当的建议。在使用行内建议时,在 VS Code 中打开相关文件有助于设置此上下文,并让 AI 了解您的项目的全局视图。
顶级注释
就像您会向同事提供简短的高级介绍一样,您正在处理的文件中的顶级注释可以帮助 AI 了解您正在创建的整体上下文。
适当的包含和引用
最好手动设置您工作所需的包含项或模块引用。AI 可以提出建议,但您最了解需要包含哪些依赖项。这还可以帮助 AI 了解您希望它在构建建议时使用的框架、库及其版本。
在下面的 TypeScript 示例中,我们希望记录 add 方法的输出。当没有任何包含项时,AI 建议使用 console.log
另一方面,当您添加对 Log4js 的引用时,AI 建议使用该框架记录输出

有意义的函数名称
就像名为 fetchData() 的方法对同事(或您几个月后)没有太大意义一样,fetchData() 也无法帮助 AI。使用有意义的函数名称有助于 AI 提供实现您想要的功能的主体。
具体且范围明确的函数注释
函数名称的描述性只能达到一定程度,而不会过于冗长。函数注释可以帮助填补 AI 可能需要了解的细节。
用示例代码启动 AI
让 AI 走上正轨的一个技巧是将接近您正在寻找的内容的示例代码复制并粘贴到您打开的编辑器中。提供一个小示例可以帮助 AI 生成与您想要实现的语言和任务匹配的建议。一旦 AI 开始为您提供您想要并实际使用的代码,您可以从文件中删除示例代码。这对于启动 AI 到较新的库版本特别有用,而 AI 默认提供较旧的代码建议。
保持一致并保持高质量标准
AI 将会利用您的代码来生成遵循现有模式的建议,因此“垃圾进,垃圾出”的谚语适用。始终保持高质量标准需要自律。尤其是在您快速松散地编写代码以使其正常工作时,您可能需要在“黑客”模式下禁用补全。要暂时暂停行内建议,请选择状态栏中的 Copilot 菜单,然后选择 暂停 按钮以将暂停时间增加五分钟。要恢复行内建议,请选择 Copilot 菜单中的 取消暂停 按钮。

充分利用聊天功能
当您使用聊天时,您可以做一些事情来优化您的体验。
添加相关上下文
您可以输入 # 后跟您想要提及的上下文项,从而显式地将上下文添加到您的提示中。VS Code 支持不同类型的上下文项:文件、文件夹、代码符号、工具、终端输出、源代码控制更改等。
在聊天输入字段中键入 # 符号以查看可用上下文项的列表,或选择聊天视图中的 添加上下文 以打开上下文选择器。
例如,使用 #<文件名> 或 #<文件夹名>,您可以引用工作区中的特定文件或文件夹,以便在您的聊天提示中。这有助于使 Copilot Chat 的答案更贴近您的代码,因为它提供了有关您正在处理的文件上下文。您可以提出诸如“你能建议改进 #package.json 吗?”或“如何在 #devcontainer.json 中添加扩展?”之类的问题。
与其手动添加单个文件,您可以让 VS Code 使用 #codebase 从您的代码库中自动查找正确的文件。当您不知道哪些文件与您的问题相关时,这会很有用。

了解更多关于 在聊天中使用上下文 的信息。
具体且保持简单
当您要求聊天执行某些操作时,请在您的要求中具体说明,并将大型任务分解为单独的较小任务。例如,不要要求聊天创建使用 TypeScript 和 Pug 的 Express 应用程序,并且该应用程序具有从 MongoDB 数据库检索数据的产品页面。相反,首先要求创建使用 TypeScript 和 Pug 的 Express 应用程序。接下来,要求添加产品页面,最后要求从数据库检索客户数据。
当您要求聊天执行特定任务时,请具体说明您想要使用的输入、输出、API 或框架。您的提示越具体,结果就越好。例如,不要使用“从数据库读取产品数据”,而要使用“按类别读取所有产品,以 JSON 格式返回数据,并使用 Mongoose 库”。
迭代您的解决方案
当您向聊天寻求帮助时,您不会被第一个响应所束缚。您可以迭代并提示聊天以改进解决方案。聊天同时具有生成的代码的上下文以及您当前的对话。

也许您更喜欢不使用递归的解决方案

您甚至可以要求 AI 遵循编码约定或改进变量名称

即使您已经接受了结果,您也可以随时要求 AI 稍后迭代代码。
关于 Copilot 提示的更多资源
如果您想了解更多关于高效使用 GitHub Copilot 的信息,您可以关注以下视频和博客文章