问答:如何使用 GPT 知道我写 R 代码?

问:我用文字描述的方式请教 copilot 指导我写 R 代码(科研作图用),但效果不好。与此同时我查到一现成的完美代码,但因为看不懂,无法根据实际情况调整,所以也无法复现。这个时候我想让 copilot 帮我协调一下,即用现成的代码基础上根据我的说明进行调整,promote 我应该一次性说清楚,还是分多次?

答:

不确认是说的 GitHub Copilot 还是 MS Copilot,前者是辅助代码自动完成,后者是大语言模型。如果是完整代码,那么大语言模型会效果更好,如果是某个功能模块内部代码,那么代码自动完成效果好。GitHub Copilot 也有 Copilot Chat,是针对代码微调的 GPT-4 版本,代码能力很强,缺点是上下文窗口长度只有 8K(我记忆中)

问题中这种情况适合大语言模型,因为可以完整输入你所有代码(如果不是特别长)。所以建议先一次性将所有需求包括要参考的代码提交给大语言模型,然后看输出的结果是不是满足要求,根据输出的内容进一步提要求或者追问。不仅限于生成代码,还可以让其对参考的代码写注释,解释代码。

这种写代码、解释代码任务记住几个基本原则:

  1. 你提供的上下文信息越完整,要求越清晰,越能得到好的结果。 所以尽可能输入完整代码内容。如果代码太长,可以把一个独立模块输入,如果模块有外部引用的代码,加上注释说明其作用也可以的。

  2. 注意上下文长度限制 每个模型都有其限制的上下文长度,比如 ChatGPT Plus 中的 GPT-4,最长上下文是 32K Tokens,相当于 2 万左右单词。如果你输入的上下文太长,需要手动整理拆分,输入的内容不要超过上下文长度限制 1/2,因为上下文窗口限制不仅仅是针对输入,是输入和输出加一起。

但也不是说限制 32K,你就可以顶格输入输出到 32K,这里面还有两个问题: 1). App 本身会对输入的长度进行优化,比如说你在 ChatGPT 里面聊天,同一个会话一直聊,那么最前面的会话到一定时候就会被截断或者摘要,会丢失很多信息 2). 输入的内容越多,模型出现幻觉的可能越大,输出质量也会下降,所以尽可能让输入小一些会质量更高一些

  1. 尽可能使用能力最强的模型 比如你使用免费的 GPT-3.5 和收费的 GPT-4,效果会差别很大,有条件的话建议花钱订阅高质量的模型,例如 GPT-4 或者 Claude 3 等

最后就是多试试不同的方式,比如解释代码、先实现个小模块,肯定是能帮到你的。