[ChatGPT]ChatGPTでブログ下書きを自動化しよう

ChatGPT2ChatGPT

どうも。つじけ(tsujikenzo)です。このシリーズでは、「ChatGPTで業務効率化」についてお届けしています。今回は2回目です。

前回のおさらい

前回は、「プログラミングはChatGPTを活用しながら」をお届けしました。

引き続き、ChatGPTにキーワードを渡すと、ブログの下書きを書くアプリを作成したいと思います。

今回は、「ChatGPTでブログ下書きを自動化しよう」です。

今日のアジェンダ

  • OPEN AIのAPI Keyを取得する
  • ChatGPTで返答をもらうGAS
  • Googleドキュメントの選択範囲を取得する
  • Googleドキュメントに貼り付ける

OpenAIのAPI Keyを取得する

GASでChatGPTから返答をもらうためには、API keyが必要です。

API KeyはOpenAIのWebサイトから取得します。

まず、こちらのWebサイトの「API」をクリックします。

「LOG IN」をクリックします。

お好きな方法で、ログインします。(アカウント登録方法は割愛します)

もし、「あなたは人間ですか?」という質問が出たら、チェックをいれます。

ログインできたら、右上のプロフィールメニューをクリックして、「View API Keys」をクリックします。

Create New seacret keyをクリックします。

API Keyが発行されたら、コピーをクリックします。画面を閉じてしまうと2度と確認できませんので、メモ帳にコピペしておきましょう。

ChatGPTで返答をもらうGAS

新規Googleドキュメントを用意して、コンテナバインドスクリプトを用意します。(手順は割愛します)

このようなソースコードを記述します。

変数apiKeyには、先ほどのAPI Keyをコピペします。

/** ChatGPTに質問する関数 */
  function askChatGPT() {
 
  // API Key
  const apiKey = "API Keyを入力";

  //キーワード
  const word = "ゲーム理論とは?"

  //エンドポイントとパラメータ
  const endpoint = 'https://api.openai.com/v1/completions';
  const params = {
    'prompt': word,
    'model': 'text-davinci-002',
    'max_tokens': 1000,
    'temperature': 0.8
  };

  //ヘッダーとオプション
  const headers = {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer ' + apiKey
  };

  const options = {
    'method': 'post',
    'headers': headers,
    'payload': JSON.stringify(params)
  };
  const response = UrlFetchApp.fetch(endpoint, options);

  //レスポンスのオブジェクト化
  const data = JSON.parse(response.getContentText());

  //オブジェクトからテキスト抽出
  const answer = data.choices[0].text;
  console.log(answer);
  return answer
}

max_tokensとは

max_tokensは、ChatGPTのモデルによって生成される、文章の最大トークン数を指定するパラメーターです。

これは、生成される文章の長さを制限するために使用されます。

max_tokensの値が小さいほど、生成される文章は短くなります。

temperatureとは

Temperatureは、生成モデル(たとえばGPT-3)が生成する、文章の多様性を調整するためのパラメーターです。

Temperatureは、確率分布からサンプリングする際に使用され、値が大きいほど、生成される文章は多様性が高くなります。

逆に、値が小さいほど、生成される文章は多様性が低くなります。

数値をいろいろ変更して、試してみましょう。

Googleドキュメントの選択範囲を取得する

GASでChatGPTから返答をもらえるということは、Googleドキュメントからキーワードを指定すると、ChatGPTからの返答をGoogleドキュメントに貼り付けるアプリを作成できそうです。

Googleドキュメントからキーワードを指定する方法は、キーワードの選択(文字列の色が反転する状態)です。 

この選択範囲を、GASで取得してみましょう。

/**
 * 選択した範囲の単語を取得する関数
 * @return  {string} 単語
*/
 function getTargetWord() {
  const doc = DocumentApp.getActiveDocument();
  const word = doc.getSelection().getRangeElements()[0].getElement().getText();
  console.log(word);
  return word;
}

関数を実行すると、選択範囲を取得できていればOKです。

Googleドキュメントに貼り付ける

Googleドキュメントに、文字列を貼り付けるメソッドはこちらです。

/**
 * テキストを受け取ってドキュメントに貼り付ける関数
 * @param {string} 文字列
*/
 function setText(text) {
  const doc = DocumentApp.getActiveDocument();
  const paragraph = doc.getParagraphs()[0];
  paragraph.appendText(`${text}\n\n`); //\nは改行
}

実行結果は、割愛します。

onOpen関数とエントリーポイント

Googleドキュメントから実行できるように、カスタムメニューを作成しましょう。

function onOpen() {

  const ui = DocumentApp.getUi(); 
  ui.createMenu('🌈カスタムメニュー')
    .addItem('🚀教えて!ChatGPT!', 'main')
    .addToUi();
}

/** 実行されるエントリーポイント */
 function main() {
  const word = getTargetWord();
  const text = askChatGPT(word)
  setText(text);
}

askChatGPT()関数に、引数を渡せるように設定し、完成したコード全文はこちらです。

Build software better, together
GitHub is where people build software. More than 150 million people use GitHub to discover, fork, and contribute to over 420 million projects.

キーワードを選択して、カスタムメニューから実行してみましょう。

Googleドキュメントに反映されれば、成功です。

まとめ

以上で、「ChatGPTでブログ下書きを自動化しよう」をお届けしました。

このアプリで、ブログ執筆の完全自動化は、まだまだむずかしいと思います。

しかしながら、かんたんな下書きを作成するときなどは、確実に業務効率化の手助けをしてくれると感じました。

みなさんの現場でも、どんどん活用事例が生まれてくると思います。

このシリーズの目次

タイトルとURLをコピーしました