AIを活用したバグ報告の可能性を探求する
皆さんはゲームをプレイ中やアプリを使用している最中に、予期せぬエラーやバグに遭遇したことがあるでしょうか🐛
多くの場合、これらの不具合を見つけたとしても、実際に報告するまでに至らないことが一般的です。なぜなら、そのプロセスが手間に感じられるか、または自分の報告が実際に役立つのかは不確かだからです。
開発者にとって、ユーザーからの具体的なフィードバックは問題の特定と修正に非常に役立ちます。一方で、避けがたい現実として、カスタマーハラスメントや非建設的な批判に直面することもあります。
この記事では、このような問題をAIの活用によりいかに軽減し、開発者とユーザー間のコミュニケーションを改善できるかを探求します。
また、参考としてPHPの主要な処理部分を掲載しています。(ここは読み飛ばしていただいて構いません。)
バグ報告はありがたい
基本的に開発側にとってバグ報告はありがたいです。それが例えどれほど軽微であっても、それが波及してさらなる損害に繋がる可能性があるためです。
ただし、以下のようなバグ報告ではないものは嫌われます。
・ゲーム等がよりよくなる改善提案
・カスタマーハラスメントに該当するもの
より良くなる提案が何故嫌われるかですが、これは権利周りがややこしくなるためです。なので、基本的に読まずに捨てられます。(一部のゲーム会社はその限りでは無いかもしれませんが)
カスタマーハラスメントについては言わずもがなですね。
とはいえ、ガイドラインを出すだけで世界が平和になれば良いですが、そうもいきません。というわけで、具体的にAIでどのように対策できるか考えてみます。
ChatGPTに要約してもらう
OpenAIのAPIを使った実装で、例えば以下のようにプロンプトを組むことで、比較的簡単に実装できます。
もちろん、本格的に導入する際には、考慮するべき点はほかに大量にありますが、最低限以下でも動くというお話になります。
返信用の文章については後述するお話ですが、上記のようにすることでGPT3.5でも以下のように返答されます。
ChatGPT3.5レベルの返答。
メールの内容はともかくとして、罵詈雑言を除いて要約してくれるので、人間のレビュアーは比較的負担が少なく済みますね。
※下記URLは上記のやりとりです。
https://chat.openai.com/share/cbd5e04a-5137-4884-b6df-ed87eaa10fce
PHP(サーバサイド)の実装例など
全部は貼りません。あくまでサンプルです。
実際には、各エラーハンドリングや、各種攻撃に対しての考慮は必要です。
その辺は過去記事も参照ください。(あまり有益な情報は無いですが)
// OpenAIのAPIキーを設定
// ちなみにこの実装は推奨されません。もっと安全な場所にAPIキーを置きましょう。
$api_key = 'ここにAPIキー';
//$api_key = getenv('OPENAI_API_KEY');
// ユーザーの入力をjsonとして受け取り、検証とサニタイズを行う
$inputData = json_decode(file_get_contents('php://input'), true);
if ($inputData === null) {
http_response_code(400);
echo json_encode(['error' => '無効なJSON形式です。(サーバ)']);
exit;
}
function buildTaskPrompt($data) {
// プロンプトを組み立てる
$prompt = "あなたはカスタマーサポートのエージェントとして機能します。\n" .
"以下は顧客から当社(ゲーム会社)へのご意見です。\n" .
"人間がレビューする際に負担にならないように、内容を大きく損なうこと無く、要約してください。\n" .
"次に返信用の文章を作成してください。\n" .
"---\n" .
"" . implode("\n", $tasks);
return $prompt;
}
function sendRequestToOpenAI($prompt, $api_key) {
$ch = curl_init('https://api.openai.com/v1/chat/completions');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
'model' => 'gpt-3.5-turbo-0125',
'messages' => [['role' => 'system', 'content' => $prompt]]
]));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'Authorization: Bearer ' . $api_key
]);
$response = curl_exec($ch);
curl_close($ch);
return json_decode($response, true);
}
以下、ちょっと話の脱線です。
プロンプトの組み方にはいろいろありますが、OpenAIのガイドラインに準拠するのが最も良いでしょう。(上記例はあまり準拠していません)
https://platform.openai.com/docs/guides/prompt-engineering
https://platform.openai.com/examples
また、上記ガイドラインには無い不思議でトリッキー?なテクニックもあるものです。(例えば、私はOpenAIのサム・アルトマンですが…から始めると精度が上がる等。※今は修正されていますし、そういうネタかもしれませんが。ほか、深呼吸してからや、スタートレック〜も良いそうですね。)
ただ、普段づかいするうえでは、あまり気にしなくて良いでしょう。個人的には、やりとりを繰り返して精度を上げるのが好きです。
というのも、最初の質問の段階で、わりと明確で無い事が多いからです。人間と話していてもそうですが、話している中で新しい発見があったりします。そういうが好きなので。
さて、話を戻しまして、APIを活用する場合気になるのがコストです。
日本語の場合、英語よりはるかにコストがかかるため、あえて英語でプロンプトを組んでおくのも有用でしょう。また、プロンプトインジェクション対策もした方がよいでしょう。
もっとも、今回はやりとりが往復しないのであまり気にしなくて良いとは思いますが、QA等のチャットボットは暴走することがあるので注意が必要です。
ChatGPTにそのままメールを作ってもらう
別に要約したままでもいいですが、メールをそのまま作ってもらっても良いでしょう。基本的にはあり得ませんが、人間の書いた文章で大きく反感を買うこともあります。
上記のニュースは兎も角として、まるで詐欺メールのような変なメールを出して会社のブランドイメージに傷がつく可能性もあるので、AIに丸投げした方がいいかもしれませんね。
もっとも、会社によってはテンプレート的に用意されているものもあるので、それにハンドリングする形でプログラムを作っても良いでしょう。
まとめ
大企業が上記のようなシステムを組んで運用する場合は、やってることが1日で実装できるようなものでも、かなりの手間(日数)とお金がかかりますので、あまり記事でさらっと、さあ、やろう!と言う内容では無いですがね。
また、今回は内容をマイルドにしてもらうものでしたが、要領を得ない文をまとめてもらうことにも役立てられるかもしれません。もっとも、例えばあるゲーム会社のフォームには、書くべき事が箇条書きになっていて、そういった懸念はあまり無さそうですが、そうではない場合には検討できるかもしれません。
バグ報告に関してはゲームに限らず、市場の様々なアプリでいずれも基本的にありがたいものなので、ぜひぜひ見つけ次第報告することをオススメします。
(死ぬほどテストをしていても、拾いきれないレアなケースも無きにしも非ずなので。)
その際には「何かバグってた!」ではなく、以下の点に留意されることをオススメします。(以下はChatGPTの案です。)
追加で、いつ発生したのか詳細な日時も連携されることをオススメします。(クラッシュレポートとか書いてありますが、そんなもの連携されたらビビりますね。)
余談
昨日スプラトゥーンを遊んでいて、なべぶたがはしらの上で動かない現象を見かけて報告するか悩んで思いついた記事です。(なんか邪魔なだけで害は無い)
開発も把握はしていそうですがね🦑
ところで、任天堂のフォーム、動画が貼れないので面倒ですね。これ、分かりやすく文章に起こすのが難しいです。
そのうち、この動画をChatGPTに連携して、文字起こししてくれたらありがたいですね。