feat: observer participants, representative agents, and mediator swapping - #1171
feat: observer participants, representative agents, and mediator swapping#1171jacyanthis wants to merge 33 commits into
Conversation
… message, fixing overly broad guard
…d from that color
…es of observer experiments
|
@jacyanthis Please resolve conflicts and re-upload |
53645e0 to
f768831
Compare
@jimbojw I don't see any conflicts, but I just synced the branch in case that's what you were referring to. Anything else I can do to move this forward? |
…r instead of storing it in the profile name
|
Testing general functionality with manual testing per template: Set up an experiment with (i) a participant who is assigned the variables Expected behavior: When the participant reaches the chat stage, the agents should be spawned, and the participant should observe rather than directly participate in the chat. The participant's text entry should be disabled, and a representative agent should speak on their behalf with two other agents participating. |
# Conflicts: # docs/assets/api/schemas.json # frontend/src/components/chat/chat_input.ts # frontend/src/components/chat/chat_message.ts # frontend/src/components/stages/group_chat_participant_view.ts # functions/package.json # scripts/deliberate_lab/types.py # utils/src/stages/chat_stage.ts # utils/src/stages/chat_stage.validation.ts
… in the prompt text
# Conflicts: # frontend/src/components/chat/chat_interface.ts # frontend/src/components/chat/chat_message.ts
Description
Experimenters can assign human participants to observe a Group Chat instead of participating directly. This can include a representative who discusses on behalf of the human.
This is the largest feature branch for our Pluralistic Agents study. To avoid expanding the menus of standard DL functionality, this is done through magic variables that begin with underscores (e.g.,
_isObserver), and users are warned if they coincidentally use these variable names. Some of this branch could be done with templates if that is better, but variables make sense because these would often not be universal across participants; in Pluralistic Agents, we will probably have human participants change between standard participation and observation midwayi_isObserver(boolean) makes the participant observe group chats instead of being a participant._hasRepresentative(boolean) spawns an AI agent representative of the observer in the group chat._skipPrivateChats(boolean) makes the participant skip private chats. In Pluralistic Agents, this is necessary for participants to be in a non-observer condition where they have no representative who private-chat interviews them before the group chat._swapMediator(string) is the mediator who is swapped in instead of the default mediator._numOtherAgents(integer) spawns independent AI agents to participate in the group chat._numInactivePersonas(integer) spawns personas who will not actively participate in group chat. In the Pluralistic Agents project, we use this so that a mediator can act as if it had private-chat interviewed other agents. The mediator can refer to them, but they do not actually show up as "participants" (e.g., in the participant list next to the group chat area).Additional content
additionalParticipantInstructionssetting on chat stages whose text is appended to AI participants' prompts for that stage, which we use in Pluralistic Agents to encourage persona-based agents to not be overreliant on their personas (e.g., bringing up their occupation in unrelated discussions).observers-representatives-dl-260703.webm