- 1 课程回顾
- 2 概述
- 3 前置条件
- 4 org-ai 安装配置
- 5 org-ai 的使用
- 5.1 场景一:当前光标插入
- 5.2 场景二:选择文本后处理
- 5.3 场景三:在 Org 文件里交互式访问
- 5.4 场景四:生成一张图片
- 6 题外话
- 7 结语
1 课程回顾 🔗
上节课我们学习了如何在一台电脑上维护多套 Emacs 配置,我们可以通过这个机制在不同的场景启动不同配置的 Emacs 来完成不同的任务。
这节课,我们来学习如何在 Emacs 里使用 ChatGPT。
2 概述 🔗
ChatGPT 的横空出世,给人们的学习、生活,乃至社会的经济、结构,都正在产生或即将产生重要的影响。它的出现,将逐渐改变人们的工作方式。在美国 Prompt Engineer
已经成为了一个新兴的高收入职业。
在 Notion AI 、Cursor 、Microsoft 365 Copilot 等这样的产品出现后,在编辑器里使用 ChatGPT 已经成为一种潮流,也将极大的提升人们的工作效率。
作为自由软件代表的 Emacs,也必然不会落人身后,在 Github 搜索 ChatGPT 的关键词,可以看到有很多项目:
其中就有 emacs-china论坛 里很多朋友开发的插件,大家可以试用:
结合我自己使用 Emacs 场景的需求:
- 支持中文 prompt;
- 支持在当前光标插入访问 ChatGPT 后的内容,如 Notion AI 一样;
- 支持 Org-mode babel;
- 支持选择区域后访问 ChatGPT;
- 最好是一个插件搞定,不要装太多依赖;
这里我使用的是 org-ai 这个插件,下面简单以该插件为例,介绍如何在 Emacs 里使用 ChatGPT,以及如何通过它来提升我们的工作效率。
3 前置条件 🔗
在 Emacs 里使用 ChatGPT 有一些前置条件:
- 你必须有一个 OpenAI 的帐号能够访问 ChatGPT;
- 在这个帐号下创建一个 OpenAPI Key;
- 一个稳定的漂亮国梯子;
在 Emacs 里设置代理,可以在你的配置文件里添加如下的配置,其中 7890
是科学上网的端口号,你应该根据自己使用的软件来设置:
(setq url-proxy-services
'(("http" . "127.0.0.1:7890")
("https" . "127.0.0.1:7890")))
注:
- 如何注册 OpenAI 的帐号,网上有很多教程,难点在于国外手机号;
- 稳定的漂亮国梯子很重要,尤其是最近 OpenAI 封禁了一大批 IP 登录在亚洲的帐号;
- OpenAI 的 Key 注册后有3个月时效的 18 美元的试用额度,过期之后,得重新注册帐号获得免费试用,或者绑定支付信息;
- 如果你不想用 OpenAPI Key,可以尝试使用 emacs-aichat 或 ChatGPT.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
的设置,这个变量有好几种配置方法:
- 放入到
~/.authinfo.gpg
文件,插件能自动读取; - 写入到某个
personal.el.gpg
文件里,在配置文件里加载这个文件; - 通过
pass
来管理; - 明文设置(不推荐)。
这里仅介绍如何通过 ~/.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
你也可以在 这里 查看最新的配置文件。