LoginSignup
0

posted at

GASでDALL·E 2 APIを組み込んだLINEbotを作成する方法[コード付き]

課題

 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に追記する。ただし注意点として、意味的な区切りを作る場合はできるだけカンマ(,)か読点(、)をつけるようにして下さい。
例①:"デジタルアート風、"←「デジタルアート風」で意味的に区切っているので、読点をつける。
例②:"朝ごはん、"←「朝ごはん」で意味的に区切っているので、読点をつける。

コード.gs
// 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ボットの作成

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
0