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 Me gusta

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

2 Me gusta

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

6 Me gusta

Discourse AI ahora tiene un lanzador de dados razonablemente capaz y creativo, por ejemplo @random_picker_bot, ¿qué tal si me lanzas un 1d20+5?

Además, ya que estás, elige un nombre aleatorio para mi gato.

3 Me gusta
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 Me gusta

La gran ventaja aquí es que no necesitas aprender ninguna sintaxis especial, GPT-4 simplemente lo averigua por ti. Puede hacer que tirar los dados sea un poco caro, pero GPT 3.5 también hace un trabajo razonable.

2 Me gusta

¿Cómo podríamos saber si este tipo de sistema está haciendo lo que esperamos? Podría preferir números impares, o preferir no sacar dobles, o cualquier cosa realmente.

1 me gusta

Puedes revisar el código de aleatorización en https://github.com/discourse/discourse-ai/blob/main/lib/ai_bot/tools/random_picker.rb. Por ejemplo, los lanzamientos de dados parecen estar determinados por:

2 Me gusta

Ah, muchas gracias. Ingenuamente había asumido que el LLM estaba haciendo el trabajo; estar conectado a algún código procedural es una historia diferente y, en este caso, ¡la respuesta correcta!

Algo similar ocurre en los chatbots. Si le pides que haga matemáticas, llamará a una función determinista en lugar de dejarlo al azar.

2 Me gusta