本文有小的修改和细节说明,主要说明和代码的原文地址:
用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配置需要在域名服务商进行配置)