在Obsidian搭建通义千问AI助手
因为各种原因国内使用 OpenAI,Gemini 等模型多少有一些困难,上周参加达摩院内部的关于通义千问的干货分享,内部版本的通义千问模型的测试数据已经可以对标甚至超越它们。感觉开发 Qwen 作为自己 Obsidian AI 助手的时机已经成熟,也是一个学习 langchain 和 RAG 的过程。
效果展示
搭建步骤
1. 申请 Aliyun DashScope
通义千问 API 可以通过阿里云的灵积平台申请使用,你只需要注册号阿里云账号即可申请 DashScope 模型服务,在 API-KEY 管理 Tab 即可以创建 API key。
2. Obsidian 配置
2.1 terminal 插件
在 obsidian 中安装 terminal 插件用于运行 TUI App。
2.2 cogito 应用
- 先准备 python3.10 环境(电脑上一般默认都会有 python,注意一下最低版本要求)
- 拉取我开发的通义千问 App 代码
git clone https://github.com/edonyzpc/cogito.git
(例如将 app 放在 obsidian vault 根目录下${vault_path}/cogito
2.3 启动 obsidian AI 助手
手动方式:
- obsidian 命令面板启动 integrate terminal
- 执行启动命令
source ~/code/cogito/.cogitorc
自动方式:
- 通过 hotkey 为 terminal command 添加快捷键
- 一键启动 cogito app
2.4 AI 助手
开始让通义千问AI助手帮助你在 obsidian 记录吧:
- 提供灵感
- 总结笔记
- 翻译文档
- 搜索增强
- ......
代码原理
我自己开发 Obsidian AI 助手命名为 cogito,主要原理是使用 Textual 绘制 TUI 用于交互,使用 LangChain 开发大语言模型应用。
TUI
cogito 使用 Textual 绘制 UI 组件,Textual 框架主要是基于 Rich 开发的, Rich 是一个 Python 库用于终端中的富文本和漂亮的格式,丰富的API可以轻松地将颜色和样式添加到终端输出中。Rich还可以呈现漂亮的表格、进度条、标记、语法突出显示的源代码、回溯等。这样的 TUI 框架可以让 App 顺利的运行在 Obsidian 中。
LangChain
LangChain 是一个开源框架,全称为“Language Model Chains”,它专为促进基于语言模型的应用程序开发而设计。这个框架的核心目标是简化开发者构建复杂 NLP 应用程序的过程,特别是那些利用大型预训练语言模型(如OpenAI的GPT系列、Google的PaLM、阿里云的通义千问等)的项目。它提供了一系列工具和模块,帮助开发者更容易地集成不同的语言模型服务,管理对话历史、状态跟踪、数据源对接、以及安全性和可扩展性等方面的挑战。它通过抽象化底层细节,使开发者能够快速构建高级功能,比如多轮对话系统、文档查询、知识管理应用、代码生成、文本摘要等,而无需从零开始编写所有基础逻辑。
后续计划
提升 cogito 与 Obsidian 的集成度:
- 建立 obsidian 笔记 prompt 库提升效率
- function call 调用外部工具增加 cogito 精确度
- RAG 为 LLM 提供了对外部知识的访问增加 obsidian 笔记的丰富度