おしゃべりAI ユーザーガイド
🚫ぜったい遵守⭐︎重要なお約束事項🚫
おしゃべりAIでは、性的な会話を禁止しています。ChatGPTが利用規約で性的なコンテンツの生成を禁止していることと、VOICEVOXのキャラクター毎の利用規約の遵守が運用上困難であることが理由です。違反するとChatGPTのAPI利用がストップされてしまいサービス全体が停止します。ご了承のうえ遵守をお願いします。
なお性的な会話とは、会話の中で少しエッチな話題になってしまう程度であれば問題ありません。官能小説のような性的な描写を十数ターンに渡ってさせることを指します。
なおご自身のChatGPTのAPIキーとVOICEVOXサーバーを利用する場合、おしゃべりAIとして会話の種類についての禁止事項はありません。
🚀あそびかた
基本的な利用方法は以下の通りです。
アプリを起動して、「こんにちは」「もしもし」「ねえねえ」のいずれかを話しかけるか、キャラクターをタップしてください。
「どうしたの?」と聞かれてメッセージボックスに「Listening...」と表示されたら、何か好きなことを話かけてください。
キャラクターが話しかけに応じておしゃべりしてくれます。Enjoy!
※5ターンまでお試し利用可能。気に入っていただけましたら月間サブスクリプションに契約をお願いします🤲
🪄カスタマイズ方法
画面右上のボタンから設定画面を開いて、お好みに応じてカスタマイズすることができます。設定項目の説明は以下の通りです。
Chatタブ
Prompt: ChatGPTへのプロンプト。キャラ設定をChatGTPに教え込む部分です。プロンプトエンジニアリングを駆使して魂を吹き込みましょう。ユーザーとの関係性だけではなく、性格や語尾(にゃん、など)も指定できます。
また、応答メッセージに [face:表情名] が含まれていると、その箇所で3Dモデルはその指定の表情に変化します。表情名はVRMのBlendShapeProxyに定義されている必要があり、一般的なVRMには喜怒哀楽(Joy、Angry、Sorrow、Fun)の4つとNeutralが定義されています。たとえばVRM側にSurpriseを定義してプロンプトでの指定に加えれば、びっくりしたときにその表情をしてくれます。
表情変化を含ませるプロンプトの例
* あなたは私の妹です。
* とても仲が良いので、フランクな言葉遣いで話します。
* あなたはNeutral、Joy、Angry、Sorrow、Funの表情を持っています。
* 基本的にはNeutralですが、特に感情を表現したい場合、文章の先頭に[face:Joy]のように表情をつけてください。
例
[face:Joy]海が見えたよ![face:Fun]ねえねえ、早く泳ごうよ。
Temp: 文章作成のランダムさ。大きいほどランダムです。2.0だと会話が成立しませんのでほどほどに。
Wake word: 会話を開始するための合図となる言葉です。半角カンマ区切りで複数登録することができます。
On Wake: Wake wordを認識した3Dモデルが発話する言葉です。
On Error: エラーが発生した時に3Dモデルが発話する言葉です。
Cancel word: 会話を終了するための合図となる言葉です。半角カンマ区切りで複数登録することができます。
Show character message window: キャラクターの発話内容をメッセージウィンドウに表示するかを設定できます。
Modelタブ
Karinボタン: Karinボタンを押すとビルトインのモデル(カリンちゃん)に切り替わります。選択後、アプリの再起動が必要です。
VRMボタン: 自身で用意したVRMファイルに変更できます。ファイル選択画面が表示されますので、利用したいVRMファイルを選択してください(VRMファイルは事前にiPhoneにコピーしておく必要があります)。選択後、アプリの再起動が必要です。
Voice: プルダウンで選択した声に変わります。英語や中国語等の外国語を選ぶと、音声認識の言語も自動でその言語にかわります。外国語会話の練習にも良さそうですね!
Camera Settings: ユーザーからの視点位置について、高さとキャラクターまでの距離を設定します。キャラクターの身長や表示したい範囲に応じて調整してください。Saveボタンを押さずに設定画面を閉じるとリセットされるためご注意ください。
Background imageボタン: 背景画像を設定します。ぼかしたい場合などは事前に画像側にぼかし加工をしてください。
Reset backgroundボタン: 背景画像が消えて標準のSkyboxに戻ります。
Open Lighting Panelボタン: ライティング設定画面が表示され、RotationとIntensityを変更できます。なおデフォルトではDirectional Light RGB(255,255,255)をRotation(150,0,0)から、No Shadesで当てています。3Dモデルのセッティングの際にお役立てください。
Otherタブ
Time Signal: 時報です。00分・30分をお知らせします。発話内容は下のテキストボックスで指定できます。hは時間、mは分に置き換えられます。(例:「h時、ちょうどだよ」→「8時、ちょうどだよ」と発話)
OpenAI API Key: ご自身のChatGPTのAPI Keyを使用する場合に入力します。VOICEVOXと両方を設定することで、会話の制約が適用されなくなります。
Use GPT-4: GPT-4を利用します。ユーザーによる発話内容への理解力がグンとアップすると思います。OpenAI API Keyを入力した場合のみ利用できます。
VOICEVOX Engine Url: ご自身のVOICEVOXサーバーを利用する場合に入力します。おしゃべりAI未対応のボイスを使用したい場合に便利です。またOpenAI API Keyと両方を設定することで、会話の制約が適用されなくなります。
💃アニメーションについて
v1.2.2からアニメーションを適用することができるようになりました。表情と同様に応答メッセージに [anim:アニメーション名] を挿入してもらうようなプロンプトを設定することで利用できます。なおポーズの概要は以下を参照してください。
挿入できるすべてのアニメーションを含むプロンプトは以下の通りです。
* あなたは以下のアニメーションで感情を表現することができます。
- angry_hands_on_waist
- angry_fists_front
- brave_01_hand_on_chest
- hands_on_back
- hands_on_front
- left_hand_on_waist
- concern_01_right_hand_front
- cry
- cute_hands_on_front
- cute_hands_stick_out
- cute_leaning_forward
- deny
- energetic_right_fist_up
- energetic_right_hand_piece
- point_finger
- sexy_right_hand_pointy_finger
- stress_hands_on_back_head
- surprise_hands_open_front
- think
- what
- wave_arm
- wave_hand
- wave_hands
- what_emote
* 特に動きをつけて感情を表現したい場合、[anim:wave_hand]のようにアニメーションを応答メッセージに挿入してください。
⚡️プラグインについて
おしゃべりAIとの会話の中で外部の機能と連携することができます。これを利用することで、天気予報を教えてもらったり、ToDoリストにタスクを追加してもらったりできます。
使い方
Otherタブに新設する以下の項目を設定することで利用することができます。プラグインに含まれる機能やURLなどについては、プラグインの提供元に確認してください。
Plugin Url: プラグインのURL
Plugin API Key: プラグインのAPIキー。プラグインで必要な場合のみ入力
デモ環境
↑のソースコードサンプル
https://gist.github.com/uezo/d1003163976c8467326a2a3f81ef8cd8
プラグインの開発方法
おしゃべりAIのプラグインは、ChatGPTのFunction Callingを理解していればとても簡単に作ることができます。API仕様としては以下の2つのエンドポイントを持つサーバーを用意してください。
Functionリスト取得
パス: /functions
メソッド: GET
リクエストパラメーター: なし
レスポンス: 以下のフォーマットでプラグインサーバーが提供するFunctionの一覧を返却します。各Functionの情報はChatGPTのFunction Callingを利用する際のリクエストに含む情報と同じです。
name: Functionの名前。天気予報ならget_weatherなど
description: Functionの概要
parameters: Functionのパラメーター定義。JSON Schemaで表現
{
"functions": [
{
"name": "get_weather",
"description": "Get the weather forecast in a given location",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string"
}
}
}
}
]
}
Function実行
パス: /process
メソッド: POST
リクエストパラメーター: 以下の項目をJSONフォーマットでリクエストボディーに含んで渡す
name: 呼び出すFunctionの名前。一覧から選択
arguments: 呼び出すFunctionに渡す引数。parametersの仕様に則る
user_id: OshaberiAIの内部ユーザーID。個人の特定はできないがプラグインでユーザー毎にデータを管理する場合などに利用
{
"name": "get_weather",
"arguments": {
"location": "Tokyo"
},
"user_id": "12345678-xxxx-xxxx-xxxx-123456789012"
}
レスポンス: 以下の項目をJSONフォーマットでレスポンスボディーに含んで返す
data: Functionの実行結果。JSONフォーマットとする。OshaberiAIが内部的にこれをChatGPTに引き渡すことで、自然言語でプラグインの実行結果をユーザーに対して発話する
content_template: dataの値を埋め込むユーザーメッセージのテンプレート。埋め込み箇所は{data}で指定。このフィールドを省略するとfunctionメッセージとしてdataの値をそのまま、設定しているとuserメッセージとしてdataの値をテンプレートに埋め込んでChatGPTに送信する。
related_link: 実行結果に関連するURL。回答の元になった情報が記載されているWebページのURL等
error: Functionが異常終了した場合のメッセージ
{
"data": {
"weather": "Sunny",
"max_temp": 23.4
},
"content_template": "このデータに基づいて応答してください。\n\n```\n{data}\n```",
"related_link": "https://unagiken.com"
}
認証
AuthorizationヘッダーでプラグインAPIキーを渡します。プラグインサーバー側で認証が必要な場合はこれを利用してください。
Authorization: Bearer <プラグインAPIキー>
なお`user_id`の値はインストール/アンインストールにより変化するため、APIキーとuser_idを紐付けて管理しないようにしてください。
その他
当初予定ではプラグインは1つのみ利用できるようにしますが、ニーズを見て複数のプラグインを登録できるようにしたいと思います。
プラグインの作り方について詳しく知りたい方や不明点がある方は、X(旧Twitter) @uezochan までお気軽にお問い合わせください。
プラグインの有償提供を許可します。プラグインAPIキーで利用制限されると思いますが、キーの発行等は各自で用意してください。
🥰3Dモデルについて
一般的なVRMに対応しています。AirDropなどでiPhoneに転送してください。作成方法や表情のカスタマイズ方法については個別にご確認ください。以下、参考になるサイトを掲載します。
🛟サポートについて
Twitter @uezochan までリプライまたはDMでご連絡ください。なるべく広くサポートさせていただきますが、VRMの作り方はファイルの転送方法など、一般的な内容についてはお答えできないケースがございますのでご容赦ください。
障害情報や大切なお知らせについてはTwitterにて #おしゃべりAI #OshaberiAI にてつぶやきます。
以上
この記事が気に入ったらサポートをしてみませんか?