Skip to main content
An experimental condition is a version of the material or situation you want to compare: a different message, price, policy, or product description. In EDSL, scenarios hold those versions, while a shared question defines how each version will be evaluated. Keeping the question and response options the same makes the answers easier to compare. This page builds a small message test: does an instruction that names the file format receive different clarity ratings from a shorter instruction? Four agent profiles evaluate both messages. You will learn how to combine scenarios and agents, run all their combinations, and keep the condition and profile information alongside each answer.

Define what varies

The example represents two kinds of variation separately. The messages ScenarioList supplies what is being evaluated: a short message and a more explicit message. The AgentList supplies the perspective used to evaluate it: new or experienced users, each acting as an individual contributor or team lead.

Execute the design

Chaining .by(agents).by(messages) gives every profile both messages, in separate interviews. Four profiles times two messages produces eight interviews per model and iteration, each answering the same clarity question. This is a crossed design: EDSL runs every combination of the supplied lists. With model access configured, the following code uses the default model. You can replace Model() with a model you select. First view the answers together with the variables that produced them:
The resulting table has eight rows. scenario.condition identifies the message, agent.experience and agent.role identify the profile, and answer.clarity contains its rating. To count the ratings for each message in pandas:
These counts summarize the four configured profiles for each message. Keep the profile columns when you want to see whether a difference is concentrated among new users or team leads, rather than looking only at the totals. The responses describe these model-generated evaluations; the profiles are not recruited human participants.

Choose a different assignment pattern

Crossing is useful when every profile should evaluate every condition. Other designs call for a different relationship between the inputs: For additional factors such as price and message wording, construct scenarios containing each combination you want to test. To compare the same design across models, attach a ModelList as shown in Comparing models. Each added profile, condition, or model increases the number of interviews, which you can inspect and estimate costs for before running.