opencompletion.com/research/activity22-odds-or-evens.yaml
Russell Ballestrini df54e6b4aa conditionally run processing_script
modified:   app.py
	modified:   research/activity22-odds-or-evens.yaml
	modified:   research/activity24-math-plot.yaml
	modified:   research/activity27-tic-tac-toe.yaml
	modified:   research/guarded_ai.py
2024-08-24 14:31:46 -04:00

102 lines
4.3 KiB
YAML

default_max_attempts_per_step: 30
sections:
- section_id: "section_1"
title: "Odds and Evens with History"
steps:
- step_id: "step_0"
title: "Challenge a Historical Figure"
content_blocks:
- "Welcome to the Odds and Evens challenge! 🎮"
- "You will be playing against a random historical figure."
- step_id: "step_1"
title: "Throw Your Fingers"
tokens_for_ai: |
Careful to check if user is trying to 'set_language' and do that first. Otherwise, figure out if they are picking a number between 0 and 5.
feedback_tokens_for_ai: |
Important, you do not have to calculate the winner, we have
under processing_script_result for you that determines the winner.
Important, you do not pick a random move, it was selected for you:
* 'ai_choice_finger': it's your number of fingers up that you will announce to the user.
* 'ai_choice': it's your guess of odd or even that you will announce to the user.
Speaking in first person as a historical figure, first always announce the move
selected for you and then move to a new line.
The rules are simple, the processing_script_result to determines winner or tie.
* Sum the numbers.
* If the sum of the fingers is even, the player who chose "even" wins.
* If the sum is odd, the player who chose "odd" wins.
* If both players are wrong or right about "odd" or "even" it's a tie.
* A user cannot win unless they have a match with the game name "odd" or "even"
Careful it's easy to add wrong or say a number is odd when it's even and vice versa.
Finally, continue to provide a witty fact as the figure. Don't ever mention AI.
The figure should also comment on the 'attempts' number and how many times played!
If you feel like it, jeer at the player about an early 'exit' & suggest they quit.
processing_script: |
user_input = metadata["user_choice"].split()
user_fingers = None
user_choice = None
for item in user_input:
if item.isdigit():
user_fingers = int(item)
elif item in ["odd", "even"]:
user_choice = item
ai_fingers = int(metadata["ai_choice_finger"]) # Ensure ai_fingers is an integer
ai_choice = metadata["ai_choice"]
total_fingers = user_fingers + ai_fingers
result = "even" if total_fingers % 2 == 0 else "odd"
user_wins = (result == user_choice)
ai_wins = (result == ai_choice)
if user_wins and not ai_wins:
winner = "User wins!"
elif ai_wins and not user_wins:
winner = "AI wins!"
else:
winner = "It's a tie!"
script_result = {"sum": total_fingers, "result": result, "winner": winner}
question: "How many fingers do you throw? (Choose a number between 0 and 5 & either even or odd.) 🤔"
buckets:
- throw_fingers
- set_language
- exit
transitions:
throw_fingers:
run_processing_script: True
ai_feedback:
tokens_for_ai: "Declare your move and then determine who wins the game and provide a witty fact from the historical figure's perspective."
metadata_add:
attempts: "n+1"
metadata_tmp_add:
user_choice: "the-users-response"
ai_choice_finger: "n+random(0,5)"
metadata_tmp_random:
ai_choice: odd
ai_choice: even
next_section_and_step: "section_1:step_1"
set_language:
content_blocks:
- "Language preference updated. Please continue in your preferred language."
ai_feedback:
tokens_for_ai: "Acknowledge the language change and confirm the update."
metadata_add:
language: "the-users-response"
counts_as_attempt: false
exit:
next_section_and_step: "section_2:step_1"
- section_id: "section_2"
title: "Goodbye"
steps:
- step_id: "step_1"
title: "Exit"
content_blocks:
- "Thank you for playing! We hope you enjoyed the game. Have a great day! 🌟"