どうも。つじけ(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()関数に、引数を渡せるように設定し、完成したコード全文はこちらです。
キーワードを選択して、カスタムメニューから実行してみましょう。
Googleドキュメントに反映されれば、成功です。
まとめ
以上で、「ChatGPTでブログ下書きを自動化しよう」をお届けしました。
このアプリで、ブログ執筆の完全自動化は、まだまだむずかしいと思います。
しかしながら、かんたんな下書きを作成するときなどは、確実に業務効率化の手助けをしてくれると感じました。
みなさんの現場でも、どんどん活用事例が生まれてくると思います。