今回はアドベントカレンダー・・・・ということで、
ご意見円満解決アプリを作ってみました。
プロンプトによるんだから何アプリでもいいでしょ!とか言わないでください👀
事前準備
OpenAIのAPIキーを取ってきてね。
※調べてみてね!
アプリをつくる
フィールド | フィールドタイプ | フィールドコード | 備考 |
---|---|---|---|
ご意見 | 文字列(複数行) | ご意見 | 来たご意見を書くところ |
--- | スペース | btn | ボタンを置くところ |
ご意見の要点と回答例 | 文字列(複数行) | ご意見の要点と回答例 | ボタン押したら回答例書いてくれるところ |
サンプルコード
(() => {
'use strict';
kintone.events.on(['app.record.create.show','app.record.edit.show'], (event) => {
// 新規作成画面、編集画面開いたときにスペースフィールドにボタンを設置する。
const spbtn = kintone.app.record.getSpaceElement('btn');
const btn = document.createElement('button');
btn.textContent = '日本語でokボタン';
spbtn.appendChild(btn);
btn.addEventListener('click', async ()=>{
const apiKey = 'OpenAI API の APIキー'; // APIキーを入力
const apiUrl = 'https://api.openai.com/v1/chat/completions';
const headers = {
'Content-Type': 'application/json',
'Authorization': `Bearer ${apiKey}`
};
const record = kintone.app.record.get();
const data = {
model: 'gpt-4o-mini',
messages: [
{ role: 'system', content :`あなたはクレーム処理のプロの、スーパーの店長です。`},
{ role: 'user', content: `次の文章はスーパーにきたクレームです。何に答えたらいいのか分かりやすいよう、要点をまとめて、何に答えたらいいのか明らかにしてください。また、回答例も記述してください。文章:${record.record['ご意見'].value}` }
]
};
const response = await fetch(apiUrl, {
method: 'POST',
headers: headers,
body: JSON.stringify(data)
});
const responseData = await response.json();
record.record['ご意見の要点と回答例'].value = responseData.choices[0].message.content;
kintone.app.record.set(record);
});
return event;
});
})();
どんなかんじになるのか?
例えばこんなクレームが来たとする。
「レジの店員、感じが悪すぎる!無愛想で、こちらが質問してもぶっきらぼうに答える。お客は金を払って商品を買ってるんだぞ!もっと丁寧な対応をしてほしい。それに、いつもレジが混んでるのに、新しいレジを開けないのはなぜ?客をバカにしてるのか?」
※Geminiにクレームを考えてもらいました。
しまった、ボタンの名前が非常に良くない。
保存するとこんな感じ。
さすが店長!たよりになるなぁ!
お・し・ま・い!