面向产品经理的Emacs教程:27. 在Emacs里使用ChatGPT

· 1704字 · 4分钟

1 课程回顾 🔗

上节课我们学习了如何在一台电脑上维护多套 Emacs 配置,我们可以通过这个机制在不同的场景启动不同配置的 Emacs 来完成不同的任务。

这节课,我们来学习如何在 Emacs 里使用 ChatGPT。

2 概述 🔗

ChatGPT 的横空出世,给人们的学习、生活,乃至社会的经济、结构,都正在产生或即将产生重要的影响。它的出现,将逐渐改变人们的工作方式。在美国 Prompt Engineer 已经成为了一个新兴的高收入职业。

Notion AICursorMicrosoft 365 Copilot 等这样的产品出现后,在编辑器里使用 ChatGPT 已经成为一种潮流,也将极大的提升人们的工作效率。

作为自由软件代表的 Emacs,也必然不会落人身后,在 Github 搜索 ChatGPT 的关键词,可以看到有很多项目:

其中就有 emacs-china论坛 里很多朋友开发的插件,大家可以试用:

结合我自己使用 Emacs 场景的需求:

  1. 支持中文 prompt;
  2. 支持在当前光标插入访问 ChatGPT 后的内容,如 Notion AI 一样;
  3. 支持 Org-mode babel;
  4. 支持选择区域后访问 ChatGPT;
  5. 最好是一个插件搞定,不要装太多依赖;

这里我使用的是 org-ai 这个插件,下面简单以该插件为例,介绍如何在 Emacs 里使用 ChatGPT,以及如何通过它来提升我们的工作效率。

3 前置条件 🔗

在 Emacs 里使用 ChatGPT 有一些前置条件:

  1. 你必须有一个 OpenAI 的帐号能够访问 ChatGPT;
  2. 在这个帐号下创建一个 OpenAPI Key;
  3. 一个稳定的漂亮国梯子;

在 Emacs 里设置代理,可以在你的配置文件里添加如下的配置,其中 7890 是科学上网的端口号,你应该根据自己使用的软件来设置:

(setq url-proxy-services
      '(("http"  . "127.0.0.1:7890")
        ("https" . "127.0.0.1:7890")))

注:

  1. 如何注册 OpenAI 的帐号,网上有很多教程,难点在于国外手机号;
  2. 稳定的漂亮国梯子很重要,尤其是最近 OpenAI 封禁了一大批 IP 登录在亚洲的帐号;
  3. OpenAI 的 Key 注册后有3个月时效的 18 美元的试用额度,过期之后,得重新注册帐号获得免费试用,或者绑定支付信息;
  4. 如果你不想用 OpenAPI Key,可以尝试使用 emacs-aichatChatGPT.el 通过浏览器 Cookie 的方式使用;

4 org-ai 安装配置 🔗

org-ai 的安装非常简单,作者已经上传到 elpa 里:

(use-package org-ai
  :ensure t
  :bind (
         ("C-c q" . org-ai-prompt)
         ("C-c x" . org-ai-on-region)
         )
  :hook (org-mode . org-ai-mode)
  :config
  ;; (setq org-ai-openai-api-token "Your Key") ; 以明文的方式存储key,或者放入到 ~/.authinfo.gpg 文件里
  (setq org-ai-default-max-tokens 480)
  (setq org-ai-default-chat-system-prompt "你是一个Emacs助手,请以Org-mode的格式来回复我")
  )

其中,比较重要的设置是 org-ai-openai-api-token 的设置,这个变量有好几种配置方法:

  1. 放入到 ~/.authinfo.gpg 文件,插件能自动读取;
  2. 写入到某个 personal.el.gpg 文件里,在配置文件里加载这个文件;
  3. 通过 pass 来管理;
  4. 明文设置(不推荐)。

这里仅介绍如何通过 ~/.authinfo.gpg 文件存储 key,在这个文件里,新增一行如下,其中你需要把 sk-yourkey 替换成你自己的 key,然后 org-ai 会自动的读取并设置:

machine api.openai.com login org-ai password sk-yourkey

5 org-ai 的使用 🔗

5.1 场景一:当前光标插入 🔗

写文档时,按下 C-c q (org-ai-prompt) 通过 prompt 在当前光标出插入请球 ChatGPT 后的结果:

这里只是拿绘制一个表格的 prompt 举例,实际上你可以发挥你的想象,让 ChatGPT 帮你做很多事情,例如写一个文档的大纲,写一段代码等等。

5.2 场景二:选择文本后处理 🔗

选中一段文本,按下 C-c x (org-ai-on-region) 来对选中的文本进行 prompt:

5.3 场景三:在 Org 文件里交互式访问 🔗

你也可以在 Org 文件里,交互式地访问 ChatGPT:

5.4 场景四:生成一张图片 🔗

6 题外话 🔗

ChatGPT 结果的好坏依赖于 prompt engineering 的技术,它需要我们经常使用,掌握 ChatGPT 的习性,了解如何教导它才能生成你要的结果。

ChatGPT 的出现,不同于以往的技术革命,这次它的出现,影响是极其重大且深远的,对我们普通人亦然。我们应当抱着开放的态度去接受它,理解它,用好它。

正是有了 ChatGPT 的出现,文科和理科生的鸿沟被拉平,未来文科生,或者对世界描述更精准细腻的人将越来越占优势。

从个人情感上讲,我希望中国出现一个超越 OpenAI 的公司,虽然目前看很难,但我们还是要相信会越来越好。

7 结语 🔗

今天我们学习了如何在 Emacs 里使用 ChatGPT,这只是一个开始,使用 ChatGPT 需要有强大的想象力,你的想象力有多大,它就可能为你带来多少价值。

从今天开始,拥抱变化,拥抱智能,让它帮你产生更多的价值,Emacs 恰恰这样一个非常合适的载体。

这节课的配置文件的快照见:emacs-config-l27.org

你也可以在 这里 查看最新的配置文件。