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 « J'aime »

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

2 « J'aime »

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

6 « J'aime »

Discourse AI dispose désormais d’un lanceur de dés raisonnablement performant et créatif, par exemple @random_picker_bot , que diriez-vous de lancer un 1d20+5 pour moi ?

Aussi, pendant que vous y êtes, choisissez un nom aléatoire pour mon chat.

3 « J'aime »
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 « J'aime »

Le gros avantage ici est que vous n’avez pas besoin d’apprendre de syntaxe spéciale, GPT-4 le découvre pour vous. Cela peut rendre le lancer de dés un peu cher, mais GPT 3.5 fait également un travail raisonnable.

2 « J'aime »

Comment pourrions-nous savoir si ce type de système fait ce que nous attendons ? Il pourrait préférer les nombres impairs, ou ne pas aimer faire des doubles, ou n’importe quoi en fait.

1 « J'aime »

Vous pouvez vérifier le code de randomisation sur https://github.com/discourse/discourse-ai/blob/main/lib/ai_bot/tools/random_picker.rb. Par exemple, les lancers de dés semblent être déterminés par :

2 « J'aime »

Ah, merci beaucoup. J’avais naïvement supposé que le LLM faisait le travail - être intégré à du code procédural est une autre histoire et dans ce cas la bonne réponse !

Chose similaire sur Chatbot. Si vous lui demandez de faire des maths, il appellera une fonction déterministe au lieu de laisser le hasard décider.

2 « J'aime »