Mac版 Windows Copilot 基于chatglm 无需联网, 可从不同App内快速启动

Brief

copilot for mac, a pale imitation of windows copilot

 

在学习 pyqt 的过程中,经常向 gpt 提问,加快学习进度。但每次遇到问题后【复制 –> 打开浏览器 –> 切换标签 –> 填入输入框并提问】的过程重复多次,总会感到厌烦。为了让自己能够在工作 / 学习过程中更加专注于内容,而自己又稍微懂一些编程 …. 于是,便有了本项目。

本项目在较早时 (本文发布前一个多月) 已经完成,经过这段时间的使用,已经基本满足自己的要求。并且,在这过程中也已经将能够发现并解决的问题处理完成

仓库:https://github.com/craii/mac_companion_for_M_Chip_mac   ||  https://github.com/craii/mac_companion

基本要求

  1. 【断网运行】:因为之前被 openAI 封了账号,因此有了被迫害妄想症,总是担心被【卡脖子】,因此这也就有了模型必须能够断网运行的执念;
  2. 【性能】:内存和 cpu 占用不能太高,如果光是运行模型就赢把机器性能吃完,无法运行平时工作需要用到软件,那是完全没有意义的,因此,程序驻留后台时,肯定不能把电脑卡死;同时,在推理时也要足够快;
  3. 【快捷】:无需复制、粘贴,最好能选中文字,然后直接将这些文字作为 prompt,发给模型处理,并得到结果;
  4. 【对话页面】:如果遇到需要追问或提供更长的上下文才能得到更好结果的场景,可以有类似 chatgpt 的对话页面,获得更好的交互体验;

mac_companion 常驻后台,并在 mac 顶部菜单栏设置快捷入口。可以让我在绝大多数 app 中,可通过鼠标右键的服务菜单,快速将选中的文字作为 prompt 提交给 Chatglm 并得到答复,当然如果你不想使用 chatglm 也可以在修改少量代码的情况下,替换为其他支持 openai-like api 的模型,或者直接改为调用 openai 的 api。
本项目有两个版本

 

成果展示

  • 在各个 App 中直接获取文字作为 prompt, 省去复制粘贴的重复操作:
  • 运行对话页面:
  • 功能截图

 

业务流程

我们的实现逻辑比较简单,大致就是:copilot 启动后,会启动一个监听服务;当监听到苹果的 automator 脚本发送过来的选中文本后,将其发送给本地模型处理,然后在将模型的回答进行展示出来 (详见下图)。

可见,通过此流程,可以省略复制、粘贴的过程,便捷性得到了较好的保证。而且,感谢 THUDM  的杰作:chatglm,以及  li-plus 提供的 cpp 加速,让在 mac 上本地低成本运行 chatglm 模型成为了可能, 并且也提供了不错的 webUI。

Mac 版 Windows Copilot 基于 chatglm 无需联网, 可从不同 App 内快速启动

mac companion 业务流程

 

 

如何使用

项目源码已上传至 github: https://github.com/craii/mac_companion

mac_companion 常驻 mac 顶部菜单栏。可以让我在绝大多数 app 中,可通过鼠标右键的服务菜单,快速将选中的文字作为 prompt 提交给 Chatglm 并得到答复,当然如果你不想使用 chatglm 也可以在修改少量代码的情况下,替换为其他支持 openai-like api 的模型,或者直接改为调用 openai 的 api。
本项目有两个版本

  • mac_companion: 本仓库,你可以在参照下述安装说明完成 Setup 即可使用;
  • mac_companion【直接运行版】:如果你的 
    mac 使用的是M系列芯片

    ,可转至 此仓库,参照对应文档下载安装即可。也可以直接下载包含模型和运行环境的整合包(下载后最好用仓库最新代码文件覆盖一下):

整合包,提取码:fyEe

整合包已经集成了本项目的虚拟环境、chatglm 所需的虚拟环境 以及 chatglm 模型。下载完成后只需要切换到解压目录下,运行 “`python run.py“` 即可运行(我已在两台 m -chip 的 mac 上测试可行)。“`INTEL 芯片 “` 的 mac 未经测试,但应该是不能运行的,因为本项目使用的 chatglm 在进行 cpp 编译时采用的参数中指定了 arm 平台。

 

Setup

所需 Python 版本:

 

  • mac_companion: 3.11.5;
  • chatglm-6b: 3.8.18;

Step 1

下载本仓库

git clone https://github.com/craii/mac_companion.git && cd mac_companion

Step 2

创建虚拟环境

python -m venv venv
source ./venv/bin/activate
pip install -r requirements.txt

注意此时创建了虚拟环境 venv之后,需要记录 venv 中的 python_executable 路径, 假设你运行 Step 1的命令时,是将 documents 路径下, 则 python_executable 路径为:/documents/mac_companion/venv/bin/python

 

Step 3

 

安装 chatglm:

安装完成后请务必先验证其是否被正确安装,并且能够启动 

OpenAI_API

,如果正常启动,那么你应该能够在终端看到类似下图的文字:

Mac 版 Windows Copilot 基于 chatglm 无需联网, 可从不同 App 内快速启动

注意:

  • 记录上图中地址 
    127.0.0.1:8001

     中的端口号:

    8001

  • 记录启动 
    OpenAI_API

     服务时使输入的命令:本项目使用的是量化加速后的 chatglm,启动命令为:

    cd /Users/YOURNAME/Documents/chatglm.cpp-chatglm3/chatglm_cpp && MODEL=../chatglm3-ggml.bin /Users/YOURNAME/anaconda3/envs/chatglmcpp/bin/uvicorn chatglm_cpp.openai_api:app --host 127.0.0.1 --port 8001

Step 4

 

修改本项目中的 

config.py

 文件:

  • 修改 
    port

     的值为:你看到的端口号 (如以上图为例,则将其修改为 8001);

  • 修改 
    aiserver_command

    cd /Users/YOURNAME/Documents/chatglm.cpp-chatglm3/chatglm_cpp && MODEL=../chatglm3-ggml.bin /Users/YOURNAME/anaconda3/envs/chatglmcpp/bin/uvicorn chatglm_cpp.openai_api:app --host 127.0.0.1 --port 8001

    (根据你的实际情况修改)

  • 修改 
    python_executable

     的值为:

    /documents/mac_companion/venv/bin/python

    (参考 Step 2)

 

修改后的 

config.py

 可能如下:

Mac 版 Windows Copilot 基于 chatglm 无需联网, 可从不同 App 内快速启动

 

Step 5

 

  1. 双击 
    copilot.workflow

    ,会自动安装 

    copilot.workflow

    ,然后在打开的页面里,将下图中 

    红框

     和 

    篮框

    部分为 

    mac_companion

     的项目路径;

Mac 版 Windows Copilot 基于 chatglm 无需联网, 可从不同 App 内快速启动

双击后,copilot.workflow 如果没有自动打开,则在 启动台 中找到 自动操作 并用其打开 copilot.workflow,按照要求修改

Mac 版 Windows Copilot 基于 chatglm 无需联网, 可从不同 App 内快速启动

Step 6

 

回到 

mac_companion

 文件夹,运行 

python App.py

mac_companion【直接运行版】

如果你使 mac_companion【直接运行版】,在本文末尾下载并解压后,按照下方视频,复制 run.py 的【绝对路径】后,在终端输入

python /Users/yourname/Documents/pythonscripts/mac_companion_PORTABLE/run.py

  即可运行(此处假设 run.py 的路径为 /Users/yourname/Documents/pythonscripts/mac_companion_PORTABLE/run.py)。

To-Do List:

  1. 在 chat 和 setting 页面之外,补充 history 页面,可查询每次对话内容并导出;
  2. 在任一 app 内指定位置插入模型回答内容;

 

 文件名称:mac_companion.zip
 文件大小:4GB
 下载声明:本站部分资源来自于网络收集,若侵犯了你的隐私或版权,请及时联系我们删除有关信息。
下载地址:

【仅适用于 M -chip 的 mac】

我用夸克网盘分享了「【latest】mac_companion_PORTABLE.zip」,点击链接即可保存。打开「夸克 APP」,无需下载在线播放视频,畅享原画 5 倍速,支持电视投屏。

链接:https://pan.quark.cn/s/7cb6be5a8d6c

提取码:fyEe

mac 默认是 2.7,因此对 run.py 做了对应修改,可直接运行



正文完
 0
Cheung, Elias
版权声明:本站原创文章,由 Cheung, Elias 于2024-03-03发表,共计3855字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)

无觅相关文章插件,快速提升流量