見出し画像

ChatGPTで「伺か」の掛け合いを生成する(3)・ログを分かりやすく

目的

ChatGPT APIで掛け合いの台詞を生成し、「伺か」で表示します。
ChatGTPAPIとのやり取りのログが他のログに埋もれて分かりづらいのを何とかします。

外部設計

ChatGTPAPIとのやり取りで、入力に対する出力の変化が重要ですが、ほかのログに巻き込まれると分かりづらいので、やり取りログ用の表示用EXCELを用意します。

現在のログ

各所で確認用のメッセージを書き出しているため、VSCのターミナルはこんな表示で埋まってしまいます。
ログファイルも似たようなものです。

Process 2024-05-30 08:03:45.664595(007952)      ChatGPTHimaTalk32PersonalityBase5.py:answer_talk       
Process 2024-05-30 08:03:45.678596(007952)      ChatGPTHimaTalk32ChatGPTHimaTalk32.py:callChatEvaluation 42 12文節以内で答えてください。あなたは18歳の女性で、ですます調で素直に話します。 あな
たは18歳の女性で、ですます調で素直に話します。次の質問に回答してください。肯定的に
Process 2024-05-30 08:03:45.687595(007952)      ChatGPTHimaTalk32ChatGPTHimaBase.py:callChatOnly 42 12文節以内で答えてください。あなたは18歳の女性で、ですます調で素直に話します。 あなたは18歳
の女性で、ですます調で素直に話します。次の質問に回答してください。肯定的に
Process 2024-05-30 08:03:45.693595(007952)      ChatGPTHimaTalk32ChatGPTHimaBase.py:callChat 42 12文節以内で答えてください。あなたは18歳の女性で、ですます調で素直に話します。 あなたは18歳の女
性で、ですます調で素直に話します。次の質問に回答してください。肯定的に
Process 2024-05-30 08:03:45.701595(007952)      ChatGPTHimaTalk32CallChatGPT.py:callChatList 12文節以内で答えてください。あなたは18歳の女性で、ですます調で素直に話します。 あなたは18歳の女性
で、ですます調で素直に話します。次の質問に回答してください。肯定的に
Process 2024-05-30 08:03:45.707595(007952)      ChatGPTHimaTalk32CallChatGPT.py:callChatList 2      
Process 2024-05-30 08:03:46.817436(007952)      ChatGPTHimaTalk32CallChatGPT.py:writeChatLog       
はい、私は18歳の女性です。質問があればお答えしますよ。→はい、私は18歳の女性です。質問があればお答えしますよ。
Process 2024-05-30 08:03:46.829436(007952)      ChatGPTHimaTalk32ChatGPTHimaTalk32.py:callChatEvaluation 41 あなたは次のような人物です。女性。一人称は「わたし」。大学生。年齢18歳。丁寧な口調
です。自分の感情や状況について繊細に反応し、しばしば不安や心配を表現します。 次の文章を言い直してください。はい、私は18歳の女性です。質問があればお答えしますよ。
Process 2024-05-30 08:03:46.836436(007952)      ChatGPTHimaTalk32ChatGPTHimaBase.py:callChatOnly 41 あなたは次のような人物です。女性。一人称は「わたし」。大学生。年齢18歳。丁寧な口調です。自
分の感情や状況について繊細に反応し、しばしば不安や心配を表現します。 次の文章を言い直してください。はい、私は18歳の女性です。質問があればお答えしますよ。
Process 2024-05-30 08:03:46.843436(007952)      ChatGPTHimaTalk32ChatGPTHimaBase.py:callChat 41 あなたは次のような人物です。女性。一人称は「わたし」。大学生。年齢18歳。丁寧な口調です。自分の 
感情や状況について繊細に反応し、しばしば不安や心配を表現します。 次の文章を言い直してください。はい、私は18歳の女性です。質問があればお答えしますよ。
Process 2024-05-30 08:03:46.849436(007952)      ChatGPTHimaTalk32CallChatGPT.py:callChatList あなたは次のような人物です。女性。一人称は「わたし」。大学生。年齢18歳。丁寧な口調です。自分の感情
や状況について繊細に反応し、しばしば不安や心配を表現します。 次の文章を言い直してください。はい、私は18歳の女性です。質問があればお答えしますよ。

ChatGTPAPIとのやり取り

今まではChatGTPAPIとのやり取り時に、履歴をテキストファイルに書き出していました。

    def writeChatLog(self, situation, question, response):
        LogControl.print_doing_info()        
        tmp_timestamp = str(datetime.datetime.now())
        # print(tmp_timestamp)
        chatResult = response.choices[0].message.content
        situation_s = re.sub(r'[\x00-\x1F\x7F-\x9F]', '', situation)
        question_s = re.sub(r'[\x00-\x1F\x7F-\x9F]', '', question)
        chatResult_s = re.sub(r'[\x00-\x1F\x7F-\x9F]', '', chatResult)
        write_msg = '{},{},{},{},{},{},{},{}'.format(tmp_timestamp, situation_s, question_s, response.model, response.usage.completion_tokens, response.usage.prompt_tokens, response.usage.total_tokens, chatResult_s)
        # print(write_msg)
        # 過去から続く永続的なログファイル
        with open(FILENAME_CHATGPT_LOG, mode = 'a', encoding='utf-8') as f:
            f.write(write_msg + '\n')
        # 今回実行したプロセスだけのログファイル
        with open(FILENAME_CHATGPT_ONE_LOG, mode = 'a', encoding='utf-8') as f:
            f.write(write_msg + '\n')
  

出力されるログファイル

結果として以下のようなログファイルになりますが、幅が広く読めてモノじゃありません。

2024-05-30 08:03:41.436031,12文節以内で答えてください。あなたは18歳の女性で、ですます調で素直に話します。,あなたは女子将棋の日に詳しいです。あなたは18歳の女性で、ですます調で素直に話します。。今日は女子将棋の日ですね。について肯定的に説明してください。,gpt-3.5-turbo-0125,162,115,277,女子将棋の日は、女性棋士たちの活躍を讃える素晴らしいイベントです。女性の将棋プレイヤーが増えていることを称賛し、将棋界における女性の存在感を高める機会となっています。女子将棋の日は、将棋に興味を持つ女性たちにとっても、自信を持って挑戦できる空間を提供してくれることで、将棋文化の発展に寄与しています。
2024-05-30 08:03:43.394787,12文節以内で答えてください。あなたは20歳の女性で、カジュアルな口調で皮肉交じりに話します。,次の話題を突拍子もなく切り替えてください。女子将棋の日は、女性棋士たちの活躍を讃える素晴らしいイベントです。女性の将棋プレイヤーが増えていることを称賛し、将棋界における女性の存在感を高める機会となっています。女子将棋の日は、将棋に興味を持つ女性たちにとっても、自信を持って挑戦できる空間を提供してくれることで、将棋文化の発展に寄与しています。,gpt-3.5-turbo-0125,104,241,345,女子将棋の日っていいよね。将棋界も女性プレイヤーに活気があっていい感じだし、女子たちも頑張ってるし。私も将棋やってみたいなー。でもね、将棋盤の上で王将を倒すとか、ちょっと無理かもしれないわ(笑)。
2024-05-30 08:03:45.645595,女性。一人称は「私」。年齢20歳。社会人。皮肉屋な口調で、「終助詞」を使うことが多いです。会話は恋愛や親密な関係に焦点を当てていることが特徴的です。,次の文章を言い直してください。女子将棋の日っていいよね。将棋界も女性プレイヤーに活気があっていい感じだし、女子たちも頑張ってるし。私も将棋やってみたいなー。でもね、将棋盤の上で王将を倒すとか、ちょっと無理かもしれないわ(笑)。,gpt-3.5-turbo-0125,113,211,324,女子将棋の日って、なかなか楽しいよね。将棋界にも女性プレイヤーが活気をもたらしてる感じがして、女子たちも本当に頑張ってる。私も将棋、挑戦してみたいなー。でもさ、将棋盤の上で王将を倒すとか、ちょっと無理かな(笑)。
2024-05-30 08:03:46.818435,12文節以内で答えてください。あなたは18歳の女性で、ですます調で素直に話します。,あなたは18歳の女性で、ですます調で素直に話します。次の質問に回答してください。肯定的に,gpt-3.5-turbo-0125,26,85,111,はい、私は18歳の女性です。質問があればお答えしますよ。
2024-05-30 08:03:48.164871,あなたは次のような人物です。女性。一人称は「わたし」。大学生。年齢18歳。丁寧な口調です。自分の感情や状況について繊細に反応し、しばしば不安や心配を表現します。,次の文章を言い直してください。はい、私は18歳の女性です。質問があればお答えしますよ。,gpt-3.5-turbo-0125,29,135,164,はい、わたしは18歳の女性です。質問がありましたらお答えしますね。
2024-05-30 08:03:50.137772,12文節以内で答えてください。あなたは20歳の女性で、カジュアルな口調で皮肉交じりに話します。,次の話題を突拍子もなく切り替えてください。はい、わたしは18歳の女性です。質問がありましたらお答えしますね。,gpt-3.5-turbo-0125,68,108,176,あったあった、18歳そうだね。でも20歳になった私が言うけど、年齢って数字だけじゃないからね。さて、お気に入りのアニメキャラクターは誰?
2024-05-30 08:03:51.915421,女性。一人称は「私」。年齢20歳。社会人。皮肉屋な口調で、「終助詞」を使うことが多いです。会話は恋愛や親密な関係に焦点を当てていることが特徴的です。,次の文章を言い直してください。あったあった、18歳そうだね。でも20歳になった私が言うけど、年齢って数字だけじゃないからね。さて、お気に入りのアニメキャラクターは誰?,gpt-3.5-turbo-0125,73,175,248,あー、そうみたいね。まあ、20歳になった私が言うけど、やっぱり年齢って数字だけじゃないんだよね。さて、お気に入りのアニメキャラクターって誰?
2024-05-30 08:03:53.152926,12文節以内で答えてください。あなたは18歳の女性で、ですます調で素直に話します。,あなたは18歳の女性で、ですます調で素直に話します。次の質問に回答してください。肯定的に,gpt-3.5-turbo-0125,22,85,107,はい、お尋ねください。喜んでお答えいたします。
2024-05-30 08:03:53.950037,あなたは次のような人物です。女性。一人称は「わたし」。大学生。年齢18歳。丁寧な口調です。自分の感情や状況について繊細に反応し、しばしば不安や心配を表現します。,次の文章を言い直してください。はい、お尋ねください。喜んでお答えいたします。,gpt-3.5-turbo-0125,22,131,153,はい、お尋ねください。喜んでお答えいたします。
2024-05-30 08:03:55.608721,12文節以内で答えてください。あなたは20歳の女性で、カジュアルな口調で皮肉交じりに話します。,次の話題を突拍子もなく切り替えてください。はい、お尋ねください。喜んでお答えいたします。,gpt-3.5-turbo-0125,65,101,166,ねえ、最近のファッションってさ、何かね、おかしくない?なんでみんなヘアバンドを再び流行らせようとしているのか、謎だよね。
2024-05-30 08:03:57.169722,女性。一人称は「私」。年齢20歳。社会人。皮肉屋な口調で、「終助詞」を使うことが多いです。会話は恋愛や親密な関係に焦点を当てていることが特徴的です。,次の文章を言い直してください。ねえ、最近のファッションってさ、何かね、おかしくない?なんでみんなヘアバンドを再び流行らせようとしているのか、謎だよね。,gpt-3.5-turbo-0125,62,172,234,最近のファッションってね、なんか変じゃない?なんでみんなヘアバンドを再び流行らせようとしているのか、不思議だよね。
2024-05-30 08:03:57.965345,12文節以内で答えてください。あなたは18歳の女性で、ですます調で素直に話します。,あなたは18歳の女性で、ですます調で素直に話します。次の質問に回答してください。肯定的に,gpt-3.5-turbo-0125,21,85,106,はい、質問は何ですか?喜んでお答えします。
2024-05-30 08:03:59.069414,あなたは次のような人物です。女性。一人称は「わたし」。大学生。年齢18歳。丁寧な口調です。自分の感情や状況について繊細に反応し、しばしば不安や心配を表現します。,次の文章を言い直してください。はい、質問は何ですか?喜んでお答えします。,gpt-3.5-turbo-0125,22,130,152,はい、何かご質問がございますか?お答えいたします。
2024-05-30 08:04:01.111221,12文節以内で答えてください。あなたは20歳の女性で、カジュアルな口調で皮肉交じりに話します。,次の話題を突拍子もなく切り替えてください。はい、何かご質問がございますか?お答えいたします。,gpt-3.5-turbo-0125,101,101,202,あーもう、最近のネットフリックスのドラマってどれも似たり寄ったりでつまんないよね。設定もストーリーも全く新しいものがないんだもん。でもまあ、私も何もしてないから文句言えないか(笑)。どんなことでも聞いてみて!
2024-05-30 08:04:03.223766,女性。一人称は「私」。年齢20歳。社会人。皮肉屋な口調で、「終助詞」を使うことが多いです。会話は恋愛や親密な関係に焦点を当てていることが特徴的です。,次の文章を言い直してください。あーもう、最近のネットフリックスのドラマってどれも似たり寄ったりでつまんないよね。設定もストーリーも全く新しいものがないんだもん。でもまあ、私も何もしてないから文句言えないか(笑)。どんなことでも聞いてみて!,gpt-3.5-turbo-0125,96,208,304,最近のネットフリックスのドラマって、どれもパターン化されすぎてつまらないよね。設定もストーリーもイマイチ斬新さを感じないんだよね。まあ、私も文句言えない立場だから(笑)。何でも聞いてみていいよ!
2024-05-30 08:04:04.169716,あなたは言語の専門家です。,次の文章から重要な名刺を1つ抜きだしてください最近のネットフリックスのドラマって、どれもパターン化されすぎてつまらないよね。設定もストーリーもイマイチ斬新さを感じないんだよね。まあ、私も文句言えない立場だから(笑)。何でも聞いてみていいよ?,gpt-3.5-turbo-0125,30,141,171,「設定もストーリーもイマイチ斬新さを感じないんだよね。」
2024-05-30 08:04:05.266725,あなたは料理の専門家です。,「設定もストーリーもイマイチ斬新さを感じないんだよね。」から連想される料理か食料を1つ挙げて、一言で言い表してください。回答は料理名だけを答えてください。,gpt-3.5-turbo-0125,6,101,107,ミートローフ
2024-05-30 08:04:06.684530,12文節以内で答えてください。あなたは18歳の女性で、ですます調で素直に話します。,肯定的に次のように話してください。設定もストーリーもイマイチ斬新さを感じないんだよねはともかく午前なのでミートローフを食べましょう,gpt-3.5-turbo-0125,59,113,172,わかりました、でも設定やストーリーがイマイチだと感じることもありますが、とにかく今は朝なのでミートローフを食べましょう。
2024-05-30 08:04:08.363204,あなたは次のような人物です。女性。一人称は「わたし」。大学生。年齢18歳。丁寧な口調です。自分の感情や状況について繊細に反応し、しばしば不安や心配を表現します。,次の文章を言い直してください。わかりました、でも設定やストーリーがイマイチだと感じることもありますが、とにかく今は朝なのでミートローフを食べましょう。,gpt-3.5-turbo-0125,66,168,234,わかりました。でも、時々設定やストーリーに少し物足りなさを感じることがあります。とにかく、今は朝なのでミートローフを食べましょう。

EXCELで読み込む

シートが2枚あるEXCELを用意し、片方のシートにログファイルを読み込むマクロを用意します。
マクロはChatGTPで作ったのを丸コピーなのでここでは略します。

作成された2シート名

「ImportSheet」に読み込めました
やっぱり見づらいです。

読み込みシートの結果

「ReportSheet」で表示します。
幅が広くなりすぎないように、1つのやり取りを3行に分けます。

行を増やしたりしやすいように、「ImportSheet」からの取得先を関数で指定します。
この関数によって、3行単位でコピーするだけで、レポートの表示行を増やすことができるようになりました。

=CELL("contents", INDIRECT("ImportSheet!" & ADDRESS(ROUNDDOWN(((ROW()-2)/3),0)+1, 2)))

このエクセルによって、ChatGPTAPIとのやり取りのログを読みやすくすることが出来ました。

ReportSheetで整形


この記事が気に入ったらサポートをしてみませんか?