feat: implement turn-based conversation modalities (addresses #1103)#1119
feat: implement turn-based conversation modalities (addresses #1103)#1119jacyanthis wants to merge 14 commits into
Conversation
|
Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA). View this failed invocation of the CLA check for more information. For the most up to date status, view the checks section at the bottom of the pull request. |
|
Hi @jacyanthis, I'm working on running this locally to check it out. In the mean time, it looks like the schemas need to be updated (there's a failing check to this effect). |
|
@jacyanthis What are the steps to test this out manually? Do you start as an Experimenter and make an experiment from scratch? Thanks in advance for step-by-step instructions. |
|
@jimbojw thanks! Schemas are updated. Yes, this is a checkbox in Conversation Settings for the Group Chat stage when editing an experiment.
|
|
@jacyanthis OK thanks, I was able to test locally using simulated human participants. There seems to be a bug at the end of the first turn of conversation. To reproduce:
Expected: After the last participant has entered a message, the first participant should be prompted to continue. Actual: The last participant is prompted a second time. After they enter a second comment, then the conversation rotates back to the first participant. In the following screenshot, you can see that the third active participant, |
|
Note: In my test example, I included only simulated "human" participants, with no mediators. That may be relevant to the bug. |
|
Thanks! I've modified it to prevent back-to-back turns of the same participant when in a no-mediator Group Chat. Specifically, it will use a single turn order for each 'cycle' of the chat, so the person who goes first in a cycle never went last in the previous cycle. This can still occur if there is a mediator, but then there is an intervening mediator turn between cycles. I checked for other DL functionalities that might not mesh intuitively with turn-based chat. For new participants or mediators being added mid-conversation, I modified the PR so it appends new mediators to the initial mediator 'phase' of the cycle and appends new participants to the secondary participant phase. When a new mediator is added to a no-mediator Group Chat, the turn order will remain fixed. These seem like the most intuitive options to me, though I don't expect these corner cases to come up with turn-based conversations, or at least not with our intended usage. Alternatively, some other functionalities could be disabled when turn-based is enabled. |
|
Thanks! I added several commits to address various possible issues for turn management (e.g., handling repeated API failures, turn skips for ineligible participants), and I added that turn indicator to the participants panel. |
|
@jacyanthis I'll try the latest. You'll want to rebase against |
|
@jimbojw sounds great! Rebase done. |
There was a problem hiding this comment.
Code looks good. I ran it and can confirm that things appear to be working correctly.
I did notice a bug, but I don't know if it's a new one, or it was there previously. In the following screenshot, bear just finished their turn. For conversational simplicity, I was piloting each participant to just enter letters of the alphabet sequentially ('A', 'B', and so on).
On bear's turn, I entered 'F', then rapidly hammered the Enter button. This caused a sequence of 'F' messages from bear even though, presumably, only one message should be allowed.
The multiple messages only go through during the intermediate period in which the send button has been replaced with a spinner. Once the first such message goes through, later taps of Enter do not spawn additional messages.




This adds feature #1103
This is a turn-based mode where each agent sends one message in a cycle. The moderator speaks first, then a random order of participants, then the moderator and a new random order... Participants see their text entry disabled and a "Waiting" banner then a "It's your turn" banner.
There is a checkbox in Conversation Settings for the Group Chat stage.
This PR was heavily assisted with an LLM agent, and it's my first time contributing, so thank you for the review! (maybe @rasmi for API regression? @jimbojw ?) I hope to add a few other related features.