现已发布!阅读关于 11 月新增功能和修复的内容。

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

当文件中没有导入时,AI 内联建议提出 Console.log。 另一方面,当您添加对 Log4js 的引用时,AI 会建议使用该框架来记录输出

AI inline suggestion proposes logging using the imported logging framework.

有意义的函数名称

就像一个名为 fetchData() 的方法对同事(或几个月后的您)来说意义不大一样,fetchData() 对 AI 也无济于事。使用有意义的函数名称有助于 AI 生成您想要的代码。

具体且作用域明确的函数注释

函数名称在不至于过长的情况下只能描述这么多。函数注释可以帮助填充 AI 可能需要了解的详细信息。

为 AI 提供示例代码

让 AI 更好地理解您想法的一个技巧是,将与您想要的内容相似的示例代码复制并粘贴到打开的编辑器中。提供一个小示例可以帮助 AI 生成与您想要实现的语言和任务相匹配的建议。一旦 AI 开始为您提供您想要并且实际上会使用的代码,您就可以从文件中删除示例代码。当 AI 默认提供旧版代码建议时,这对于启动 AI 使用较新库版本特别有用。

保持一致并保持高质量标准

AI 会借鉴您的代码来生成遵循现有模式的建议,因此“输入垃圾,输出垃圾”这句格言在这里也适用。始终保持高质量标准可能需要自律。尤其是在您为了让某项功能正常工作而快速编码时,您可能希望在“黑客”模式下禁用自动完成。要暂时暂停内联建议,请在状态栏中选择 Copilot 菜单,然后选择暂停按钮将暂停时间增加五分钟。要恢复内联建议,请在 Copilot 菜单中选择取消暂停按钮。

Screenshot of the Copilot menu in the Status Bar with Snooze and Cancel Snooze buttons.

充分利用聊天功能

使用聊天功能时,您可以采取多种措施来优化您的体验。

添加相关上下文

您可以通过键入 # 后跟您想要提及的上下文项来显式地向您的提示添加上下文。VS Code 支持不同类型的上下文项:文件、文件夹、代码符号、工具、终端输出、源代码管理更改等。

在聊天输入字段中键入 # 符号,即可看到可用上下文项列表,或在聊天视图中选择添加上下文以打开上下文选择器。

例如,使用 #<文件名>#<文件夹名>,您可以在聊天提示中引用工作区中的特定文件或文件夹。通过提供您正在处理的文件上下文,这有助于使 Copilot Chat 的答案更符合您的代码。您可以提出类似“能否为 #package.json 建议一些改进?”或“如何在 #devcontainer.json 中添加扩展?”这样的问题。

您可以使用 #codebase,让 VS Code 自动从您的代码库中查找相关文件,而不是手动添加单个文件。当您不知道哪些文件与您的问题相关时,这会很有用。

Screenshot of Chat view, showing the Attach context button and context Quick Pick.

详细了解在聊天中使用上下文

具体且保持简洁

当您让聊天功能执行某项操作时,请在您的请求中具体说明,并将大型任务分解为单独、较小的任务。例如,不要要求聊天功能创建一个 Express 应用,该应用使用 TypeScript 和 Pug,并且有一个从 MongoDB 数据库检索数据的产品页面。相反,首先要求创建带有 TypeScript 和 Pug 的 Express 应用。接下来,要求添加产品页面,最后要求从数据库检索客户数据。

当您要求聊天功能执行特定任务时,请具体说明您要使用的输入、输出、API 或框架。您的提示越具体,结果就越好。例如,不要说“从数据库读取产品数据”,而要说“按类别读取所有产品,将数据以 JSON 格式返回,并使用 Mongoose 库”。

迭代您的解决方案

当您向聊天功能寻求帮助时,您不必局限于第一个响应。您可以迭代并提示聊天功能来改进解决方案。聊天功能既拥有生成代码的上下文,也拥有您当前对话的上下文。以下是一个使用内联聊天创建计算斐波那契数的函数的示例

First response from AI for a function to calculate Fibonacci numbers

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

Ask AI to not use recursion and new result

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

Ask AI to use better variable names and new result

即使您已经接受了一个结果,您也可以随时要求 AI 稍后迭代代码。

有关 Copilot 提示的更多资源

如果您想进一步了解如何高效使用 GitHub Copilot,可以查阅这些视频和博文

© . This site is unofficial and not affiliated with Microsoft.