4 篇博文 含有标签「OOMOL」

查看所有标签

AI 翻译制作双语 EPUB 电子书

· 阅读需 4 分钟
Moskize91
OOMOL 工程师

是否厌倦了电子书翻译后格式错乱、排版全无的糟糕体验?EPUB Translator 的智能翻译技术不仅完美保留原书的精美版式,更独创双语对照功能,让语言学习变得前所未有的直观高效。

无论是阅读原著小说还是学习专业文献,现在你都能获得精准对齐的双语文本,所有插图、章节和特殊格式都完整保留。原句与译文并排呈现,助你轻松对比学习,就像拥有了一位随时在侧的翻译导师,让跨语言阅读真正成为愉悦的学习之旅。

epub-translator 是一个开源库,采用 AI 大模型自动翻译 EPUB 电子书,并 100% 保留原书的格式、插图、目录和布局。它在 oomol 中封装成了共享区块,可在 oomol 商店中找到。

首先在左侧导航栏进入 Community 页面,搜索 "books rranslator" 模板。这个预置模板包含了所有必要的运行环境和配置,点击 "Use" 按钮即可快速初始化一个新项目。系统会自动创建一个包含 epub-translator 所有依赖的工作空间,完全不需要手动安装任何组件。

项目创建完成后,你会看到一个预设好的工作流界面。点击区块上的 source_file 字段,上传需要翻译的电子书文件,这里支持标准的 epub 格式。

接下来进入关键的参数设置阶段。在语言选择下拉菜单中,你可以在 language 字段指定目标翻译语言,如简体中文、英文或日语等。然后,你需要配置翻译使用何种大语言模型,我们推荐使用DeepSeek Chat作为默认翻译引擎,它在保持文学性和技术准确性方面表现优异。此外,你还可以在 prompt 加入提示此,以告知大语言模型如何处理角色人名和术语之类的注意事项。

翻译过程完全自动化进行,你可以在日志窗口实时查看进度。处理完成后,系统会生成一个全新的双语对照电子书。打开查看时会发现,所有原始格式元素都被完美保留——插图保持在原有位置,特殊字体得到正确渲染,目录结构也自动生成了双语版本。更贴心的是,系统会自动处理电子书内部的各类元数据,确保在新的语言环境下也能正确显示作者、出版社等信息。

在工作流中畅写代码

· 阅读需 2 分钟
Moskize91
OOMOL 工程师

作为开发者,我们每天都在忍受着这样的折磨。明明一个简单的正则表达式就能搞定数据清洗,但工具偏偏只提供基础筛选。想要在流程中插入一个API调用,却发现工具只允许使用预设的集成服务。遇到特殊文件格式处理时,只能眼睁睁看着流程卡死。

这种“看得见需求却够不着解决方案”的无力感,就像给你一把瑞士军刀却把最重要的刀刃焊死了。

在 oomol studio 中,我们重新定义了工作流工具的交互方式,让它真正理解程序员的工作习惯。想象一下,当你正在构建一个数据处理流程时,突然发现需要添加一个特殊的数据转换步骤——这时你可以直接插入一个代码编辑器窗口。这个代码块就像乐高积木一样自然地融入整个流程,与其他可视化节点平起平坐。

写代码的过程就像在熟悉的 IDE 中一样流畅,你可以使用 Python、TypeScript、JavaScript 来写代码。在 oomol studio 中,依赖管理采用容器化方案确保稳定性。当你需要使用第三方库时,可以确保工作流在任何机器上运行时,第三方库的版本和行为都保持一致。不需要用户手动处理虚拟环境或包安装,常用库开箱即用。

我在视频中完整演示了如何用代码插槽快速构建自定义图片处理流程。

如何将工作流导出为镜像并作为服务运行?

· 阅读需 12 分钟
AlicZhang
OOMOL 工程师

当工作流在你的计算机上正常运行时,你是否考虑过将它运行在所有人都可以访问的服务器上,将你的工作成果与他人共享?或者让你的工作流作为一个服务运行在后台,方便你随时调用?

现在你可以用 OOMOL Studio 来达到这一目的。接下来我将详细介绍如何将工作流导出为镜像并运行在后台,我将实现一个翻译 PDF 然后转换为 EPUB 电子书的工作流,这让我可以在我的移动设备上阅读各类外国作家的文献而不用收到语言限制。

具体实现的工作流你可以通过 translate-pdf-to-epub 下载,你可以跟随文章将本文的工作流作为服务运行在你想要的计算机或者云平台上。

阅读该文章需要你具备基础的镜像容器相关知识。

工作流开发

如果你已经有实现完成的工作流那么可以跳至导出镜像

我们要实现功能可以拆分为以下几个步骤:

  1. 将 PDF 文件转换为 epub 文件。
  2. 将转换后的 epub 文件翻译。
  3. 将翻译后的 epub 文件保存在指定位置。

流程很简单,我们将使用 OOMOL 社区中已有的区块来实现。

首先我们创建了一个 translate-pdf-to-epub 的项目,然后在安装了商店中的以下包:

pdf-craft

pdf-craft 可以将 pdf 文件转换为 epub 文件

books-translator

books-translator 可以翻译 epub 文件

然后我们分别使用 pdf-craft 包中的 Analys PDFGenrate EPUB 区块,books-translator 包中的 Translate epub book 区块,串联后得到工作流。

需要用到的区块

实现的工作流

工作流已经实现完成,接下来我们为工作流填入参数。我们需要填写以下几个参数:

  1. 需要处理的 pdf 文件路径
  2. 最终输出 epub 文件的路径

Translate epub book 区块默认的输出语言是中文。如果有需要请自行调整参数。

这里可以清空 output_dir 参数,让中间产物都放在内存中,关闭应用即可释放。

需要填入的参数

由于 pdf 文件输入需要一个 pdf 地址,所以我们要将需要处理的 pdf 文件放入到 OOMOL Studio 环境中以便应用可以读取。我们在左侧面板中将文件复制到 OOMOL 空间内:

将文件放入到 OOMOL Studio 应用容器内

然后我们就可以选择 pdf 文件地址以及输出的 epub 文件地址和后缀名:

完成的参数

接下来我们运行工作流,在一段时间的运行后,我们可以看到成功有文件输出,同时内容已经翻译完成。

工作流输出结果

可以看到文章被翻译为了中文。

到此为止我们开发并运行了一个工作流,现在工作流只能运行在 OOMOL Studio 应用内,接下来我们要将工作流脱离 OOMOL Studio 的环境并运行起来。

导出镜像

我们回到OOMOL Studio 的 Home 页面,找到刚才开发完成的工作流,右键单机并选择导出为镜像功能,选择导出的文件夹然后等待一段时间,就可以得到一个与工作流同名的镜像文件。

导出镜像文件

镜像运行

在得到镜像文件后,我们使用 docker 命令加载镜像文件。在终端中运行

docker load -i ~/Downloads/translate-pdf-to-epub.tar.zst  # 选择你保存镜像文件的地址

运行完成后可以找到该镜像:

镜像文件

因为镜像的运行环境并不在 OOMOL Studio 内,所以我们无法分辨运行容器的用户是谁,而当前的工作流中使用到了 AI 进行翻译,OOMOL 会将翻译产生的费用折算为积分,使用 API-key 就可以将积分在对应用户的账户中扣除,让工作流正常运行。

如果工作流中用户并没有使用到 AI 之类的内置服务,或者使用了自己的 AI 服务,用户在启动容器的时候仍然需要传入 API-key,但是并不会产生费用。

API-key 可以在 OOMOL Console 中生成一个。

生成 API-key

API-key 展示关闭后无法再次获取,请妥善保管。

获取 API-key 后我们可以执行以下命令运行容器:

docker run --privileged -p 3000:3000 -e OOMOL_API_TOKEN={OOMOL_API_TOKEN} -v $HOME/oomol-storage:/oomol-driver/oomol-storage localhost/translate-pdf-to-epub:latest

在运行镜像后,我们就可以通过 http://localhost:3000 访问启动的容器了,此时前面的工作流已经作为一个本地的服务运行了起来。

镜像内的文件地址

在这个例子中,我们工作流的起点是输入一个文件地址,但是工作流在被导出为镜像后,所有的在镜像容器内的地址都是指在容器内的地址,如果我们直接将宿主机的地址传给工作流,容器内的工作流是无法读取到有效文件的。

这里我们将计算机上的 $HOME/oomol-storage 路径挂载到了容器内的 /oomol-driver/oomol-storage 路径下,这样用户在 $HOME/oomol-storage 路径下添加文件就相当于将文件放在容器内的 /oomol-driver/oomol-storage 文件夹下。这样容器内外就可以通过这个文件夹交换文件。

如果你想要将该镜像部署到云服务器中,也需要满足这个要求,你必须要让容器内的工作流可以访问到真实的文件地址。如果你觉得通过挂载的方式读取文件太麻烦,那么你可以将输入文件路径改为读取一个网络地址,比如上传到 aws a3 服务等网络文件管理服务,然后在你的工作流内下载这个文件并读取。这样文件访问始终在镜像容器内进行,不会存在文件找不到的问题。

调用工作流

在启动镜像容器后,你就可以通过 http 请求来查询、启动、停止工作流。

访问 http://localhost:3000/ui 你可以看到镜像容器暴露的 http 请求接口:

http API

接口的具体描述可以参考 API 文档

查询工作流

使用 GET 方法调用 http://localhost:3000/v1/flows 可以查询容器镜像内的工作流列表。

返回的内容包含了工作流的详细结构,包括节点信息、输入输出接口的名称和类型。

运行任务

使用 POST 方法调用 http://localhost:3000/v1/tasks 可以运行工作流并创建一个任务。

工作流开发中我们说过启动工作流前我们需要为几个节点填入参数,这里我们调用请求传入参数:

开始任务的参数

这里参数的 flowName / nodeId / handle 的信息我们都可以从查询工作流中找到。

这里填写的输入文件地址为 /oomol-driver/oomol-storage/test.pdf,由于我们之前在镜像运行的时候将 /oomol-driver/oomol-storage 文件夹映射到了 $HOME/oomol-storage路径下,所以我们只要将 test.pdf 放入到$HOME/oomol-storage 中,工作流就可以正确读取文件,然后我们将输出文件命名为 local-service-output

在运行 API 调用后,我们将会得到一个任务 ID。

任务 ID

查询任务

使用 GET 方法调用 http://localhost:3000/v1/tasks 可以列出所有镜像容器中的任务。

使用 GET 方法调用 http://localhost:3000/v1/tasks/{task_id} 可以通过任务 ID 查询任务的详情。

用户可以通过轮询这两个 api 来查询任务的运行情况。

当任务运行完成后,我们可以查询到任务状态为完成并看到任务的输出结果:

完成的任务

总结

本文介绍了如何将 OOMOL Studio 的工作流导出为镜像同时脱离 OOMOL Studio 单独运行。

用户可以将镜像部署在任何环境下,成为一个持续运行的服务可以让工作流发挥出最大的作用,无论是在本地服务器、云平台还是团队协作环境中,都能实现自动化流程的高效复用和共享。

OOMOL Studio vs Zapier vs n8n

· 阅读需 12 分钟
AlicZhang
OOMOL 工程师

作为目前最受欢迎的工作流自动化平台,Zapier 与 n8n 为用户节省了大量的重复劳动的时间。他们让个人和企业使用大量的内置在应用中的软件即服务(SaaS)工具来扩展业务,提高生产效率。他们作为传统低代码自动化平台做得非常出色,活跃的社区也在不断为他们的平台添加各种各样的应用,这让他们能满足的业务场景在不断地增加。

Zapier 诞生于 2011 年,它专注于以最简单的方式集成市面上的各种应用,让任何用户可以通过连接应用的方式来实现自己的业务目的。虽然 Zapier 声称自己是无代码平台,但是仍然引入了 Code 节点,因为市面上的应用输出输入没法兼容,所以总是需要一些编程工作作为应用的粘合剂。

n8n 晚于 Zapier 出现,它作为 Zapier 的代替品声称自己提供了更好的编程支持以吸引技术背景的用户,并且这个策略在事实上是有效的。可见,完全无代码的自动化工作流总会遇到一些问题:每个用户的需求不会完全相同,社区已经存在的解决方案无法完美地解决用户遇到的实际问题,总会需要一定的微调,所以上述两个平台达成了引入代码的共识。

但是 Zapier 与 n8n 选择了云端运行的方式,云端的代码编辑无法引入第三方依赖,或者想要做到这点非常困难,这就已经限制他们的代码编辑体验永远无法到达他们想要的自由的程度。n8n 的团队也许意识到了这个问题,所以他们有自托管的方式可以让用户引入代码的第三方库,但是主推的云端运行方式仍然无法实现这个功能。

所以 OOMOL Studio 在这个共识的基础上更进了一步,作为一个可下载的应用,它在本地运行了带有完整代码环境的容器,因此可以使用完整的 Node.js 和 Python 的社区库,完整的代码支持使得工作流的开发体验和可扩展性到达极致。同时又通过良好的交互设计来限制使用时的复杂度,让普通用户也能简单上手。

OOMOL Studio 作为一个最新的工作流平台,在继承了 Zapier 与 n8n 优势的基础上,尝试从一个全新的角度出发以解决目前工作流自动化平台遇到的痛点。

太长不看

功能OOMOL Studion8nZapier
费用免费使用和运行,起始档为免费订阅,付费订阅 $5 起步,解锁高级功能云端每月 $20 起步,限制每月 2500 个任务,自托管免费使用起始档免费,限制每月执行 750 个任务,付费档 $20 起步
内置应用70+,但是可以使用代码生态1000+ 应用, 2000+ 模版7000+ 应用
使用方式下载应用安装,本地以容器运行,可以导出镜像部署到任意云端运行优先以云端运行,支持自托管,但是配置较为复杂仅支持云端运行
工作流操作复杂,但是可以进行细粒度定义,流程控制自由较复杂,流程控制相对自由简单,只能使用固定组件控制流程
开发体验与正常代码开发体验一致,可以安装第三方依赖,完整支持 Python 和 Node.js 运行仅能在自托管模式下引入第三方依赖,配置繁琐,仅支持 JS 代码无法引入第三方依赖,支持基础的Python 和 JS 代码
定制化能力和灵活性极致,可以通过代码社区能力完成业务较高,自托管模式下可以完成自定义,但是需要进行配置无法完成内置应用以外的业务
运行和调试有完善的运行日志,可以自定义打印内容,节点界面上会有错误信息展示,提供单点运行和忽略等功能提供单点运行、忽略、回滚等调试功能,有简单日志记录简单的日志提醒
共享可以共享工作流给所有用户,也可以仅自己使用,同时可以导出文件和镜像可以选择共享工作流给指定用户仅付费计划可以进行共享

介绍

  • Zapier

Zapier 是一个无代码、在云端运行的工作流平台,它内置了超过 7000+ 的应用,让用户可以通过编排这种叫做 Zaps 的应用来完成自己的业务目的。

Zapier 的一大优势在于它庞大的内置应用,想要达到这个量级的应用数并不容易,这让它在工作流自动化领域保持了一个稳定的领先地位。

  • n8n

n8n 是一个低代码、开源、可以自托管或者云端运行的工作流平台,它内置了 1000+ 的应用和 2000+ 的模版。

n8n 的优势在于它以相对更简单的方式引用了代码,这让用户可以比较方便的对工作流进行微调。所以 n8n 产出的工作流相比 Zapier 来说更具有扩展性,灵活性也更高。

  • OOMOL Studio

OOMOL Studio 是一个核心开源、支持本地/云端/自托管运行方式、完美支持代码的工作流平台,由于发布时间关系,目前还没有太多的内置应用。

OOMOL Studio 的优势在于它完美支持了 Python 和 Node.js 代码,这代码它可以在工作流中引入 Python 和 Node.js 的任意模块,这在 Zapier 和 n8n 中是无法做到的。

因此 OOMOL Studio 拥有了最高的自由度和扩展度,在内置应用不足的情况下,用户也可以使用代码来快速构建自己想要的节点完成业务。在完成业务后,可以快速将代码发布为平台应用用于复用或者分享。

同时 OOMOL Studio 的本地运行方式是完全免费的,对于多数用户来说也许可以省下每月数百美元的开销。

平台特点和理念

  • Zapier: 无代码、易用、云端运行

Zapier 在云端运行和无代码的特点使它的目标用户定位在非技术人员,用户不需要安装应用,也不需要考虑编程,只需要将业务分解为详细步骤,然后为每个步骤找到对应的 app,连接后就可以使用。

当然它也提供有限制的代码功能,不过这个显然不是他们工作的重点,因为这里的代码无法引用社区库。

Zapier 的目标在于快速启动和运行而不是深度化定制,它的这些特点吸引了大量非技术用户和小企业用户,在 AI 技术不断发展的今天,Zapier 专注于让用户避开代码,通过 AI 或者社区应用快速实现用户业务。

  • n8n: 开源、低代码、易扩展、可自行托管

n8n 有自托管及云端两种运行方式。

n8n 作为一个开源项目,用户可以自行托管来省去运行成本,同时它在代码方面相对于 Zapier 有一定进展,在自托管的情况下,n8n 可以安装代码的第三方社区库。

自托管的方式可以通过代码来补足内置应用不够完善的问题并提高工作流的灵活性和扩展性,因此它吸引了相当一部分有代码基础的用户。

同时较高的可扩展性也方便用户接入不断更新换代的 AI 应用。

云端运行的方式则适合非技术用户或者一些非定制化业务的用户,这一部分用户与 Zapier 的用户重叠。

n8n 在 Zapier 的基础上向可定制化工作流前进了一步,虽然在使用体验上增加了复杂度,但是有代码能力的用户为社区提供了相当大的活力。

  • OOMOL Studio: 容器化、完美支持代码、易扩展、多种运行方式

OOMOL Studio 的目标是吸引有代码基础的用户,用简单的发布和分享机制让社区逐渐完善,然后让普通用户也能享受到工作流自动化的优势。

OOMOL Studio 期望用户能够真正实现工作流的自动化,提高生产效率,所以设计了导出镜像的方式,使得用户开发的工作流可以随意部署到云端以用户期望的方式使用。

OOMOL Studio 同时也内置了主流 LLM 可以直接使用,如果无法满足用户需求可以直接通过代码来接入。

费用

  • Zapier

起步价免费,每月有 100 个任务的限制,免费档基本无法满足正常生产使用。

收费计划至少每月需要 20 美元,根据任务的运行次数,成本会增加,如果有大量重复性的任务,成本可能会上升到较高。

  • n8n

如果是自托管方式运行是免费使用,如果是云端运行起步价在每月 20 美元,允许每月 2500 个任务执行。

  • OOMOL Studio

应用下载免费使用,运行次数也没有限制。针对 LLM 的资源消耗有一定的费用产生,但是价格透明,且用户可以通过自行接入 LLM 来规避这部分费用。

订阅费用从每月 5 美元起步,可以解锁更多高级功能。免费订阅计划也不会影响用户的开发体验。

功能对比

1. 工作流界面

  • Zapier

以线性的方式编排工作流,总体以'触发器' -> '操作步骤'的方式运行,操作空间小,界面简洁易懂。

  • n8n

以拖放的方式来编排工作流,可以自由为每个工作节点进行连线来指定执行顺序,这样的操作方式相对 Zapier 较复杂,但是可以编排更复杂的任务,自定义程度更高。

  • OOMOL Studio

以拖放的方式来编排工作流,同时可以编排每一个节点的输入输出的类型和值,对比 n8n 和 Zapier 都更加复杂,输出节点的值可以控制工作流的运行条件。但是对于技术人员来说,复杂也来了了更大的灵活性和自定义能力。

同时提供了子流的功能,让复杂的工作流可以简化为一个普通节点,让非技术背景的用户可以不用关心细节直接使用。

2. 定制化和灵活性

  • Zapier

虽然有大量接入的应用,但是定制化使用收到限制,难以满足特殊需求。

  • n8n

有较好的灵活性,但是每个节点的输入作为一个整体,无法细粒度地进行控制,同时仅有在自托管的模式下才能够引入代码的社区库,定制化能力收到限制。

  • OOMOL Studio

极致的灵活性,如果有特殊的需求可以直接使用代码实现,也可以将社区中已有的工作流作为模板直接修改达成业务目的。

3. 开发体验

  • Zapier

代码模块无法引入第三方库,仅能使用语言内置功能,能完成的工作极其有限。同时发送 http 请求需要付费。

  • n8n

代码模块仅在自托管模式下可以引入第三方库,同时需要根据文件进行前提条件设置,设置较为复杂。

  • OOMOL Studio

可以直接在终端安装 Python 和 Node.js 的任意库,与原生代码开发没有区别,这代表 Python 和 Node.js 的生态都可以应用到业务中。更进一步的是 Python 和 Node.js 两个环境的库可以混合使用。

4. 运行和调试

  • Zapier

逻辑方面提供了 Path 功能来控制工作流的运行路径,但是无法处理复杂的逻辑判断。

调试方面提供了测试运行机制和简单的异常提醒机制。

  • n8n

逻辑方面提供了 if / switch 等组件来控制工作流的运行路径,通过代码配合可以实现较复杂的业务逻辑。

调试方面提供了单点运行和部分运行的功能,以及忽略和回滚等机制,基本满足用户的开发调试需求。

  • OOMOL Studio

通过节点的输出来控制工作流的运行路径,这样的方式更加复杂,但是可以更细粒度地控制工作流,输出的每个值都可以单独进行处理。

为每个节点都提供了单独运行和忽略等调试功能,同时所有的运行日志都会详细进行记录并在日志栏分类展示。

节点的异常情况会直接展示在界面和日志中,方便用户观察修改。

5. 合作和共享

  • Zapier

仅有团队计划可以共享工作流。

  • n8n

可以向指定用户共享和导出工作流。

  • OOMOL Studio

可以向整个社区共享工作流,同时允许以多种方式导出导入,在付费订阅下可以共同发布工作流。

总结

Zapier 通过大量的内置引用与简单易懂的流程界面吸引了大量用户,而 n8n 关注有更高自定义需求的用户,他们在各自领域都很好地完成了自己的工作。

OOMOL Studio 关注到了长久以来工作流自动化场景下的真正痛点在于用户总是需要一定的自由度来调整工作流,OOMOL Studio 选择实现真正自由的开发体验,只有这样生产的工作流才能满足各类用户的需求。

OOMOL Studio 希望用户不管是开发和使用都是完全自由的,任何场景都可以通过开发的调整被纳入到自动化的场景中,最终让非技术背景的用户获得收益,提高整个社会的生产力。

OOMOL Studio 当然不是完美的产品,但是与 Zapier 和 n8n 一样,都希望探索出最适合的方式来达到一切皆可自动化的目标。