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は不要です。必ず削除願います。
 */

スポンサードリンク

スポンサードリンク

-MZ用プラグイン

Copyright© #ツクプラMZ , 2026 All Rights Reserved.