この記事ではAIを使った相談サービスの開発方法を解説します。初心者の方でも30分ほどで簡単に「AIお悩み相談サービス」を実装できるので、ぜひ真似してみてください!
OpenAIのAPIを使うための初期設定は下記の記事で解説しています。OpenAIのアカウント作成が済んでない方は参考にしてください。
「AIお悩み相談サービス」とは?
今回、開発する「AIお悩み相談サービス」はChatGPTの裏側で使われているGPTという技術を用います。AIが福祉施設で働く支援者(スタッフ)が悩みを相談できるサービスを開発してみます。
サービス名
「福祉のモヤモヤ回収箱」という名前にしてみました。「お悩み相談」「お悩みホットライン」とかだと敷居が高すぎて相談する気になれない人が多いと思うので、モヤモヤを気軽に投稿できる場所になるといいなと思いキャッチーな名前にしてみました。
画像はCanvaでデザインしています!
ユーザーの課題
障害福祉施設で働いている人は、相談しにくい悩みを溜め込んでいることが少なくありません。対人支援をする仕事であるが故に、イライラしたりストレスを感じる自分に罪悪感を抱きやすい側面もあります。
公的相談窓口として、「福祉のしごとなんでも相談」「こころスッキリ相談」というものが提供されているのですが、「電話」「対面」の相談しかできないのです。正直、仕事時間中に福祉の仕事の悩みを電話で相談できる人はほとんどいないでしょう。わざわざ対面のカウンセリングを予約するほど時間の余裕がある人も多くはないです。
昼休みにトイレから相談できたり、帰宅後に深夜に相談できたりと、オンラインで24時間対応できる相談ルートがあると助かる人はいるんじゃないかなと感じています。
実際にX(Twitter)で投稿したところ、そこそこ反響がありました。
技術選定(利用するツール)
- Googleフォーム
- Googleスプレッドシート
- Google Apps Script
- ChatGPT API(OpenAI API)
- Gmail
今回はコストを抑えられる「gpt-3.5-turbo」を使いました!
GPT4にすると費用はかかりますが、より精度の高い回答を得られます。
AIお悩み相談サービスの利用イメージ
- ユーザーはGoogleフォームから「メールアドレス」「役職」「相談したい悩み」を入力して送信する。
- Googleフォームが送信されたらGoogle Apps Scriptを実行してChatGPT APIにより相談内容に対する回答を生成する。
- ChatGPTから返された文章をメールアドレス宛にメールで送信する。
- ユーザーはAIが生成した文章を読んで悩みへの対処を考える。
「AI相談サービス」の開発方法
30分で実装します。
Googleフォームを作成(5分)
新規フォームを作成
Googleドライブから、フォームを作成したいフォルダを選び、「新規>Googleフォーム」を選びます。Googleフォームを使うと無料で簡単に質問を設定してWEBフォームを作成できます。
新しいウィンドウが立ち上がり、無題のフォームが表示されます。こちらを編集していきます。
設問を作る
設問を作っていきます。
メールアドレスを収集する設定をする
「設定>回答>メールアドレスを収集する」から、「回答者からの入力」を選びます。これでメールアドレスを収集する質問を追加することができます。
「質問」の編集画面に戻ると、メールアドレスの設問が自動的に追加されています。
回答を信頼できる組織のユーザーに限定しないようにする
会社のアカウントの場合、初期設定が「株式会社パパゲーノと信頼できる組織のユーザーに限定する」というように、パパゲーノという会社のアカウントでないとGoogleフォームに回答できない設定になっていることがあります。その場合は「OFF」に修正します。
カバー画像を設定する(任意)
可愛いカバー画像があった方が、サービスに親しみを持ってユーザーに使ってもらいやすいです。任意ですが、画像を設定できる場合は設定しましょう。
右上にある「テーマをカスタマイズ」をクリックします。
ヘッダーの「画像を選択」をクリックすると、好きな画像をカバー画像に指定できます。
Googleスプレッドシートを作成(5分)
Googleフォームに回答があった時のその結果を蓄積していくGoogleスプレッドシートを作成します。
回答>スプレッドシートにリンクをクリック
Googleフォームの編集画面の「回答」タブから右上にある「スプレッドシートにリンク」をクリックします。
新しいスプレッドシートを作成
新しいスプレッドシートを作成を選択して「作成」をクリック。
Googleスプレッドシートができる
新しいウィンドウでGoogleスプレッドシートが立ち上がります。
テストでGoogleフォームに回答してみる
Googleフォームの右上の「送信」ボタンをクリックし、フォームのURLを開きます。
テスト回答を入力して送信します。
回答結果がGoogleスプレッドシートに表示されていることが確認できたらOKです。
Google Apps Scriptを作成(15分)
次にGoogle Apps ScriptでChatGPTのAPIによりGoogleフォームの回答があったら、指定されたメールアドレス宛に相談への回答文章を生成してメール送付するプログラムを組みます。
GoogleスプレッドシートでApps Scriptを作成
Googleフォームの回答結果が表示されているGoogleスプレッドシートを開いて、「拡張機能>Apps Scriptを作成」をクリックします。
Googleスプレッドシートに紐づいた「コンテナバインド型」のGoogle Apps Scriptを作成していきます!
ChatGPT・CopilotにGASを書いてもらう
ChatGPTかCopilotに以下のような指示を出して、GASを書いてもらいます。実際にAIに出した指示や、試行錯誤した過程はこちらで確認いただけます。
最初はエラーになったので、エラーメッセージをChatGPTに共有してコードを修正してもらったら動くようになりました!
あなたはGASのエンジニアです。Googleスプレッドシートにコンテナバインド型のApps Scriptを書いて、Googleフォームの回答があったら、回答結果のメールアドレス宛にChatGPTが生成した文章をメール送付するようにしたいです。
#Googleスプレッドシートのカラム
メールアドレス
あなたの役職・立場を教えてください
相談したいモヤモヤ
#条件
・OpenAIのAPIキーを指定し、ChatGPTにプロンプトを送って結果を取得する関数を組んでください
・ChatGPTモデルはGPT 3.5.turboにしてください
・変数定義はconst、letを使用してください。
・変数名は英語にしてください。
・繰り返し分はforを使ってください。
・1行ずつ日本語でどんな処理をしているコードなのかコメントを入れてください。
試行錯誤の結果、下記のようなコードができあがりました。
// スプレッドシートから最新のフォームの回答を取得してメールを送信する関数
function sendEmailsBasedOnResponses() {
// 現在のスプレッドシートを取得
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
// 最後の行番号を取得
const lastRow = sheet.getLastRow();
// 最後の行のデータを取得
const lastRowData = sheet.getRange(lastRow, 1, 1, sheet.getLastColumn()).getValues()[0];
// 各列からデータを抽出
const emailAddress = lastRowData[1]; // ここでは2列目にメールアドレスがあると仮定
const position = lastRowData[2]; // 3列目に役職・立場があると仮定
const issue = lastRowData[3]; // 4列目に相談内容があると仮定
// ChatGPTに送るプロンプトを生成
const prompt = `日本の障害福祉施設で${position}の役職・立場で働いている人から "${issue}" という相談がきています。気づきを促し、推奨アクションを提案してください。文の途中で改行はしないでください。`;
// ChatGPTにプロンプトを送信して回答を取得
const gptResponse = fetchChatGPTResponse(prompt);
// 取得した回答をメールで送信
MailApp.sendEmail(emailAddress, "モヤモヤの投稿ありがとう【福祉のモヤモヤ回収箱】", gptResponse);
}
}
// ChatGPTから回答を取得する関数
function fetchChatGPTResponse(prompt) {
const openaiUrl = 'https://api.openai.com/v1/chat/completions';
const apiKey = 'ここにはご自身のOpenAI APIキーを入力してください';
const headers = {
"Content-Type": "application/json",
"Authorization": "Bearer " + apiKey
};
const payload = {
model: "gpt-3.5-turbo", // 'model'パラメータのみ使用
messages: [{role: "user", content: prompt}], // プロンプトをメッセージリストの形式に変更
max_tokens: 1000
};
const options = {
method: 'POST',
headers: headers,
payload: JSON.stringify(payload),
muteHttpExceptions: true
};
const response = UrlFetchApp.fetch(openaiUrl, options);
const responseJson = JSON.parse(response.getContentText());
if (response.getResponseCode() === 200) {
return responseJson.choices[0].message.content.trim(); // メッセージのコンテンツを取得
} else {
console.error('Failed to fetch response from OpenAI:', responseJson);
return "エラーが発生しました。後ほど再試行してください。";
}
}
こちらをGoogle Apps Scriptのエディタにコピペして使っていただければ同じものを作れます。
トリガーを設定する
Googleフォームに回答があった時に、自動的にGoogle Apps Scriptが実行されるようにトリガーを設定します。
まずは左のメニューから「トリガー」をクリック。
右下の青い「トリガーを追加」ボタンをクリックするとトリガーを設定できます。
今回の場合は、自動的に実行する関数などの情報は入力されていました。「イベントの種類を選択」のところだけ「フォーム送信時」に変更しました。
これで、Googleフォームの送信時に自動的にGASが動きます。
動作テスト(5分)
これでAIお悩み相談サービスは完成です。最後に問題なく動くかどうかテストをしていきます。
Googleフォームからサンプルの相談内容を送信
「福祉のモヤモヤ回収箱」のGoogleフォームから、お試しで相談内容を作成して送信します。
【役職・立場】
グループホームの世話人
【相談内容】
認知症の方が利用されるグループホームのため、夜中に徘徊の対応をしたり、何度もコールされたり、トイレ介助に入ることが多いです。定期的に暴れだす方もいて仮眠もほとんどできず、身体的に疲れが溜まります。
施設長との人間関係もうまくいかず、このまま仕事を続けるべきか悩んでいます。
回答結果がメールに届く
すると、メールが無事届きました!問題なくプログラムが動いていることが確認できました。
まずは、お疲れ様です。大変な日々を送っているようで、本当にお辛いですね。ご自身の身体的な疲れはもちろん、精神的な負担も相当なものだと感じます。そんな中、施設長との人間関係も上手くいかず、ますます困難さを感じることでしょう。しかし、あなたの存在が認知症の方たちにとってはとても重要なものだと思います。あなたがいることで、少しでも安心して過ごせる時間が増えるかもしれません。
まずは、自分の心と体を大切にすることが大切です。仮眠がほとんど取れない状況は、将来的に健康を損ねる可能性があります。自分を第一に考え、適切な休息をとることも大切です。
そして、施設長との関係がうまくいかないと感じるなら、まずは素直に話をしてみることも一つの方法かもしれません。お互いが理解し合うことで、解決策が見つかるかもしれません。
最終的には、あなたがその職場で続けるべきかどうかはあなた自身が一番よく分かっていることです。ですが、認知症の方たちから必要とされていることを考えると、その場所での活動がとても意義のあるものであることも確かでしょう。
どんな決定を下しても、あなたの選択が最善であることを祈っています。お身体、そして心を大切にしてください。
何度かテストして、プロンプトを調整するとより求める回答に近づけることができます。
不具合の修正
今回は以下の不具合が起こりました。
- OpenAIのモデルの指定がうまくいかずエラーが起こる。
- Googleフォームの回答を送信したら、これまでの回答全てに対してGASの処理が実行されてしまう。
- 送付されるメールの変なところに改行入っていて、スマホで見ると読みにくい。
それぞれ、ChatGPTに相談しながらコードを修正していきました。
3つ目のChatGPTの回答に変な改行が入ることはよく起こることのようで、調べたら色々対処法が出てきました。ただし今回は少し難易度が高そうだったので一旦無視して改行は許容することにしました。笑
まとめ:初学者でもAI相談サービスは30分で開発できる!
以上がAIに相談できるサービスの開発方法です。誰でも簡単に30分ほどで実装できてしまうということに自分自身もやっていて驚きました。すごい時代ですね。
今回開発したAI相談サービス「福祉のモヤモヤ回収箱」を使ってみたい方は上記のボタンからぜひ相談を送信してみてください!一旦無料で使えるようにしていますが、OpenAIのAPIの利用料がかかるのでユーザーがポケットマネーでやるのが辛くなってきたら継続するかどうか考えようと思います。
また、今回のAI相談窓口の仕組みは、社内の業務効率化や似たようなWEBサービスの開発にも色々と応用できると思います。ご自身が作ってみたいWEBサービスを考えるヒントになれば幸いです。