9
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

あれから2年、kintone × ChatGPT で理想の上司は手に入ったのか?

Last updated at Posted at 2024-12-15

今年は何を書くんだいっ?!

「すごくない」kintone Advent Calendar 2024 の16日目です!

ベストオブすごくない何かを書こう思ってましたが、これにしてみよう!

2022年、chatGPT × kintoneでなにかできるかと思って書いた記事がありました。
2022/12/14 kintone × ChatGPT で理想の上司を手に入れよう!
思えばあれくらいの時期から kintone × 生成AI(chatGPT)の事例も増えましたね。もちろん私としても仕事としてシステムに組み入れたり、仕事の一部を任せたりしています。そして来年は・・・もっと飛躍していくでしょうね?

、というわけですごくない振り返りでback to the 2022!

試したアプリやソースもそのまま残っているので今どんな感じなのかなーと触ってみました。
以前のソースはこちら。

//ChatGPTの返信を取得する
async function getReponseData(phrase) {
    let headers = {
        "Content-Type":"application/json; charset=UTF-8",
        "Authorization": "Bearer {secret keyをここに}",
    };
    let body={
        "model": "text-davinci-003",
        "prompt":  phrase,
        "max_tokens": 4000,
        "temperature": 0      
    };

    return kintone.proxy('https://api.openai.com/v1/completions', 'POST', headers, body).then(function(json) {
        let obj =JSON.parse(json[0]);
        const rec = kintone.app.record.get();
        rec.record.answer.value =obj.choices[0].text;
        kintone.app.record.set(rec);
    }, function(error) {
        //error
        console.log(error);  //proxy APIのレスポンスボディ(文字列)を表示
        return {};
    });
}

実食!おっとお、動かない

The model text-davinci-003 has been deprecated

お決まりのkintone.proxyを利用して戻ってきたデータを見ましたが、”text-davinci-003”はもう使えない模様。

https://platform.openai.com/docs/api-reference/chat
APIリファレンスを見てみました。
エンドポイントも変わってないし、modelを「gpt-4」くらいにしたら動きそうです。

数か所書き換えて動作するようになりました。

  
//ChatGPTの返信を取得する
async function getContactData(phrase) {
    let headers = {
        "Content-Type":"application/json; charset=UTF-8",
        "Authorization": "Bearer {secret keyをここに}",
    };
    let body={
        model: "gpt-4",
        messages: [
            {
                "role": "user",
                "content": phrase
            }
        ]
    };

    return kintone.proxy('https://api.openai.com/v1/chat/completions', 'POST', headers, body).then(async function(parsed) {
        // JSONオブジェクトから必要なデータを取得
        const responseString = parsed[0];
        const responseObject = JSON.parse(responseString);
        
        // アシスタントの応答内容を取得
        const assistantMessage = responseObject.choices[0].message.content;
        console.log(assistantMessage);

        const rec = kintone.app.record.get();
        rec.record["answer"].value = assistantMessage;
        kintone.app.record.set(rec);

        return;
    }, function(error) {
        //error
        console.log(error);  //proxy APIのレスポンスボディ(文字列)を表示
        return {};
    });
}

})();

それでは実食!

おっと、さすがgpt-4ですね。精度が上がっています。
2年前はこんな回答でした。

と、なると前回に試作した日報アプリも良い感じで動くのではないだろうか?

あれからchatGPTのAPIにはシステムプロンプトで回答する前提を付加できるようになっているので、以前kintoneの日報アプリで回答していた上司マルコフ君に事前説明をシステムプロンプトで送ってテストしてみましょう。こんな感じに書き換えました。

async function getContactData(phrase) {
    let headers = {
        "Content-Type":"application/json; charset=UTF-8",
        "Authorization": "Bearer  {secret keyをここに}",
    };
    let body={
        model: "gpt-4",
        messages: [
            {
                "role": "system",
                "content": "あなたは、マルコフさんという上司として、質問に回答します。マルコフさんは大阪出身の40代男性、情に厚く部下を励ますのが得意です。ときには厳しく指導する一面も持っています。"
            },
            {
                "role": "user",
                "content": phrase
            }
        ]
    };

と、いうわけで2022年と2024年の実行結果を比較してみました!

<2022年の回答>

<2024年、最新の回答>
スクリーンショット 2024-12-15 174703.png

<2022年の回答>

<2024年、最新の回答>
スクリーンショット 2024-12-15 174751.png

<2022年の回答>

<2024年、最新の回答>
スクリーンショット 2024-12-15 174916.png

2年寝かしたら、良い感じの上司に成長していました!😂
うーん良い感じに進歩している!

それでは皆様、良いお年を!

9
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?