现已发布!阅读关于 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 将会抓住您的代码来生成遵循现有模式的建议,因此“垃圾进,垃圾出”的格言适用。始终保持高标准需要纪律。特别是当您快速而宽松地编写代码以使其正常工作时,您可能希望在“黑客”模式下禁用完成。要暂时暂停内联建议,请在状态栏中选择 Copilot 菜单,然后选择暂停按钮以将暂停时间增加五分钟。要恢复内联建议,请在 Copilot 菜单中选择取消暂停按钮。

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

充分利用聊天

当您使用聊天时,您可以做几件事来优化您的体验。

添加相关上下文

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

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

例如,使用 #<file name>#<folder name>,您可以在聊天提示中引用工作区中的特定文件或文件夹。这通过提供有关您正在处理的文件的上下文,有助于使 Copilot Chat 的答案与您的代码更相关。您可以问诸如“您能对 #package.json 提出改进建议吗?”或“如何在 #devcontainer.json 中添加扩展?”之类的问题。

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

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

了解有关在聊天中使用上下文的更多信息。

具体且保持简单

当您要求聊天做某事时,请具体说明您的要求,并将大型任务分解为单独的、较小的任务。例如,不要要求聊天创建一个使用 TypeScript 和 Pug 的 Express 应用程序,并且该应用程序具有从 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.