Closed Minaduki-Shigure closed 1 year ago
Cloudflare Workers AI是一个CF刚推出的能够访问其AI模型的Workers,由于CF带了个翻译的model,所以我心血来潮想到能不能用它配合KISS Translator进行翻译。
我写了一个简单的CF Worker作为概念验证(如下),CF目前支持的语言和语言的代码与KISS Translator的定义不同,由于个人水平限制,我在验证中写死了目标语言为中文,但是这个Worker代码我测试了能够配合KISS Translator正常翻译网页。
当然这个方案还是有一些问题,比如Workers AI还在Beta不知道会不会有大的变动、Pricing会不会不够合理、语言代码和模型会不会变化什么的,因此这个issue仅供您参考,谢谢您的耐心。
import { Ai } from './vendor/@cloudflare/ai'; export default { async fetch(request, env) { 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."); } } };
感谢您提供的信息。
不过目前 Cloudflare Workers AI 是早期测试版,支持的语言也很有限,等稍微稳定后可以考虑直接支持,暂时可通过自定义接口(如您提供的例子)使用。
好的,感谢您的关注。
Cloudflare Workers AI是一个CF刚推出的能够访问其AI模型的Workers,由于CF带了个翻译的model,所以我心血来潮想到能不能用它配合KISS Translator进行翻译。
我写了一个简单的CF Worker作为概念验证(如下),CF目前支持的语言和语言的代码与KISS Translator的定义不同,由于个人水平限制,我在验证中写死了目标语言为中文,但是这个Worker代码我测试了能够配合KISS Translator正常翻译网页。
当然这个方案还是有一些问题,比如Workers AI还在Beta不知道会不会有大的变动、Pricing会不会不够合理、语言代码和模型会不会变化什么的,因此这个issue仅供您参考,谢谢您的耐心。