LoginSignup
0

More than 1 year has passed since last update.

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

Posted at

課題

 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
  3. You can use dark theme
What you can do with signing up
0