fix defect when step has no question.

modified:   app.py
	modified:   research/activity13-choose-adventure.yaml
This commit is contained in:
Russell Ballestrini 2024-07-28 11:04:30 -04:00
parent cfa5d77a42
commit 02c97beebe
2 changed files with 92 additions and 22 deletions

111
app.py
View file

@ -1769,6 +1769,75 @@ def handle_activity_response(room_name, user_response, username):
s for s in section["steps"] if s["step_id"] == activity_state.step_id s for s in section["steps"] if s["step_id"] == activity_state.step_id
) )
# Check if the step has a question
if "question" not in step:
# Move to the next step or section
next_section, next_step = get_next_step(
activity_content, section["section_id"], step["step_id"]
)
if next_step:
activity_state.section_id = next_section["section_id"]
activity_state.step_id = next_step["step_id"]
activity_state.attempts = 0
db.session.add(activity_state)
db.session.commit()
# Emit the new step content blocks
content = "\n\n".join(next_step["content_blocks"])
new_message = Message(
username="System", content=content, room_id=room.id
)
db.session.add(new_message)
db.session.commit()
socketio.emit(
"message",
{
"id": new_message.id,
"username": "System",
"content": content,
},
room=room_name,
)
# Emit the new question if it exists
if "question" in next_step:
question_content = f"Question: {next_step['question']}"
new_message = Message(
username="System", content=question_content, room_id=room.id
)
db.session.add(new_message)
db.session.commit()
socketio.emit(
"message",
{
"id": new_message.id,
"username": "System",
"content": question_content,
},
room=room_name,
)
else:
# Display activity info before completing
display_activity_info(room_name, username)
# Activity completed
db.session.delete(activity_state)
db.session.commit()
socketio.emit(
"message",
{
"id": None,
"username": "System",
"content": "Activity completed!",
},
room=room_name,
)
return
# Categorize the user's response # Categorize the user's response
category = categorize_response( category = categorize_response(
step["question"], user_response, step["buckets"], step["tokens_for_ai"] step["question"], user_response, step["buckets"], step["tokens_for_ai"]
@ -1860,28 +1929,31 @@ def handle_activity_response(room_name, user_response, username):
room=room_name, room=room_name,
) )
# Emit the new question # Emit the new question if it exists
question_content = f"Question: {next_step['question']}" if "question" in next_step:
new_message = Message( question_content = f"Question: {next_step['question']}"
username="System", content=question_content, room_id=room.id new_message = Message(
) username="System", content=question_content, room_id=room.id
db.session.add(new_message) )
db.session.commit() db.session.add(new_message)
db.session.commit()
socketio.emit( socketio.emit(
"message", "message",
{ {
"id": new_message.id, "id": new_message.id,
"username": "System", "username": "System",
"content": question_content, "content": question_content,
}, },
room=room_name, room=room_name,
) )
else: else:
# Activity completed! # Display activity info before completing
# Display activity info before deleting.
display_activity_info(room_name, username) display_activity_info(room_name, username)
# Activity completed
db.session.delete(activity_state)
db.session.commit()
socketio.emit( socketio.emit(
"message", "message",
{ {
@ -1891,9 +1963,6 @@ def handle_activity_response(room_name, user_response, username):
}, },
room=room_name, room=room_name,
) )
db.session.delete(activity_state)
db.session.commit()
else: else:
# the user response is any bucket other than correct. # the user response is any bucket other than correct.
activity_state.attempts += 1 activity_state.attempts += 1

View file

@ -1,5 +1,6 @@
default_max_attempts_per_step: 3 default_max_attempts_per_step: 3
tokens_for_ai_rubric: "You are a master storyteller. Your task is to create a coherent and engaging story based on the following chat history. The story should seamlessly integrate the user's responses and the AI's feedback, ensuring that the narrative flows naturally. Pay special attention to the user's choices and how they shape the story. Use descriptive language to bring the scenes to life and make the story immersive. The story should have a clear beginning, middle, and end, reflecting the user's journey and the outcomes of their decisions. Here is the chat history. tokens_for_ai_rubric: |
You are a master storyteller. Your task is to create a coherent and engaging story based on the following chat history. The story should seamlessly integrate the user's responses and the AI's feedback, ensuring that the narrative flows naturally. Pay special attention to the user's choices and how they shape the story. Use descriptive language to bring the scenes to life and make the story immersive. The story should have a clear beginning, middle, and end, reflecting the user's journey and the outcomes of their decisions. Here is the chat history.
sections: sections:
- section_id: "section_1" - section_id: "section_1"