工程 2 分钟阅读

小模型该住在边缘

作者用一种语言写完。发布时才调用模型,译文落在 D1 里,阅读路径不再等待。

小模型该住在边缘

大多数团队把「智能」想成一次远程调用:请求飞到远处的大模型,再飞回来。聊天窗口可以忍受这个来回。一篇博客、一个发布按钮,不该这样等。

这个站点把模型留在写入的一侧。作者用一种语言写完,按下发布,翻译在同一次操作里完成,结果写进 D1。读者之后打开的是已经写好的页面,而不是一段还在加载的脚本。

为什么要在发布时翻译

三件具体的事:

  1. 费用可预期。 Workers AI 的免费额度按天重置。翻译发生在发布,而不是每一次阅读。

  2. 译文可修改。 机器给出的是草稿。标题、术语和分享到 X 的那句话都应该能改,改过的语言可以被锁定。

  3. 爬虫看到完整的页面。 搜索引擎和回答引擎读到的是语义完整的 HTML,包括摘要和 FAQ,而不是一个空容器。

边缘适合做什么

适合 不适合
翻译、摘要、FAQ、分类 把整段对话都押在免费额度上
发布时跑一次 在每次页面请求里等待大模型
人可以改的草稿 不可追溯的现场生成

短代码、链接和嵌入标记不会送去翻译。下面这段调用保持原样:

const translated = await env.AI.run("@cf/meta/m2m100-1.2b", {
  text: paragraph,
  source_lang: "zh",
  target_lang: "ar",
});

跟 X 的关系

技术讨论常常不发生在文章下面的评论框里。每篇文章准备一句分享文案,正文里也可以嵌一条公开帖。

没有嵌入时,页面不会去请求第三方脚本。

阿拉伯语不是多出来的一种语言

从右到左,不是把 dir 设上就结束。导航、列表和引用线沿着行内方向翻转,代码块则始终从左到右。hreflang 使用 ar,站点地图和 RSS 也各有一份阿拉伯语版本。西班牙语同样进入路由、站点地图和语言切换:/es/。

可以带走的原则

  • 一种源语言,多种已经发布的译文。
  • 模型调用放在写入路径,阅读路径只读数据库和对象存储。
  • 摘要和 FAQ 既给人读,也给生成式引擎读。

常见问题

源语言必须是中文吗?

默认是简体中文。后台可以把五种语言里的任意一种设为源语言,其余语言在发布时生成。

免费额度用完了会怎样?

原文仍会保存。自动翻译会标成待处理,可以稍后重试,也可以自己贴上译文。

译文会在下次发布时被覆盖吗?

锁定过的语言不会。没有锁定、且仍是自动草稿的语言,才会在你要求重新翻译时更新。