【第三方MN插件】AIAssistant (已更新 Chat 功能) — 使用 OpenAI 的 AI 服务辅助摘录 已获官方签名#

2023年06月14日更新(官方签名版本): 修复修改 Chat Web App URL 后重启不生效问题.
ohmymn_v4_1_1_unsigned_AIAssistant_with_Chat.mnaddon (594.1 KB)

2023年05月24日更新: 点击 Chat 界面左上角:robot:, 界面最小化, 选择的文本不再发送 Chat.
ohmymn_v4_1_1_unsigned_AIAssistant_with_Chat.mnaddon (593.3 KB)

2023年04月17日更新: 更新 Chat 功能
下载:
打包好的: ohmymn_v4_1_1_unsigned_chat.mnaddon (593.3 KB)

源码: https://github.com/zzhirong/ohmymn (chatOnNote 分支)

注意

  • 这个版本中有个把选择文本发送给 OpenCat 的功能, 但是目前 OpenCat 的 URL Scheme 功能有个 Bug(不能多次发送), 我已经将此反馈给作者了, 但是, 好像被无视了, 所以等后续 OpenCat 更新, 如果 Bug 一直存在, 后续这个选项应该会被移除.

须知:

  • Chat 功能本质就是通过打开一个窗口加载 https://mn-aiassistant-chat.vercel.app/ 实现的.
  • 服务器端源码是基于 https://github.com/Yidadaa/ChatGPT-Next-Web 的修改版, 部署在 https://vercel.com 上.
  • 修改后源码地址: https://github.com/zzhirong/ChatGPT-Next-Web-AIAssistant
  • 修改的主要内容:
    1. 接受从外部设置 API Key, 这样就可以从设置中把 OpenAI API Key 传进去.
    2. 可以接受从外部输入消息, 这样, 就可以在 marginnote 中选择一段文字之后直接发送了.
    3. 点击标题就可以进行修改标题, 而无需在弹出窗口中输入.
    4. 很多需要弹出窗口确认的地方, 把弹窗确认取消了, 因为 MarginNote 3 不支持从 WebUIView 中弹窗.
  • 推荐从修改版源码部署自己的服务端, 如果需要使用自己部署的服务端, 记得修改"Chat Web App URL"设置选项.

设置选项截图:
Screenshot 2023-04-17 at 11.27.02

功能演示截图:
Screenshot 2023-04-17 at 11.28.40
Screenshot 2023-04-17 at 11.29.13

演示视频:

2023年04月09日更新: 更新"使用自定义提示"按钮, 在 “MagicAction for Text” 中可以看到.
2023年03月29日更新: 更新了"自定义提示语"功能, 可能自己告诉 AI 想要做些什么, 比如"翻译成德语", “翻译成中文并标注拼音"等等. 启用需要填写"自定义提示”, 以及在"功能"那一栏中选择"自定义", 如果自定义提示语中指定了输出语言, 会覆盖指定的输出语言.

2023年03月16日更新: 欧路字典最新版(4.3.0)现在也可以使用 AI 服务(不确定是否使用的是 openai)用来写作和翻译了, 不用科学上网, 不用 API Key.

摘要(由 AI 生成): 这是一个基于 OpenAI API 的 OhMyMn 插件,提供翻译、润色、总结、解析句子和解释代码等功能。需要设置 API Key 才能使用。作者初衷是将 OpenAI 的常用功能集成到自己常用的读书软件中。插件可能会遇到响应时间长的问题,但作者并未遇到配置被覆盖的情况。插件源码和下载链接均提供。

使用前提条件: 拥有 OpenAI 的 API Key 以及可以科学上网(当然也可以自定义跳转服务器). 所以 需要设置 API Key 才可以用. 如果没有 API Key 或者连不上 OpenAI 的官网(或跳转服务器), 可以不用往下看了.

初衷: 在 OpenAI 发布其 API 后, 发现可以使用它来做很多事情, 而且它做得都挺好, 所以想把它的常用功能集成到我常用的读书软件中来, 奈何不熟悉 Javascript, 最后发现通过 OhMyMn 模块来实现想要的功能比较简单, 于是就有此款插件.

截图:
截屏2023-03-13 22.13.43
截屏2023-03-14 09.26.20
截屏2023-03-14 09.58.59
截屏2023-03-14 09.58.02
截屏2023-03-14 09.54.44
截屏2023-03-14 10.00.38

功能:

  • 翻译(是我目前用过的翻译服务中最好的).
  • 润色(经常用它来修改我写的蹩脚英文).
  • 总结(提取文章的要点).
  • 解析句子(碰到不懂的长句, 用它来解析句子结构, 主要用来学习外语).
  • 解释代码(碰到不懂的代码, 可以尝试用它来解释下, 会有惊喜).

注意:

  1. 默认是自动检测语言, 因为我发现它的自动识别能力足够好.
  2. 处理的内容不能太长, 最好不要超过 1500 字, 不然, 处理可能会失败.
  3. 设置里需要输入的项(服务器地址和 API Key), 在修改完后, 需要按下回车才会保存生效, 不按回车的话, 不会生效的.

可能的风险: 覆盖掉之前 OhMyMn 配置(我目前没有碰到). 因为安装的时候会覆盖官方的 OhMyMn, 但目前没看到有覆盖配置的情况发生.

可能碰到的问题:

  1. 大概率会遇到响应时间长的问题, 需要等很长的时间(不超过1分钟)才能看到结果.
  2. 处理失败, 如果等上一分钟还是没有出现结果, 就再重试.

卸载: 如果发现本插件不实用或用不了, 直接用官方的 OhMyMn 覆盖掉本插件便可. 配置应该不会被覆盖.

源码:

  1. https://github.com/zzhirong/ohmymn/tree/main/src/modules/aiassistant

下载:

  1. 从源码编译: 下载源码, 在根目录下执行npm install && npm run build, 然后在项目中 dist 目录下有一个 ohmymn_v4_1_1_unsigned.mnaddon 文件.
  2. 下载编译好的(2023年05月05日更新): ohmymn_v4_1_1_unsigned_aiassistant.mnaddon (591.1 KB)
7 个赞

Hello

Kind Regards,

Support Team

Very good!

看上去不错,总算有人来写 OhMyMN 的模块了。覆盖配置倒是不用担心。

开发还是很简单的, 之前没写过 TypeScript,这次参照 AutoTranslate 模块,依葫芦画瓢,花了一天半的时间写完。中间遇到不懂的问题,就向 AI 提问,最后磕磕绊绊竟然也完成了。所以关键还是 OhMyMn 框架搭得好。

另外,能否指点一下如何实现选择一段文字后弹出一个窗口,窗口显示处理结果的功能呢?因为很多时候,我只是想查下句子的意思,而不想对每个查询都进行摘录。我在 MdxDict 插件中看到是通过监听 PopupMenuOnSelection 然后显示 WebUIView 实现,但 OhMyMn 中好像没有用到这些,所以我现在有点摸不着头脑了。

还有, 最终这个模块是裁剪成一个单独插件, 还是集成到 OhMyMn 中比较好? 因为插件未认证, MarginNote 频繁弹出未认证提醒, 很影响心情.

1 个赞

我还在思考中,之前我的想法是用 ChatGPT 增强其他模块,不过实现起来比较麻烦,需要大面积修改。可能最后还是采取你这种方案,到时候你提一个 PR 合并进来就行。

报错:
末能完成操作。(NSURLErrorDomain 错误-1012。

你直接在浏览器中输入你设置中的"服务器地址"(默认是"https://api.openai.com"), 看看能否访问, 如果不能的话, 那插件也无法访问. 我在浏览器中看到是下图(正常情况):
截屏2023-03-15 12.26.45

尝试了一下版主的插件,我没能成功使用。要么是提示“未选中任何区域”,要么是提示“未输入API Key”,实际上Key我是输入了的,它总是会自己消失。应该是我没找到正确的使用方法,希望版主详细讲解一下,谢谢:pray:

设置里面需要输入的项, 都需要输入完后, 按下回车, 设置才会保存生效. 输入但不按回车的话, 是没有效果的. 我也感觉有点反直觉.

另外, 另一个有点违反直觉的设定是, 要使用 MagicAction for Text 中的功能, 都需要先选择一段文本然后再按对应的按钮, 等上一段时间, 然后, 成功的话, 结果会保存到剪贴板中. 举个例子, 你想翻译一段话, 先选择一段话, 后安下"MagicAction for Text"栏中的"翻译"按钮, 等上几秒钟, 等到提示"复制成功, 去粘贴吧"的提示出现, 就可以把结果粘贴到需要的地方了.

我理想的场景是, 选择文本, 处理成功的话, 自动弹出窗口, 显示处理结果, 如果需要的话, 可以选择粘贴, 合并或追加到评论, 但限于我刚接触插件编程, 所以我暂时还是没办法自由发挥编写自己想要的功能.

1 个赞

我明白你的意思了,谢谢!你期望的那种状态也的确是更符合直觉的。希望再接再厉,这个插件是一个很棒的点子,期待它完善的那一天。

可以访问,界面
跟你的一样

换了api,你的服务器也是一样的报错

可以把bing.com加入MN3吗,我用魔法后看了MN3里的研究里边的必应是手机版的,希望有大佬出个网页版的bing.com

hello,现在你可以 pull request 到 ohmymn 项目里了,作为贡献者。目前我考虑提供一个 ChatGPT 基础模块,然后其他模块可以调用这个模块的能力。

1 个赞

我已经提交了 PR。感叹最近 AI 领域涌现出了许多新鲜事物,如 ChatGPT、Bing Chat、GPT4、文心一言、AI 绘图等等,让人目不暇接.

另外, 如果要修 Bug 的话, 也就晚上和周末有些时间, 还有, 我才开始看 《Learning Typescript》.

你好,可以提供一个自定义功能的选项吗?比如要求给摘要设置成卡片

没搞懂你说的话, 你是不是想只摘录原文生成的摘要, 而不要原文?

比如对于一个抽象的中文概念,单纯背诵费时费力难以奏效,但如果自动要chatgpt举例说明,就能更好理解,而这个功能的实现需要在每句复制的摘要前面写上”举例说明一下”再发给gpt
如果有个自定义功能的选项,输入不同的要求前缀就能自由实现不同的功能

IMG_4865