AI 集成
近两年大语言模型(Large Language Model,LLM)的大风席卷了所有计算机领域,如今基本上每个产品都会搞点 AI 能力集成。笔者也尝试将 Emacs + AI 的一些使用方式和心得体会分享一下。
准确地说,当前所谓的“AI 能力”就是特指利用当前的大语言模型做一些信息搜索和提炼方面的事情。这也是当前 LLM 最实用的两个能力。我们可以利用现有的工具和 Emacs 的拓展能力,将 LLM 的功能和 Emacs 结合在一起,提高效率。根据前面的教程,Emacs 已经成为了一个代码编辑器、笔记管理器、日程管理器和文献管理器,也就是说 Emacs 是我们个人知识和技术的聚集地,在这里集成可定制化的 AI 技术,再合适不过。
考虑到当前国内的环境用 ChatGPT 等国外大模型的 API 十分麻烦,且很容易被封。笔者已经逐步转移到使用国产大模型,只不过需要做一些适配的工作。笔者选了通义千问作为主力模型,因为客观来说通义总体实力属于第一梯队,种类丰富且价格便宜,阿里资源投入也够多在未来一段时间内应该不会凉;主观来说笔者自己的工作就在支撑着通义的训练,小小的支持和宣传一下。当然了,读者总是可以把配置中的 URL 一换改用任何一个大模型,比如文心一言。
前置操作
我们以下的操作都是基于大模型的 API,因此我们需要注册一个平台的账号,获得 API 的使用方法。通常来说,主流平台都会有 HTTP API,并且用法是和 OpenAI 的 API 保持兼容的。以通义为例,首先访问这里按照流程注册账号、开通 Dashscope 服务、生成 API key。API key 就是访问你的账号的大模型的钥匙,因此需要保管好,不要不小心发布到公共平台,如果泄露了要及时删除。 通义系列当前可选的模型有如下这些,由于为了简化插件逻辑,笔者当前使用的通义的 OpenAI-compatible-API,因此不是所有模型都可以用这种方式使用。
模型分类 | 模型名称 |
---|---|
通义千问 | qwen-max |
qwen-max-0428 | |
qwen-max-0403 | |
qwen-max-0107 | |
qwen-max-longcontext | |
qwen-plus | |
qwen-turbo | |
通义千问 VL 系列 | qwen-vl-plus |
qwen-vl-max | |
通义千问开源系列 | qwen1.5-110b-chat |
qwen1.5-72b-chat | |
qwen1.5-32b-chat | |
qwen1.5-14b-chat | |
qwen1.5-7b-chat | |
qwen1.5-1.8b-chat | |
qwen1.5-0.5b-chat | |
codeqwen1.5-7b-chat | |
qwen-72b-chat | |
qwen-14b-chat | |
qwen-7b-chat | |
qwen-1.8b-longcontext-chat | |
qwen-1.8b-chat |
模型的性能和价格基本上按从上到下的顺序递减,官网详细的价格表见通义千问系列价格、通义千问 VL 系列、通义千问开源系列。根据笔者的体验,很多时候其实并不需要追求太大的模型,7b、14b 可以覆盖绝大部分场景,简单的任务 1.8b 也能完成。使用这种比较小的模型如果不是重度使用,一个月用下来基本几块钱可以打住。因此读者根据自己的经济能力量力而行即可。同时新账号有免费额度,羊毛还是可以薅一下的。
对话
这个方法其实约等于把 Chat 模型的网页界面搬到 Emacs 里,额外增加的能力就是方便文字和代码的输入输出,不用频繁的跳转到网页上去。这也是大模型最最基本的用法。
前面的一篇教程中,笔者介绍了 chatgpt-shell 这个插件,笔者基于这个插件修改成了 qwen-chat-shell,适配了 Dashscope 的 API 和通义模型、替换了中文的 prompt,方便大家直接使用。
首先按照如下进行配置,读者需把自己的 API key 替换上去。同时读者可以选择自己偏爱的模型,默认即为 qwen1.5-1.8b-chat
模型:
1 (use-package qwen-chat-shell
2 :ensure t
3 :config
4 (setq qwen-chat-shell-dashscope-key "sk-abcdefghijklmn12345678")
5 (setq qwen-chat-shell-current-model "qwen1.5-1.8b-chat"))
使用方法为:
- 启动 Shell:
M-x
qwen-chat-shell
。 - 切换模型:
M-x
qwen-chat-shell-switch-model-version
或快捷键C-c C-v
。 - 切换 Prompt:
M-x
qwen-chat-shell-switch-model-version
或快捷键C-c C-s
。