課題
DALL·E 2 APIを使用したLINEbotを作成しようとしましたが、「DALL·E 2 API line bot」で検索しても良いサイトが見つかりませんでした。
そのため、DALL·E 2 APIを使ってLINEbotを作成する方法を共有します。
準備
LINEbotの作成においてGASを開くところまで出来てる方は、こちらを飛ばしていただいて結構です。
準備は主に2つあります。1つ目がOPENAIのAPIキーの取得で、2つ目がLINE Messaging APIをGASで実行するLINEbotの作成です。
以下に、それぞれを丁寧に説明してくれてるサイトをご紹介します。
①OPENAIのAPIキーの取得方法:
以下の記事が、わかりやすかったです!
②LINE Messaging APIをGASで実行するLINEボットの作成
以下の記事が、わかりやすかったです!
ここで、GASにコードを入力するところまでいっていただければ、準備完了です!
結論
以下のコードをGASにコピペして、①~③を行って下さい!
①"OPENAIのAPIキー"
を、自分のOPENAIのAPIキーで置き換えます。
例:"aaaa-aa-aaa-TW"
②"LINE Messaging APIで取得したチャネルアクセストークン"
を、自分のチャネルアクセストークン(長期)で置き換えます。
例:"aaaaaaaaaaaaaaaaaa-aa-aa-aaa-PU="
③DALL·E 2 APIを呼び出す際に、言葉でオプションを追加したい場合は、add_order_message
に追記する。ただし注意点として、意味的な区切りを作る場合はできるだけカンマ(,)か読点(、)をつけるようにして下さい。
例①:"デジタルアート風、"
←「デジタルアート風」で意味的に区切っているので、読点をつける。
例②:"朝ごはん、"
←「朝ごはん」で意味的に区切っているので、読点をつける。
// LINE Messaging APIを使用するためのライブラリを取り込む
var LINE_API = "https://api.line.me/v2/bot/message/reply";
var LINE_API_KEY = "LINE Messaging APIで取得したチャネルアクセストークン";
// DALL·E 2 APIを使用するためのライブラリを取り込む
var DALLE2_API = "https://api.openai.com/v1/images/generations";
var DALLE2_API_KEY = "OPENAIのAPIキー";
function doPost(e) {
// 受け取った内容を取得する
var message = JSON.parse(e.postData.contents).events[0];
//受け取った内容の文字列を取得
var str_message = message.message.text;
//DALL·E 2 APIを呼び出す際に、言葉でオプションを追加したい場合は、ここに追記
var add_order_message="";
//受け取った内容の文字列と追加オプションを結合
var sending_message = add_order_message + str_message;
// DALL·E 2 APIを呼び出すためのリクエストを送信する
var imageUrl = generateImage(message.message.text);
// リクエストを送信するためのオプションを設定する
var options = {
"method": "post",
"headers": {
"Content-Type": "application/json",
"Authorization": "Bearer " + LINE_API_KEY
},
"payload": JSON.stringify({
"replyToken": message.replyToken,
"messages": [
{
"type": "image",
"originalContentUrl": imageUrl,
"previewImageUrl": imageUrl
}
]
})
};
// リクエストを送信する
UrlFetchApp.fetch(LINE_API, options);
}
// DALL·E 2 APIを呼び出し、出力結果の画像のURLを取得する関数
function generateImage(text) {
// リクエストを送信するためのオプションを設定する
var options = {
"method": "post",
"headers": {
"Content-Type": "application/json",
"Authorization": "Bearer " + DALLE2_API_KEY
},
"payload": JSON.stringify({
"prompt": text,
"model": "image-alpha-001",
"num_images": 1,
"size": "256x256",
"response_format": "url"
})
};
// リクエストを送信する
var response = UrlFetchApp.fetch(DALLE2_API, options);
var data = JSON.parse(response.getContentText());
// 画像のURLを取得する
return data.data[0].url;
}
最後に
DALL·E 2 APIを使用したLINEbotを作成する方法を紹介しました。今回のプログラムを他のAPIと組み合わせることで、さらに多くの機能を追加することができます。
ご参考になれば幸いです。
最後までお読みいただき、ありがとうございました!
参考になったサイト:
①OPENAIのAPIキーの取得方法:
②LINE Messaging APIをGASで実行するLINEボットの作成