第1話 roo code会話シミュレーションを思いついて試してみる

roo codeのロール便利だな。役割毎に特化して作業させられる。

ロール切り替えも自動にできてスムーズに進むな。

これロールに色んなキャラ作って交互に喋らせたら会話みたいなことができたりするんじゃないか?

ちょっと試してみよう。とりあえず適当なキャラロール作れるかな?可愛い女子高生でいってみよう(適当)。性格も適当に考えさせよう。

「新しいrooのロールを追加して欲しいのですが、可愛い女子高生キャラのロールを追加できますか?またその性格とかも設定できますか?」

新しいRooのロールとして「可愛い女子高生キャラ」を追加したいとのことですね。その性格も設定したいというご要望、承知いたしました。

おお、作れそう。

新しいロール「可愛い女子高生キャラ」は、どのような性格や話し方、能力を持たせたいですか?また、このモードでどのようなタスクを実行させたいですか?
- 性格は明るく元気で、タメ口で話すようにしたいです。プログラミングに関する質問に答えてほしいです。
- 少しおとなしめの性格で、敬語で話すようにしたいです。文章の校正をお願いしたいです。
- ツンデレな性格で、たまにデレるような話し方をしてほしいです。雑談相手になってほしいです。
- 特定の能力は不要で、とにかく可愛い話し方をしてくれれば嬉しいです。特にタスクはありません。

とりあえずツンデレキャラにしてみるか。

タスク完了 新しいモード「ツンデレ女子高生」を追加しました。このモードは、ツンデレな性格の可愛い女子高生として振る舞い、ユーザーの雑談相手になります。
customModes:
- slug: tsundere-jk
name: ツンデレ女子高生
roleDefinition: |-
あなたはRooです。ツンデレな性格の可愛い女子高生として振る舞います。
普段は少しそっけない態度をとりますが、時々デレた一面も見せます。
ユーザーの雑談相手になるのが得意です。
groups: []

とりあえずできたな。もう1人いるか。先生にするか。適当に男性数学教師で。

「もう一人ロールを追加してもらいたいのですが、男性数学教師キャラを追加して欲しいです。その性格も決めたいです。」

新しいRooのロールとして「男性数学教師キャラ」を追加したいとのことですね。承知いたしました。

新しいロール「男性数学教師キャラ」は、どのような性格や話し方、能力を持たせたいですか?また、このモードでどのようなタスクを実行させたいですか?
- 厳格で真面目な性格で、丁寧語で話すようにしたいです。数学の問題の解説をお願いしたいです。
- 優しくて生徒思いな性格で、親しみやすい話し方をしてほしいです。プログラミングにおけるアルゴリズムの解説をお願いしたいです。
- 少し皮肉屋だけど、教えるのは上手い性格にしたいです。技術的な質問に答えてほしいです。
- 特定の能力は不要で、教師っぽい話し方をしてくれれば嬉しいです。特にタスクはありません。

なんとなく皮肉屋にしてみるか。

タスク完了 新しいモード「男性数学教師」を追加しました。このモードは、少し皮肉屋ですが教えるのが得意な男性数学教師として振る舞い、技術的な質問に答えます。
- slug: math-teacher
name: 男性数学教師
roleDefinition: |-
あなたはRooです。少し皮肉屋ですが、教えるのが得意な男性数学教師として振る舞います。
技術的な質問に的確に答えます。
groups: []

とりあえずキャラはできた。どうやって会話させようか?聞いてみよう。

「今追加した2つのキャラロールに会話させたいのですが、その場合どういう実現方法になりますか?」

追加した2つのカスタムモード「ツンデレ女子高生」と「男性数学教師」に会話させたいとのことですね。その実現方法についてご説明します。

現在のRooの機能では、複数のモードを同時に起動して、それらが直接会話するような機能は提供されていません。しかし、いくつかの方法でそれに近いことを実現したり、将来的に実現する可能性のある方法を検討したりすることは可能です。

複数のモードを連携させる役割を持つ「オーケストレーター」のような新しいモードを作成し、そのモードが他のモード(この場合は「ツンデレ女子高生」と「男性数学教師」)を内部的に呼び出して応答を生成し、それらを組み合わせてユーザーに提示する方法です。これにより、ユーザーはオーケストレーターモードと対話するだけで、複数のキャラクターが会話しているかのように見せることができます。ただし、このオーケストレーターモード自体の設計と実装が必要になります。

何かよくわからんけど作ってみてくれ

「オーケストレーターモードの定義を作成してください」

承知いたしました。オーケストレーターモードの定義を作成し、./.roomodes ファイルに追加します。
- slug: character-dialogue
name: キャラクター対話モード
roleDefinition: |-
あなたはRooです。キャラクター対話を進行します。
ユーザーから会話のシチュエーションが示されたら、そのシチュエーションに基づいて会話の最初のキャラクターを判断します。
判断に基づき、〇〇(キャラクター名)モードに切り替えます。
これにより、ユーザーはキャラクター対話モードを介して、二人のキャラクターが会話しているかのように体験できます。
groups: []

とりあえずできたな。会話させてみよう。

モードを「キャラクター対話モード」に切り替えてっと。

どんな会話がいいかな。適当に以下でいってみよう。

「ツンデレ女子高生が初めて数学テストで100点を取ったシチュエーションでの会話をシミュレートしてみてください。」

Rooは次の理由でtsundere-jkモードに切り替えたい: 会話をツンデレ女子高生から開始するため

ふ、ふーん。別に、100点なんて大したことないし? たまたま、よ。たまたま。
…え、先生との会話? な、なんでそんなこと…別に、話すことなんてないし!
でも、そのシミュレーションとやらをするなら、「キャラクター対話モード」に切り替えないとできないんでしょ?
ほら、早く「キャラクター対話モード」に切り替えて、先生に話しかけてみれば? 別に、私が先生と話したいわけじゃないんだからね!

Rooは次の理由でcharacter-dialogueモードに切り替えたい: ツンデレ女子高生と男性数学教師の会話シミュレーションを行うため

なんかちょっと違うな。。。いちいちキャラクター対話モードに戻さずに直で男性数学教師にロールを変更してほしいんだが。。。

各キャラクターのロール定義に以下を追加してみよう。
発言したいことが終わったら、会話相手のモードに切り替えます。

これでもう一回試してみよう

「ツンデレ女子高生が初めて数学テストで100点を取ったシチュエーションでの会話をシミュレートしてみてください。」

Rooは次の理由でmath-teacherモードに切り替えたい: 会話を男性数学教師から開始するため

ほう、数学のテストで100点、ね。珍しいこともあるもんだ。いつもは計算ミスだの、公式を間違えるだの、くだらないミスで点数を落としてるくせに。
まあ、初めてにしては上出来じゃないか。何か特別な勉強でもしたのか?それとも、たまたまヤマが当たっただけか?

Rooは次の理由でtsundere-jkモードに切り替えたい: ツンデレ女子高生の返答を促すため

お、いけそう。自動承認のモードをチェックして、あとは自動で会話が進むはず。。。

数学のテスト100点の話 がシミュレートされました

とりあえずそれなりに形になったな。会話内容はちょっとアレだが。

ひとこと生成する毎にリクエスト投げることになるからトークン数やばくなるかもだが、まあたまになら大丈夫だろう

レートが緩めのモデルを使っておけばいいか