Improve dice rolling for discourse-narrative-bot

Although @discobot has a dice roller, it’s too simple. It’s not yet capable of rolling complex dice and formulas for specific needs. So, I’d like to improve this feature and make it possible to run dice like 1d20+5, 1d20+2 + 2d12-1, 5d10k2 and so on…

I submitted this PR and would very much appreciate reviews and thoughts about it. Thanks! :slight_smile:

https://github.com/discourse/discourse/pull/7381

「いいね!」 4

Hi! To find out what I can do, say @discobot display help.

「いいね!」 2

Shoo! I don’t want to talk to you… ¬¬

「いいね!」 6

Discourse AI には、たとえば @random_picker_bot のような、かなり有能で創造的なダイスローラーが搭載されました。1d20+5 を振ってみていただけますか?

また、ついでに猫の名前をランダムに選んでください。

「いいね!」 3
Random Picker

Picking from ["1-20"], picked: [5]

Random Picker

Picking from ["Whiskers,Mittens,Socks,Shadow,Simba,Leo,Oliver,Luna,Bella,Max"], picked: ["Shadow"]

For your adventurous roll of 1d20+5, the dice landed on a 5, which adds up to a grand total of 10!

And for your future feline friend, the Random Picker has decreed its name shall be Shadow. Sounds like a kitty destined for stealthy midnight adventures, doesn’t it? :cat::sparkles:

「いいね!」 4

ここの大きな利点は、特別な構文を学ぶ必要がないことです。GPT-4 がすべてを把握してくれます。ダイスロールは少し高価になる可能性がありますが、GPT 3.5 でも十分なことができます。

「いいね!」 2

この種のシステムが期待どおりに動作しているかどうかをどのように判断できるでしょうか?奇数を好んだり、ダブルスを避けるようにしたり、あるいは本当に何でもあり得るかもしれません。

「いいね!」 1

ランダム化コードは https://github.com/discourse/discourse-ai/blob/main/lib/ai_bot/tools/random_picker.rb で確認できます。例えば、サイコロの目は以下で決定されているようです。

「いいね!」 2

ああ、ありがとうございます。私はナイーブにもLLMが作業を行っていると仮定していましたが、手続き型コードに接続されているというのは別の話であり、この場合は正しい答えです!

チャットボットでも同様です。数学の問題を尋ねると、運任せにするのではなく、決定論的な関数が呼び出されます。

「いいね!」 2