AI代码意图

AI代码意图

任何现代集成开发环境(IDE)都包含代码意图(Code Intentions),它们允许您根据上下文对代码执行一些预定义的操作。例如,对于一个for语句,可以有几种意图,如转换为while反向顺序使用流等。使用意图非常方便,因为它允许我们快速进行重构或对代码进行某些操作。

意图的开发相当困难,因此它们通常由各个IDE供应商硬编码并与IDE捆绑在一起。在某些IDE中,可以开发自己的意图,但这并不容易,因为它需要对IDE平台有很好的了解,编写大量代码,开发插件来部署意图等。

然而,硬编码的意图可能会过时。如今,您可以要求一个LLM(例如ChatGPT)在代码上执行某些操作,而这非常简单。您只需提供代码片段和适当的提示即可。例如,如果您向ChatGPT提供以下循环和反向循环的方向提示:

您将得到与使用IDE提供的类似硬编码意图相同的结果:

因此,引入基本上是绑定到某个上下文的命名AI提示的AI意图是非常自然的。上下文可以是文件、类、语句、特定方法等,IDE将负责提供正确的上下文,使用正确的提示向LLM提问,获取和解析结果,并将其提交回代码。

具有AI意图的优势包括:

  1. 几乎可以使用普通语言完成任何重构。提示可以简单到例如使用format替换(针对众所周知的API,如Java的PrintStream.println(String)),或者可以更复杂,对于不太知名的API可以提供更多的指令。
  2. 无需硬编码AI意图。
  3. 无需编写插件来分发AI意图。
  4. AI意图可以轻松地进行用户配置。
  5. 无需使用聊天接口,特别是对于重复的活动。
  6. 与使用聊天接口相比,LLM令牌流量较少,可以节省成本。

另一个很酷的选择是将AI意图直接嵌入到API中,使用注解。这样的声明性AI意图会指示IDE每个类、字段或方法可用的意图以及使用哪个提示来执行特定的意图。这样的声明性AI意图可以由框架/库的作者提供,并且因此可以立即在支持它们的IDE中供所有开发者使用。

例如,以下注解将指定一个使用format替换的AI意图,允许将采用拼接字符串的println(String)调用替换为采用格式和参数列表的println(String, Object...)调用:

将此意图应用于调用:

将会得到:

使用声明性AI意图可以大大改善处理已弃用的API。因此,某些/每个已弃用的方法可以包含几个AI意图,以将其重构为现代版本-不再需要将来跳过重构。浏览文档和手动编码-只需单击即可使您的代码保持最新。

我相信AI意图是IDE和LLM集成的未来。因此,我希望它们将在最近的未来出现在许多IDE中。