当サイトの運営者です。ゲーム制作とプラグイン開発が好きで、コミュニティに貢献したいと考えています。
RPGツクールMZでゲームを制作中です。
※プログラマ・エンジニアではありません。
ChatGPTに台詞を書いてもらう - ChatGPT_APIMZ.js
シェア用テキスト:
▼ChatGPTに台詞を書いてもらう(kotonoha*様作) - ChatGPT_APIMZ.js
https://plugin-mz.fungamemake.com/archives/7088
ChatGPT APIと通信して、AIに台詞を作成してもらうプラグインです。独自のAPIキーをセットする必要があります。
ふりがな:ChatGPTにせりふをかいてもらう
機能概要: ChatGPT APIと通信して、AIに台詞を作成してもらうプラグインです。独自のAPIキーをセットする必要があります。
利用規約(ライセンス): MITライセンス
作者:kotonoha*
作者サイト:https://aokikotori.com/
解説ページ:https://aokikotori.com/archives/2023/04/11/826
ファイル名:ChatGPT_APIMZ.js
プラグインのヘルプ:
/*: * @target MZ * @plugindesc ChatGPT APIと通信し、AIに台詞を作成してもらうプラグイン * @author kotonoha* * @url https://github.com/kotonoha0109/kotonoha_tkoolMZ_Plugins/blob/main/plugins/ChatGPT_APIMZ.js * * @param ChatGPT_Model * @type string * @default gpt-3.5-turbo * @desc ChatGPTのAIモデル * * @param ChatGPT_URL * @type string * @default https://api.openai.com/v1/chat/completions * @desc ChatGPTのURL * サーバーサイドを利用する場合はそのファイルのURL * * @param ChatGPT_APIkey * @type string * @default sk- * @desc ChatGPTのAPIキー(数値だけの場合は変数ID、文字列の場合はAPIキー) * ※変数内にAPIキーを格納することが出来ます。 * * @param UserMessageVarId * @type variable * @default 1 * @desc プレイヤーの質問を格納する変数ID * * @param AnswerMessageVarId * @type variable * @default 2 * @desc AIからの回答を格納する変数ID * * @param MemoryMessageVarId * @type variable * @default 3 * @desc 回答履歴を格納する変数ID * * @param VisibleSwitchID * @type switch * @default * @desc 回答を非表示にするスイッチID * 回答を表示せず、変数に格納したいだけの時に。 * * @param BrStr * @type boolean * @default true * @desc 自動改行 * 回答に改行コードが出力された時に改行処理を行います。 * * @param ReplaceStr * @type string * @default * @desc NG文字 * 1文字ずつ判定。例えば「」と書くとカギ括弧が非表示になります。 * * @param SystemMessage * @type multiline_string * @default Please answer in Japanese. * @desc AIへの共通の指示(「日本語で書いて」とか「120文字以内でまとめて」とか) * * @param FontFileName * @desc 使用するフォントのファイル名を指定します。 * 拡張子まで入れてください。 * @type string * @default * * @param Layouts * @type struct<Layout>[] * @desc ウィンドウデザインを定義します。 * LayoutVariableIdの値で表示するウィンドウを切り替えます。 * * @param LayoutVariableId * @type variable * @desc ウィンドウデザインの切り替えに使う変数ID * @default 0 * * @command chat * @text Send Chat Message * @desc APIに問い合わせるコマンド * * @arg system * @type multiline_string * @default * @desc このイベントへの指示 * * @arg message * @type multiline_string * @default * @desc このイベントへの質問 ※CuatomQuestionMessageVarIdが0か、 * 変数が空の時この質問が反映されます。 * * @arg message_before * @type multiline_string * @default * @desc この質問の手前に付加する内容 * 補足事項を入力する際に。 * * @arg message_after * @type multiline_string * @default * @desc この質問の後ろに付加する内容 * 補足事項を入力する際に。 * * @arg displayHeader * @type string * @default * @desc 回答の手前に表示する内容 * userMessage を入れると質問(message)に置き換えられます。 * * @arg temperature * @type Number * @default 1 * @desc サンプリング温度(0~1) * 値が低いほど関連性が高くなり、高いほど多様な単語を生成 * * @arg top_p * @type Number * @default 0.9 * @desc 文章の多様性(0~1) * 値が低いほど一貫性が向上し、高いほど文章が多様に * * @arg max_tokens * @type Number * @default 512 * @desc AIが回答するトークンの最大数(gpt-3.5-turboは4096まで) * 日本語1文字=2~3トークン程度 * * @arg memory_talk * @type Number * @default 10 * @desc 会話履歴の保存量 * 会話内容をAIが記憶する数(1回の質問+回答を 1 とする) * * @arg CuatomQuestionMessageVarId * @type variable * @default * @desc このイベントへの質問を格納する変数ID * 空の場合はプラグインパラメータの設定が使用されます。 * * @arg CustomAnswerMessageVarId * @type variable * @default * @desc このイベントの回答を格納する変数ID * 空の場合はプラグインパラメータの設定が使用されます。 * * @arg CustomMemoryMessageVarId * @type variable * @default * @desc このイベントの履歴保存を格納する変数ID * * @arg support_message * @type multiline_string * @default * @desc サポート質問 * このイベントへの質問例を作成します。 * * @arg support_answer * @type multiline_string * @default * @desc サポート回答 * サポート質問に対する回答例を作成します。 * * @arg characterName * @type string * @default * @desc キャラクター名 * メッセージウィンドウ上に表示します。 * * @arg faceImage * @type file * @default * @desc キャラクターの顔グラフィック * 非表示の場合は空欄にしてください。 * @dir img/faces/ * * @arg faceIndex * @type number * @default * @desc 顔グラフィックのインデックス * ツクールMZの仕様では左上が0〜3、右下が4〜7になります。 * * @help ChatGPT APIと通信して、AIに台詞を作成してもらうプラグインです。 * 独自のAPIキーをセットする必要があります。 * * 【注意】 * APIキーは必ずゲームプレイヤーが所有する物を使用する様にしてください! * 作品に登録したまま公開すると、作者のAPIキーが漏洩します! * APIキーの漏洩や利用料金に関するトラブルは自己責任です! * * 【基本的な使い方】 * (1) OpenAIで取得したAPIキーを、ChatGPT_APIkey にセットしてください。 * * (2) 空き変数IDが最低3つ必要です。 * ・プレイヤーの質問を一時的に変数に入れます。 * 空いている変数IDをパラメータ UserMessageVarId にセットしてください。 * ・AIからの回答を一時的に変数に入れます。 * 空いている変数IDをパラメータ AnswerMessageVarId にセットしてください。 * ・回答履歴を一時的に変数に入れます。 * 空いている変数IDをパラメータ MemoryMessageVarId にセットしてください。 * * (3) AIに台詞を作ってもらいたいイベントに、プラグインコマンドで * 「ChatGPT_APIMZ」を選び、キャラクターの設定を登録してください。 * * 【プラグインコマンドの解説】 * # system * イベントへの指示です。プラグインパラメータの SystemMessage に追記されますので、 * このイベントには、それに補足したい指示を与えます。 * たとえばパラメータ側に「日本語で回答して」と設定されている場合、 * このイベントでは「ただし、カタカナで回答して」といった補足指示が可能です。 * * # message * イベントへの質問です。AIに回答してもらいたい質問を入力します。 * ただし、変数CuatomQuestionMessageVarId に質問を入力して使う場合は、 * この項目は空にしてください。 * * # message_before, message_after * イベントへの質問に変数を使う時、messageは変数の値に置き換えられてしまいます。 * systemに記述した内容はGPT-3モデルでは重要視されないため、 * 命令に従わない場合は、こちらに入力してみてください。 * 変数の前後に、messageロールに付加する文字列を設定します。 * たとえば、変数の値が「こんにちは」で、message_beforeが「あなたは」、 * message_afterが「ですか?」の場合、AIには「あなたはこんにちはですか?」と * 質問されます。 * * # displayHeader * メッセージウィンドウに表示するヘッダーです。 * 変数ID1の値を表示する場合は、V[1]と入力してください。 * また、userMessage を入力すると、message_before、message_afterを * 除いた質問が表示されます。 * * # temperature, top_p * それぞれ、AIからの回答における多様性を決める数値です。 * 0~1の数値を設定してください。 * * # max_tokens * 最大トークン数(日本語1文字=2~3トークン程度)を設定します。 * 文字数の上限を決められますが、レスポンスの文字数より最大トークン数が * 低い場合は、文章の途中で切れます。 * * # memory_talk * 履歴保存の数です。数値分のやり取りを保存します。 * 設定する数値が 5 ならば、直前5回分のやり取りを保存します。 * 多ければ多いほど話題に沿った会話が可能ですが、 * APIに履歴ごとトークンが送信されるため、利用料金が高くなる事があります。 * 保存が必要無いなら 0 を設定します。 * * # CuatomQuestionMessageVarId * イベントへの質問が入力されている変数IDです。 * 名前入力ウィンドウやチャットウィンドウでの質問入力などで、 * 変数内に質問が保存されている場合、その変数IDを指定してください。 * ※この変数とmessageが同時に設定されている時は、messageが優先されます。 * ※プラグインパラメータの UserMessageVarId とは別です。 * * # CustomAnswerMessageVarId * このイベントの回答が格納されている変数IDです。 * プラグインパラメータの AnswerMessageVarId に保存されますが、 * イベントごとに回答を個別に記録したい場合、この変数IDを指定してください。 * * # CustomMemoryMessageVarId * このイベントの履歴が保存されている変数IDです。 * APIに通信するための配列としてが記録されていますので、 * 直接的なコールは出来ません。 * 履歴を手動で削除したい場合はこの変数IDの変数を空にしてください。 * * # support_message, support_answer * 会話の例文を作成します。 * AIが返答する際、この例文を参考にして返答します。 * support_messageに「自己紹介」 * support_answerに「アタシはシャム猫! 5歳にゃっ!」 * この様に入力すると、次の会話以降はsupport_answerの例文を参考にするので、 * 一人称が「アタシ」で、語尾を「にゃっ」にした返答がされやすくなります。 * * # characterName, faceName, faceIndex * キャラクターの名前、顔グラフィックと、その表示インデックスを設定します。 * 顔グラフィックは、img/faces/にあるファイル名を入力してください。 * 顔グラフィックを表示しない場合は、空にしてください。 * インデックスは、顔グラフィックの左から何番目かを設定します。 * 一段目は0〜3、二段目は4〜7となります。 * * 【ブラウザ版での動作について】 * 本プラグインで生成されるメッセージウィンドウはHTMLを利用しています。 * Webブラウザでプレイする際、メッセージウィンドウがゲーム領域外に * 大きくはみ出して表示される事がありますので、 * その際は iframeを記述したHTMLを別途用意し、 * その中でツクールが生成したindex.htmlを読み込んでください。 * * 【メッセージウィンドウのカスタマイズ】 * メッセージウィンドウの幅や高さ、位置、背景色をカスタマイズしたい場合は、 * function createStreamingTextElement() の中身を修正してください。 * ウィンドウ調整ツールをご利用ください。 * ▼ウィンドウ調整ツール * https://aokikotori.com/chatgpt_apimz_window/ * * 【サーバーサイドとの連携】 * サーバー上にPHPやPython等のファイルを設置し、 * APIキーなど、ChatGPTへのリクエストヘッダをシークレットにする事が出来ます。 * ▼PHPサンプルはこちら * https://github.com/kotonoha0109/kotonoha_tkoolMZ_Plugins/blob/main/plugins/php/request.php * * PHPファイルにAPIキーを設定し、サーバにアップ後、 * プラグインパラメータのChatGPT_URLをPHPファイルのURLにしてください。 * プラグインパラメータのChatGPT_APIkeyは不要です。必ず削除願います。 */