cloudflare實作繪圖(二)- 加入AI翻譯

續上篇 cloudflare實作ai繪圖,因為目前cloudflare提供的AI繪圖只可以輸入英文描述(輸入中文描述會也會出圖,不過完全看不出邏輯…),英文苦手的我,如果能直接輸入中文描述,那該有多好…

原本的想法是,先實作一個AI翻譯的Workers,讓AI繪圖的Workers呼叫取得翻譯,不過後來發現,一個Workers可以使用多個AI庫,所以最終的解決方案是,直接在同一個AI繪圖Workers內作文字翻譯,完整程式如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
export default {
async fetch(request, env) {

let oMatch = request.url.match(new RegExp(/\/([^\/]*)$/));
let name = oMatch?.[1] || "cat";

if(name){
name = decodeURI(name);
}

console.log(`產生:${name} 的圖片`);

//取得name翻譯英文
let res437 = await env.AI.run(
"@cf/meta/m2m100-1.2b",
{
text: name,
source_lang: 'chinese',
target_lang: 'en',
}
);

let name437 = res437.translated_text || "Cat";

console.log(`翻譯英文:${name437}`);

const inputs = {
prompt: name437
};

const response = await env.AI.run(
'@cf/stabilityai/stable-diffusion-xl-base-1.0',
inputs
);

return new Response(response, {
headers: {
'content-type': 'image/png'
}
});
}
};

行14至行23就是此次加入的程式,透過「env.AI.run(@cf/meta/m2m100-1.2b, {…})」,就可以直接操作文字翻譯,後續就直接拿翻譯的文字進行AI繪圖。

調整後AI繪圖這個工具Workers就好用多了。

小猴子爬樹吃香蕉

AI繪圖的圖片如下,品質還是不錯的(雖然還沒有吃到香蕉)
小猴子爬樹吃香蕉