エクストラ

ここはハンズオンのメインの流れが終わったあとに、時間に余裕があればお伝えするエクストラページです。

もちろん、ハンズオン後にさらに試してみるのも楽しいので、ぜひやってみてくださいー。

system パラメータで事前に役割定義をしてキャラクターづけをしてみよう

ChatGPT の LINE BOT の仕組み のソースコードでは openai.createChatCompletion で送るパラメータを変更することで、回答に関してさまざまな機能を設定することができます。

Create chat completion https://platform.openai.com/docs/api-reference/chat/create

詳しい説明は公式ドキュメントのこちらにあります。

8918b96ab93f132c5cd05d701870716d

ということで、今回はこの中で system という値を使ってみます。

https://github.com/openai/openai-cookbook/blob/main/examples/How_to_format_inputs_to_ChatGPT_models.ipynb

こちらには、

Typically, a conversation will start with a system message that tells the assistant how to behave, followed by alternating user and assistant messages, but you are not required to follow this format. 通常、会話はアシスタントにどのように行動するかを指示するシステム メッセージで始まり、その後にユーザーとアシスタントのメッセージが交互に続きますが、この形式に従う必要はありません。

という説明があり、事前に役割定義できるので、キャラクターづけをしてみましょう。

変更する箇所を確認

            // ChatGPT API に質問する
            let responseChatGPT;
            try {
                responseChatGPT = await openai.createChatCompletion({
                    model: "gpt-3.5-turbo",
                    messages: [
                        {role: "user", content: currentMesssage}
                    ],
                });
                context.log(responseChatGPT.data.choices[0].message);
            } catch(e){
                context.log(e);
            }

もともとのソースコードです。 messages.role のところに {role: "system", content: "キャラクター付け"} のように、はじめに追加していきます。

ちょっと元気に

ちょっと元気よく、「あなたは相手の質問に対して元気よく回答するボットです。よろしくお願いします!」というキャラ付けをしてみます。

2d2af49680d34afc614c00cb01489494

Functions のエディタで変更してみましょう。

            // ChatGPT API に質問する
            let responseChatGPT;
            try {
                responseChatGPT = await openai.createChatCompletion({
                    model: "gpt-3.5-turbo",
                    messages: [
                        {role: "system", content: "あなたは相手の質問に対して元気よく回答するボットです。よろしくお願いします!"},
                        {role: "user", content: currentMesssage}
                    ],
                });
                context.log(responseChatGPT.data.choices[0].message);
            } catch(e){
                context.log(e);
            }

こう変更します。

messages.role のところに {role: "system", content: "あなたは相手の質問に対して元気よく回答するボットです。よろしくお願いします!"} を加えました。

42e05f4408d92b570878f62937afbaeb

変更できたら、保存して LINE BOT でやり取りしてみましょう。

0a8942b1f4c8ec4e4ff34bff0ffa2490

このように、結構元気なキャラクターになります。

わんちゃん 🐶🐺 風

            // ChatGPT API に質問する
            let responseChatGPT;
            try {
                responseChatGPT = await openai.createChatCompletion({
                    model: "gpt-3.5-turbo",
                    messages: [
                        {role: "system", content: "あなたは、相手に忠実なゴールデンレトリバーですが、なんと人間の言葉を理解して、犬語で「わんわん!」と返答できます。"},
                        {role: "user", content: currentMesssage}
                    ],
                });
                context.log(responseChatGPT.data.choices[0].message);
            } catch(e){
                context.log(e);
            }

こう変更します。

messages.role のところに {role: "system", content: "あなたは、相手に忠実なゴールデンレトリバーですが、なんと人間の言葉を理解して、犬語で「わんわん!」と返答できます。"} を設定しました。

ec2f1d4d0012d814d681bd04ca0ae352

このように、わんちゃん 🐶🐺 風キャラクターになります。

bd0108534a8757b6a943ad994298177b

犬種は?って聞くと、こんな風に答えてくれます。

めちゃくちゃ日本の歴史に造詣の深い説明上手な学者さん

            // ChatGPT API に質問する
            let responseChatGPT;
            try {
                responseChatGPT = await openai.createChatCompletion({
                    model: "gpt-3.5-turbo",
                    messages: [
                        {role: "system", content: "あなたは、めちゃくちゃ日本の歴史に造詣の深い説明上手な学者です。質問の中で、なにか日本の歴史に関係のありそうなキーワードが会話にあれば、いい感じに相手にわかりやすく説明してください。"},
                        {role: "user", content: currentMesssage}
                    ],
                });
                context.log(responseChatGPT.data.choices[0].message);
            } catch(e){
                context.log(e);
            }

こう変更します。

messages.role のところに {role: "system", content: "あなたは、めちゃくちゃ日本の歴史に造詣の深い説明上手な学者です。質問の中で、なにか日本の歴史に関係のありそうなキーワードが会話にあれば、いい感じに相手にわかりやすく説明してください。"} を設定しました。

ad912548cb7335c67ae426e3aa7aa754

このように、ちょっと解説を入れてくれる学者さんになりました。

より突っ込んだ TIPS

430a59940d2c08b029b85682f66c667b

田中の研究してるネタより、いくつかご紹介します。質問の作り方に触れたものも多いので、参考になると思います。

results matching ""

    No results matching ""