【第三方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)
6 个赞

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"栏中的"翻译"按钮, 等上几秒钟, 等到提示"复制成功, 去粘贴吧"的提示出现, 就可以把结果粘贴到需要的地方了.

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

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

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

换了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