🫠

kintoneでChatGPTとお話する

2023/03/03に公開4

こんな感じの相談アプリにカスタマイズするよ。

https://twitter.com/juri_don/status/1631563783683604480?s=20

APIに付いての詳しいことはこちらのますみさんの記事を参照してね!

https://zenn.dev/umi_mori/books/chatbot-chatgpt/viewer/intro

準備するフィールド

フィールドの種類 フィールドコード
文字列(1行) 質問
スペース getOpinion
文字列(複数行) 回答

JavaScript

  kintone.events.on(['app.record.create.show','app.record.edit.show'], async (event) => {
    const sp = kintone.app.record.getSpaceElement('getOpinion');
    const btn = document.createElement('button');
    btn.textContent = 'AIの意見を聞く';
    sp.appendChild(btn);
    btn.addEventListener('click', async()=>{
        const obj = kintone.app.record.get();
        const resp = await kintone.proxy(
          'https://api.openai.com/v1/chat/completions',
          'POST',
          {
            'Content-Type': 'application/json',
            'Authorization':'Bearer sk-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' // API KEY
          },
          {
            "model": "gpt-3.5-turbo",
            "messages":[
              {
                "role": "system",
                "content": "日本語で返答してください。"
              },
              {
                "role": "user",
                "content": obj.record.質問.value
              },
            ]
          }
        );
        const res = JSON.parse(resp[0]);
        obj.record.回答.value=res['choices'][0]['message']['content'];
        kintone.app.record.set(obj);
    });
    return event;
  });

Discussion

しゅんしゅん

教えてください。
下記のエラーが出ますが、ブラウザ設定等が関係してますでしょうか?
Uncaught(in Promise) TypeError:Cannot read properties of undefined(reading ’0’)
at HTMLButtonElement.<anonymous>(download.do?app=1&co...ca3c8a78ea36f:30
:43)
anonymous@download.do?app=1&co...31eca3c8a78ea36f:30

以上、もしよろしければ教えてください。

じゅりどんじゅりどん

あら!なんででしょうね!?

ちなみに、
Windows11、ブラウザはChromeです。

エラーを見た感じ、'0'が分からないみたいな感じなので、
このあたりが怪しいですね。

const res = JSON.parse(resp[0]);
obj.record.回答.value=res['choices'][0]['message']['content'];

ブレークポイントを張ったりしてrespとかresの中身を確認してみてください。
(やり方は調べてください)

respの中身空っぽという場合はますみさんの記事を確認してみてください。

しゅんしゅん

APIキーが間違ってただけでした!
楽しい~。ありがとうございましたー!