使用Cloudflare Workers AI搭建属于你的翻译API

744 字
4 分钟
使用Cloudflare Workers AI搭建属于你的翻译API

我们都知道,有这样一个公司,提供免费CDN、免费域名托管、免费边缘函数计算、免费对象存储、免费内网穿透、免费部署Pages、免费KV、免费SSL证书……他就是Cloudflare!

就在前不久Cloudflare推出了免费的Workers AI,这就允许我们使用AI模型搭建一个翻译API,这相当简单,请看下面的教程。

搭建教程#

Cloudflare dashboard找到AI - Workers AI,找到下面这个模型(@cf/meta/m2m100-1.2b),这就是我们要使用的模型。

Untitled
Untitled

然后我们找到使用WOrkers模板创建,然后在里面找到Translation AI,点击创建,根据提示自行创建。

创建完之后点击Workers内的编辑代码,将index.js的代码替换成我的:

export default {
async fetch(request, env) {
const urlStr = request.url
const urlObj = new URL(urlStr)
let text = urlObj.searchParams.get('text')
let source_language = urlObj.searchParams.get('source_language')
let target_language = urlObj.searchParams.get('target_language')
const inputs = {
text: text,
source_lang: source_language,
target_lang: target_language
};
if(text==null){
return Response.json({ inputs, response:{
translated_text: "ERROR: value 'text' is missing"
} } );
}
if(source_language==null){
return Response.json({ inputs, response: {
translated_text: "ERROR: value 'source_language' is missing"
}} );
}
if(target_language==null){
return Response.json({ inputs, response: {
translated_text: "ERROR: value 'target_language' is missing"
}} );
}
else {
const response = await env.AI.run('@cf/meta/m2m100-1.2b', inputs);
return Response.json({ inputs, response });
}
},
};

这是最基础的版本,如果你需要一个访问密钥的话可以使用下面的代码:

export default {
async fetch(request, env) {
const urlStr = request.url
const urlObj = new URL(urlStr)
let text = urlObj.searchParams.get('text')
let source_language = urlObj.searchParams.get('source_language')
let target_language = urlObj.searchParams.get('target_language')
let key = urlObj.searchParams.get('key')
const inputs = {
text: text,
source_lang: source_language,
target_lang: target_language
};
if (key !=="设置你想要的密钥"){
return Response.json({ inputs, response:"ERROR: wrong key"} );
}
else{
if(text==null){
return Response.json({ inputs, response:{
translated_text: "ERROR: value 'text' is missing"
} } );
}
if(source_language==null){
return Response.json({ inputs, response: {
translated_text: "ERROR: value 'source_language' is missing"
}} );
}
if(target_language==null){
return Response.json({ inputs, response: {
translated_text: "ERROR: value 'target_language' is missing"
}} );
}
else {
const response = await env.AI.run('@cf/meta/m2m100-1.2b', inputs);
return Response.json({ inputs, response });
}
}
},
};

编辑好代码后,点击部署即可,参照下图配置自定义域:

Untitled
Untitled

如何使用#

对于第一个代码你需要传入一组数据,包含三个参数,键分别为text,source_languagetarget_language

// 传入参数
{
"text": "你好啊",
"source_language": "zh",
"target_language": "en"
}

https://xx.xxxxx.xxx/?text=你好啊&source_language=zh&target_language=en

这个链接就可以查询到结果,不出意外返回的JSON应该是这样的:

{
"inputs": {
"text": "你好啊",
"source_lang": "zh",
"target_lang": "en"
},
"response": {
"translated_text": "Hello to you."
}
}

不同于传入的参数,传出的参数中*_language都变成了*_lang,开发者需要注意。

对于使用了带有密钥的方案,只需额外传入参数key即可,返回的JSON也会在inputs中多一个key的参数,其他不变动,URL也只需要加上&key=你自己设置的key即可。

限制#

虽然Cloudflare允许并且鼓励我们白嫖,但是绝对不会没有限制,限制如下:

Cloudflare Workers and Pages 免费计划 Limit

Workers 和 Pages Functions

每个请求最多占用 10 毫秒 CPU 时间

每天最多 100,000 (UTC+0)

Workers AI

访问我们目录中的所有 AI 模型

每天最多 10,000 个神经元

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

使用Cloudflare Workers AI搭建属于你的翻译API
https://blog.linyunlink.top/posts/240702/
作者
雪野和花
发布于
2024-07-02
许可协议
CC BY-NC-SA 4.0

评论区

Profile Image of the Author
雪野和花
Hello, I'm Yukino Waka.
公告
欢迎来到我的博客鸭!本人是一名高中生,博客更新不太频繁,多请见谅!qwq
分类
标签
最新动态
站点统计
文章
25
分类
8
标签
24
总字数
20,083
运行时长
0
最后活动
0 天前
站点信息
构建平台
EdgeOne Pages
博客版本
Firefly v6.15.3
文章许可
CC BY-NC-SA 4.0