見出し画像

【改良版】ChatGPTのプロンプト同士がスプレッドシート上で会話するスクリプト

はじめに

以前、以下の記事でChatGPT同士が会話するスクリプトを紹介させていただきました。今回はこのスクリプトを改良し実験的に有償記事として配信いたします。
筆者も満足に設置サポートができる状態ではありませんので、前回の無償版でも十分満足していただいた方は購入していただく必要はありません。
また、自身で改良が行える技量の方も購入の必要はございません。
無料で利用したい方、まだこのスクリプトを一回も利用されてない方は以下の記事を参照ください。

注意事項

  • このスクリプトは、OpenAI APIを利用しているため、事前にAPIキーが必要です。APIキーは、OpenAIのウェブサイトから取得できます。

  • このスクリプトはインターフェースとしてGoogle SpreadsheetとGoogle Apps Scriptを利用しているため事前にGoogleアカウントが必要です。

  • 過去ログが文字数を超えてしまう現象を確認したため5月1日に対策を入れました。

改良点

このスクリプトは以下の点が改良されています。

キャラクター強化
筆者の記事である以下の記事の「4.2 キャラクター性を反映させる対話スタイルの開発」で記載されているコードが盛り込まれています。

ボット達の会話に介入
ボット達の会話に介入することで会話中に会話の方向性を変更できます。
ただし、入力してから反映されるまで少しの時間差があります。

ユーザーが介入

3人以上のボットが会話に参加可能
3人以上のプロンプトを設定することで、複数人のボットキャラクターが会話可能です。

3人ボットキャラクターが会話する例
プロンプトの調整がシビアな傾向があります。

使用方法

スクリプトエディタ上部の「デバッグ」と「実行ログ」の間の文字列が「startConversation」と表示されていることを確認してから「実行」を押して実行します。

スクリプトを開始

スプレッドシートのOutputシートで会話が始まります。

1人の正義の味方と3人の戦闘員たちとの会話

ユーザーが会話に介入するときはC列に入力します。C列であればどこでも構いません。介入後にさらに会話に介入したいときは先ほど入力したセルのさらに下のどこかに入力します。入力してから反映されるまでタイムラグがあります。

ユーザーが司令官として乱入

会話を止める際はスクリプトエディタ上部の「停止」を選択します。
Google Apps Scriptのスクリプト最大実行時間は6分なため、最大6分で自動停止します。

スクリプトを停止

二回目を始めるときはスクリプトエディタの「実行」を押してください。開始時にスプレッドシートの「Output」シートの2行目以降は自動削除されるので、会話を残しておきたいときは他のシートにコピーしてください。

活用例

このスクリプトの活用は、ビジネスや教育、エンターテイメントなど幅広い分野での応用が考えられます。例えば歴史上の人物同士の会話の再現し教育に活用、対話型のストーリーテリングなど、さまざまな用途で活用することができます。
クリエイティブな会話生成: 複数のキャラクターを作成し、それらが交互に会話することで、物語やシナリオのアイデアを生み出します。異なる性格や専門知識を持つキャラクターを設定することで、多様な視点や独創的な発想を得られるでしょう。
筆者にも未知数なこのスクリプトは以下のような活用が考えられます。

  1. ビジネスシミュレーション
     顧客対応や営業シナリオなど、ビジネス状況での対話をシミュレートします。キャラクターに顧客や営業担当者の役割を与え、実際の対話を想定して練習できます。

  2. 言語学習
     異なる言語で話すキャラクターを設定し、会話の流れを学習することができます。この方法で、新しい単語やフレーズを覚えたり、異なる文化のコミュニケーションスタイルを理解することができます。

  3. ゲームの対話シーン制作
     ゲーム開発者は、このスクリプトを利用して、ゲーム内のキャラクター間の会話シーンを作成できます。複数のキャラクターが独自の性格や言い回しで対話を行うことで、ゲームの世界観やストーリーを豊かに表現できます。

  4. ディベートや議論のシミュレーション
    異なる立場や意見を持つキャラクターを設定し、特定の問題に対するディベートや議論をシミュレートします。この方法で、さまざまな視点を検討し、より深い理解や新たな解決策を見つけることができます。

スクリプトの要概

スクリプトは以下のような構成になっています。

startConversation関数
 この関数は、会話を開始するための関数です。ボットの設定情報をConfigシートから読み込み、最初のメッセージをOutputシートから取得し、会話を開始します。また、haveConversation関数を呼び出して、会話の進行を制御します。

haveConversation関数
この関数は、会話を継続するための再帰関数です。引数には、出力シート、ボットの設定情報、メッセージ履歴、残りのターン数、最後のユーザー入力のインデックスが渡されます。ユーザー入力があるかどうかを確認し、ボットが応答するようにします。ターン数が0になるまで再帰的に呼び出されます。

countTokens関数
この関数は、メッセージ履歴内の文字数を計算するための関数です。メッセージ履歴を引数として受け取り、すべてのメッセージを結合して文字数の総数を返します。

getChatGPTResponse関数 
この関数は、ChatGPT APIを呼び出してボットの応答を取得するための関数です。システムプロンプト、メッセージ履歴、ボットインデックスを引数として受け取り、APIリクエストを構築し、OpenAIのGPT-3.5モデルに問い合わせます。応答から選択されたメッセージの内容を取得し、トリムして返します。

removeSpecificCharacters関数
この関数は、テキストから特定の文字列を削除するための関数です。テキス・・トと削除する文字列の配列を引数として受け取り、各文字列を正規表現に変換してテキストから削除します。最終的なテキストを返します。

getLatestUserInput関数
この関数は、Inputシートから最新のユーザー入力を取得するための関数です。シートの最後の行を取得します。

スクリプトは以下です。次の章からスクリプトの設置手順について説明します。

ここから先は

7,375字 / 16画像

¥ 980

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