【转】用Cloudflare Workers提供一个翻译API后端

本文有小的修改和细节说明,主要说明和代码的原文地址:

用Cloudflare Workers提供一个翻译API后端 – Minaduki’s Blog

地铁上班路上,刷到文章:使用Cloudflare Workers AI搭建一个翻译服务,搜索实践了下。

准备工作:

  • Cloudflare账号注册
  • 简约翻译(浏览器插件)
  • 注册域名(中国网络环境必选项)

主要步骤

前面两个链接的主要步骤已经写得很详细了,这里只简单补充。
  • Cloudflare主页-侧边栏AI(beta)-侧边栏Workers AI-Workers AI模板-翻译应用-部署-编辑代码-替换为以下代码(首行代码改为引用’./vendor/@cloudflare/ai.js’),右上角保存并部署
import { Ai } from './vendor/@cloudflare/ai.js';// 此处有小的变化
export default {
  async fetch(request, env) {

    /**
     * readRequestBody reads in the incoming request body
     * Use await readRequestBody(..) in an async function to get the string
     * @param {Request} request the incoming request to read from
     */
    async function readRequestBody(request) {
      const contentType = request.headers.get("content-type");
      const Authorization = request.headers.get("Authorization");
      const expected_token = env.BEARER_TOKEN;
      if (Authorization === `Bearer ${expected_token}`) {
        if (contentType.includes("application/json")) {
          return await request.json();
        } else {
          throw new Error("Request's content-type is not supported. Please use application/json.");
        }
      } else {
        throw new Error("Authentication failed. Please check your access token.");
      }
    }

    if (request.method === "POST") {
      try {
        const reqBody = await readRequestBody(request);

        const ai = new Ai(env.AI);
        const inputs = {
          text: reqBody['text'],
          source_lang: '',
          target_lang: 'chinese'
        };
        const response = await ai.run('@cf/meta/m2m100-1.2b', inputs);

        const translated_text = response['translated_text'];
        const ret = {
          text: translated_text,
          from: "", // 识别的源语言,Cloudflare目前似乎并不支持
          to: "zh-CN"
        };
        return Response.json(ret);

      } catch (e) {
        return new Response(e.message);
      }
    } else if (request.method === "GET") {
      return new Response("Please use POST.");
    }

  }
};
  • 复制下面的链接创建key,aip创建模板选择Workers AI (Beta):https://dash.cloudflare.com/profile/api-tokens
  • 点击左侧边栏选项》Workers 和 Pages,找到刚刚建立的项目点击,设置》变量》编辑变量。变量名称BEARER_TOKEN,值为上一步获取到的key
  • 浏览器打开简约翻译的配置页面,接口设置》Custom,URL处填入项目预览地址(格式为https:\\worker-xxx-xxxx-xxx.账号名.workers.dev\translate),还有key,点击测试。
  • 如在国内网络环境使用,回到Cloudflare刚刚的Workers 和 Page,点击项目名称》触发器》填入自定义域名(如DNS未在Cloudflare配置需要在域名服务商进行配置)

最终效果取决于访问的网页结构,翻译速度很快,但可能漏掉部分文字