v0.6.3更新: 创建和更新大量本地知识库的时候会即时保存,即使中断下次也可在断点继续更新。
Tianshu(天书)是一个可以常驻桌面随时使用ChatGPT的跨平台应用。无需打开网页或切换窗口,随时随地在你的工作流中和AI聊天。还有本地知识库,联网搜索,操控本地系统等功能。需要OpenAI的官方key或其他第三方gpt转发服务的key。
- 在工作流中随时随地的和ChatGPT等大语言模型对话
- 和任意可选中的文字内容对话
- 轻松创建个人知识库构建独有的问答机器人
- 超长文本全文阅读
- 自定义prompt
- 选择各种不同的大语言模型
- 使用google和wikipedia来增强问答的真实性
- 本地存储对话历史和快速查询
- 对话生成并执行python脚本
- 对话控制本地系统(通过applescript/vbscript)
打包好的版本,开箱即用。支持MacOS、Windows 10、Windows 11。
MacOS下载dmg后缀的安装包, Windows下载exe后缀的安装包。
- GitHub下载地址:https://github.com/newfyu/Tianshu/releases
- 百度盘下载地址:https://pan.baidu.com/s/1B1JYtURbM90u344-X2rQZA 提取码: 1234
Mac上如果提示什么文件损坏,安全权限问题,在“通用”-“隐私与安全”中打开。
本仓库不提供源码,Tianshu由Brainshell和Braindoor两个项目打包而成。源码可以去各自的仓库查看。
点击设置
图标,填入OpenAI的key。如果你的网络无法访问openai,还需要填入代理地址。(如果你不知道填什么,就反向代理中无脑填 https://api.openai-proxy.com ) 。更多设置详见安装和配置
启动后是窗口模式,和日常的窗口应用没有区别,可以任意调整大小和位置。
调整到合适大小和位置后,点击“锁”图标后变成无框模式,将置顶并且不能调整大小,但仍可以对话框下方空白区域拖动。建议放置到屏幕左下角或右下角,就像网络游戏的聊天窗口一样,无框透明设计方便融入日常大部分工作环境。当然也有喜欢只用窗口模式的,看个人习惯吧。
Enter
键是提交输入。Shift-Enter
换行。- 斜杠“
/
” 会开启一个功能标签的选择列表,提供扩展功能。标签可以通过缩写查询。 - 下方四个按钮分别是“
新建对话
”,“删除对话
”,“无框模式
”,“设置
”。 - 点击右下角的页码或
Cmd/Ctrl + F
,打开历史记录查询。方向键上下选择,Enter
键提交,Esc
键关闭。 Alt/Option + C
是全局Chat唤起的默认快捷键。在使用任意其他程序的过程中,选中文字后按下快捷键,将会对选中的文字发起问答。
全局Chat功能允许你在系统任何地方调出输入窗口,并对选中的文字内容发起对话。默认快捷键Option/Alt + C
. 如果和其他系统快捷键有冲突,可以在设置->全局Chat
中修改。
MacOS 还需要添加辅助功能权限!,详见全局chat
用于把长文档加入上下文,可以超过ChatGPT的token长度限制。详见全文阅读
有两种方式启用
- 如果粘贴一大段文字到输入框中提交,超过预设的限制(默认12000 token,可在config.yaml中修改),会自动转成全文阅读模式
- 拖拽一个文件(txt, md, pdf, html, docx)到输入框后,也会开启全文阅读模式。然后可以对该文本中内容进行问答。
当ChatGPT的能力不能满足我们的需要时,我们常会使用GPT-4或Claude。但GPT-4和Claude的API非常难以获得,后续费用也伤不起。所以将网页版的GPT-4、Claude、Bing集成到了这个称为WebChat
的功能中。网页版的另一个好处是,虽然有一定时间周期内的使用次数限制,但不消耗token。
鼠标悬浮到新建对话
按钮上后会看到WebChat
的按钮,打开后和在日常浏览器中使用网页版完全一样,需要登录。
这些网站都是禁止国内访问的,软件自动使用
设置
中的正向代理
地址进行代理。如果无法访问,尝试在设置->正向代理
中更换你可用的代理地址。
使用"/
"打开功能标签,选择ChatGPT-Web
或Claude-Web
,会自动打开网页版的聊天窗口,并且会自动把输入框中的文字复制进去。包括在使用Alt+C
和文字对话时候也能生效。
使用斜杠"/
"打开标签列表,插入特定标签后会提供额外的功能,标签有五种类型。
就是提示词模板了,插入[prompt]标签后,会对你输入的内容进行包装(添加提示词)。自定义[prompt]标签详见提示词标签
更简单的提示词标签,直接把提示词内容插入到输入框中,比如 /苏格拉底导师
。插入后直接提交,聊天机器人就会扮演一个苏格拉底式的导师。
这类标签的编写方法更简单,比如在网络上找到一段有意思的提示词。打开设置->配置目录
,在prompts
文件夹中用户文件夹中新建一个 txt 文件,文件名将作为标签名,然后把提示词复制进去即可,
可以将本机上的一个或多个文件夹变成 GPT 的知识库。插入知识库标签后,对话时将主要根据本地知识库中的内容来回答问题,用于构建特定领域的问答机器人。本地知识库的创建、更新详见本地知识库
用于选择语言模型和调整语言模型的参数。内置了比如gpt3.5-turbo,gpt3.5-turbo-16k, gpt4等。(gpt4需要你本身key有权限才行)。自定义模型详见模型标签
这类标签是写入braindoor内部的功能,不能通过配置文件来增加。自带了哪些就是哪些,每次版本更新的时候会添加一些。目前有:
- /HyDE:在使用本地知识库的时候,默认是根据你的问题去查询相似的文档片段。插入HyDE后,会先根据你的问题生成一个预先答案,再通过该答案去查询本地相关片段。可以增加片段查询的准确率,会增加一点token消耗
- /ReadTop3:和本地知识库配合使用,增加本地知识库阅读深度。使用本地仓库时,默认只根据相似度最高的片段作为上下文,插入该标签后,会使用相似度最高的前3个片段作为依据,然后用分块阅读来解答问题,会增加token消耗,但提高查询准确率。
- /ReadTop5:同上,会使用相似度最高的5个片段
- /Memo:备忘录,插入这个标签后,输入后不会经过LLM,直接就输出你输入的内容。有人说,这不扯淡吗。其实就是用来记录一下笔记,当个桌面便签。支持markdown。
- /File: 文件插件,插入此标签后,拖拽任意文件到对话框,可以获得文件的路径。并加入上下文,一般用于通过对话生成代码来处理文件。
这类标签实通过将本地python和LLM结合,完成一些相对高级的功能和自动化操作。可以实现诸如插件、工具甚至智能体。详见插件和智能体
内置了几个个基本插件作为范例
/google:主要是用于网络搜索改善问答的真实性。插入该标签后,会生成搜索词然联网查询google的结果。
/wiki:插入该标签后,会查询wikipedia的结果后回答,会读取wikipedia提供的summary来回答问题。
/python: 可以生成python代码并执行。你可以通过对话完成各种本地文件操作,数据分析,处理 图片、绘图或作为一个简单的notebook调试代码等。依赖本地的python环境,默认会自动查找一个本地的解释器,如果需要指定特定的python环境。在配置文件中用户文件夹\braindoor\agents\python\config.yaml
声明。下图是一个根据数据绘制图表的完整聊天过程。
/applescirpt 或 /vbscript: 可以生成applescript或vbscript并执行,可以通过对话完成各种对mac os或windows的操控。比如“创建文件”,“添加一个待办事项”,给“xxx@ss.com发送一个邮件,标题是xx,内容是xx”,或是一系列自动化操作。chatgpt写此类script偶有出错,等有gpt4接口后会好很多。操作office也是可以的,可以自己研究下vbscript