跨平台桌面AI超级提效工具

作者 : noise 发布时间: 2023-08-5

概述

OpenCopilot是一个可以常驻桌面随时使用ChatGPT的桌面应用。无需打开网页或切换窗口,随时随地在你的工作流中和AI聊天。还有诸如本地知识库,联网搜索,操控本地系统等功能。本地部署。需要OpenAI的官方key或其他第三方gpt转发服务的key。支持MacOS和Windows。

项目地址:https://github.com/newfyu/OpenCopilot

特点

  • 无框常驻模式,融入工作环境

  • 通过斜杠“/”添加扩展标签,组合各种扩展功能

  • 构建本地知识库

  • 长文本全文阅读

  • 自定义prompt

  • 联网搜索插件

  • 本地对话历史查询

  • 生成并执行本地python脚本

  • 控制本地系统(通过applescript/vbscript插件)

安装

一、打包版

打包好的版本,开箱即用

Mac OS:https://github.com/newfyu/OpenCopilot/releases
Mac上如果提示什么文件损坏,安全权限问题,在“通用”-“隐私与安全”中打开。如果使用了本地知识库,读取本地文件时也会有权限提示。

Windows(基于python3.9,不再支持win7):https://github.com/newfyu/OpenCopilot/releases

(百度云下载地址:链接: https://pan.baidu.com/s/1B1JYtURbM90u344-X2rQZA 提取码: 1234)

基本配置

窗口模式下,点击“齿轮”图标,填入OpenAI的key。如果你的网络无法访问openai,还需要下面填入代理地址。

https://github.com/newfyu/OpenCopilot/blob/main/images/shuom.png

常规使用

启动后是窗口模式,和日常的窗口应用没有区别,可以任意调整大小和位置。

调整到合适大小和位置后,点击“锁”图标后变成无框模式,将置顶并且不能调整大小,但仍可以对话框下方空白区域拖动。建议放置到屏幕左下角或右下角,就像网络游戏的聊天窗口一样,无框透明设计方便融入日常大部分工作环境。当然也有喜欢只用窗口模式的,看个人习惯吧。

  • Enter键是提交

  • Shift-Enter是换行

  • 斜杠“/” 会开启一个扩展标签的选择列表,提供扩展功能。标签可以通过缩写查询。

  • 下方四个按钮分别是“新建对话”,“删除对话”,“无框模式”,“设置”。进入无框模式后,设置按钮变为拖动按钮

  • 点击右下角的页码或Alt-F,打开历史记录查询

全文阅读

用于处理较长的文档,可以超过ChatGPT的token长度限制

[](https://github.com/newfyu/OpenCopilot/blob/main/images/%E5%85%A8%E6%96%87.gif)

有两种方式启用

  • 如果粘贴一大段文字到输入框中提交,超过预设的限制(默认12000 token,可在config.yaml中修改),会自动转成全文阅读模式

  • 拖拽一个文件(txt, md, pdf, html, docx)到输入框后,也会开启全文阅读模式。然后可以对该文本中内容进行问答。

全文阅读的原理是分块阅读,就是带着问题,分块阅读所有文档片段并储存中间相关信息,最后汇总。这个方案不是把文档分块后用向量查询。向量查询有两个缺点,一个是如果你的问题在文中和上下文关系不大,可能查询不到。另一个是如果你的问题,需要整合全文各个部分信息后才能总结得出,也是无法完成的。全文阅读无论是细节的查询还是整体的查询都更好,但缺点也很明显,就是token消耗更大。所以比较适合需要分析准确度和完整度的场景。如果你需要分析的文本特别大,比如要针对几万几十万字的一本书进行问答,建议使用下面的“本地知识库”,把书本变成一个知识库,那个是使用向量查询的方案(embeding)。

下面是一些常用的全文阅读模式的提问方式,这些提问既有关注局部的也有关注全局的,基本上都能很好完成

  • 总结文献:“总结一下这篇文献,关注和解决了一个什么问题,使用了什么方法,效果如何,有什么意义”

  • 概括文件:“按顺序总结一下文件中提到的重要时间点和相应的安排,用markdwon表格输出,包括时间点,安排”

  • 提取原文信息:“提取所有文中关于xxx相关的原文信息,使用json输出,字段’原文信息'”

  • 续写(需要创作原文中没有的内容, 建议先总结再发挥): “简单总结一下文中提到的这个项目的基本情况,然后根据基本情况写一下文中的项目市场前景预测,经济效益与社会效益”

  • 作为背景资料:“根据提供的文字作为背景资料,续写一下该项目项目创新点与技术优势。可以根据你的知识自由发挥。”

扩展标签

使用斜杠选择,插入后会提供额外的功能,简称etag。etag有五种类型,“提示词prompt”, “知识库base”, “模型model”, “内置engine”, “插件agent”

提示词标签

就是提示词模板了,插入prompt标签后,会对你输入的内容进行包装(添加提示词)

prompt标签可以插入多个,会从前到后依次包装你的输入

支持用户编写,模板文件在用户文件夹/braindoor/prompts​下面,每一个prompt都是一个简单易读的yaml文件,可以参考下面的格式自己写prompt

# fanyi.yaml
name: 翻译成中文   # 会提取为标签名
description: 用于把中文翻译成英文 # 描述,暂时没用可以随便写,以后用于自动选择prompt
# template注意每段文字前面的缩进要对齐。{text}中的内会被替换为你的输入内容
template: |
    你的任务是用正式的语气把下面三个反引号中的文字翻译为中文:
    ‍‍```{text}‍‍```

需要重启程序才会载入新的prompt标签

自带的几个prompt作为模板参考,更多的是建议用户自己管理自己的prompt

[](https://github.com/newfyu/OpenCopilot/blob/main/images/%E7%BF%BB%E8%AF%91.gif)

本地知识库标签

可以将本机上的一个或多个文件夹变成gpt的知识库。插入知识库标签后,对话时将主要根据本地知识库中的内容来回答问题,用于构建特定领域的问答机器人。

本地知识库需要创建,在设置按钮中的“建库”中创建。创建时需要指定一个文件夹位置(文件夹中要有txt, md, pdf, docx等文本文件),然后创建即可。建库完成需要重启一次程序后才会在标签中显示新的库。或在用户文件夹/braindoor/bases​中会看到一个同名.base文件,即表示成功。

免费的openai key速度可能较慢,现在openai速率限制有点狠。如果你不慎关闭了这个界面,仍会继续在后台中继续创建,可以从设置-日志中查看进度

建库的时候,一个知识库只添加一个索引文件夹。后续可以在“更新库”中增加更多的文件夹。

如果索引文件中的文件内容发生改变,点“更新库”,会增量更新改动。

插入知识库标签后,对话时将AI首先根据本地知识库中的相关内容来回答,如果查询不到相关的片段,才根据自己的知识回答。查询到的本地信息,会列出一个链接,点击后可从外部浏览器查看。

base文件是可以共享的,比如你用某些资料做了一个特定知识的聊天机器人,你把base文件复制给别人仍然是可以正常问答的,不必要再传到openai去向量化一次。

插入多个base标签,会在多个本地库中搜索

[](https://github.com/newfyu/OpenCopilot/blob/main/images/base.gif)

模型标签

用于选择语言模型和调整语言模型的参数。内置了比如chatgpt, chatgpt-16k, gpt3, gpt4等。(gpt4需要你本身key有权限才行)

不插入任何模型标签,默认是一个温度0.5的gpt-3.5-turbo-0613,输入超过4000token后会使用gpt-3.5-turbo-16k。 如果需要一些定制特定参数chatgpt,比如调整温度,调整最大token、改变system message等,方法是在用户文件夹\braindoor\models​中添加模型配置文件。每个文件是一个yaml文件,按下面格式写就可以了。只要是官方API的参数都可以传入。

# chatgpt_t0p8.yaml
model: chatgpt # 可以填chatgpt或gpt3
params: # 除了stream和message/prompt不要传入,其他官网API支持的参数都可以传入来调整模型
    max_tokens: 1500
    temperature: 0.8
system_message: "you are a help assistant" # 输入系统message

注意model配置文件的文件名会被识别为标签名,所以不要有空格。

重启程序后,即可以在标签中选择该模型。

内置标签

这类标签是写入braindoor内部的功能,不能通过配置文件来增加。自带了哪些就是哪些,每次版本更新的时候会添加一些。目前有:

  • /HyDE:在使用本地知识库的时候,默认是根据你的问题去查询相似的文档片段。插入HyDE后,会先根据你的问题生成一个预先答案,再通过该答案去查询本地相关片段。可以增加片段查询的准确率,会增加一点token消耗

  • /ReadTop3:和本地知识库配合使用,增加本地知识库阅读深度。使用本地仓库时,默认只根据相似度最高的片段作为上下文,插入该标签后,会使用相似度最高的前3个片段作为依据,然后用分块阅读来解答问题,会增加token消耗,但提高查询准确率。

  • /ReadTop5:同上,会使用相似度最高的5个片段

  • /Memo:备忘录,插入这个标签后,输入后不会经过LLM,直接就输出你输入的内容。有人说,这不扯淡吗。其实就是用来记录一下笔记,当个桌面便签。支持markdown。

  • /File: 文件插件,插入此标签后,拖拽任意文件到对话框,可以获得文件的路径。并加入上下文,一般用于通过对话生成代码来处理文件。

工具、插件和智能体

执行任意的自动化操作

内置了几个个基本插件作为范例

/google:主要是用于网络搜索改善问答的真实性。插入该标签后,会生成搜索词然联网查询google的结果。

/wiki:插入该标签后,会查询wikipedia的结果后回答,会读取wikipedia提供的summary来回答问题。

/python: 可以生成python代码并执行。你可以通过对话完成各种本地文件操作,数据分析,处理 图片、绘图或作为一个简单的notebook调试代码等。依赖本地的python环境,默认会自动查找一个本地的解释器,如果需要指定特定的python环境。在配置文件中用户文件夹\braindoor\agents\python\config.yaml​声明。下图是一个根据数据绘制图表的完整聊天过程。

https://github.com/newfyu/OpenCopilot/blob/main/images/py.png

/applescirpt/vbscript: 可以生成applescript或vbscript并执行,可以通过对话完成各种对mac os或windows的操控。比如“创建文件”,“添加一个待办事项”,给“xxx@ss.com发送一个邮件,标题是xx,内容是xx”,或是一系列自动化操作。chatgpt写此类script偶有出错,等有gpt4接口后会好很多。操作office也是可以的,可以自己研究下vbscript

/autotag :自动选择标签的插件。前面功能中都需要手动插入标签,比如要在google中搜索就需要插入#google​标签,在evernote中搜索要插入#evernote​标签。使用autotag标签后,可以不用在输入内容时候声明使用什么,比如输入“使用google搜索xxx的新闻”,会调用google插件。“使用python写一个xxxx”,会自动使用python插件。

插件和智能体可以方便的自己实现,参照内置插件,通过简单的python脚本,就能根据自己的需求实现各种功能

    来自NOISE资源阁-noisevip.cn
    NOISE宝藏阁 » 跨平台桌面AI超级提效工具

    发表回复

    微信
    我会尽快回复。
    取消