LLM and bot participants

Drive Behaverse tasks with simulated participants – random, built-in, or LLM-powered bots

A Behaverse task is normally completed by a human participant. Setting its agentType to bot hands the task to a simulated participant instead, which is useful for:

Response sources

Bot behavior is configured per task in the botConfigurations YAML property. The ResponseSource field selects the policy:

ResponseSource Behavior
internal Unity’s built-in bot, shipped with the Behaverse runtime.
external Uniform random responses, generated outside the task.
llm Responses generated by an LLM (Claude or Ollama), optionally with vision.

LLM provider setup

Global LLM defaults live in the modeler’s Settings: provider (claude or ollama), model, and the Ollama endpoint URL (default http://localhost:11434). A task’s botConfigurations can override the provider and model per task via the LLM: block.

botConfigurations

A worked example from the shipped bot_claude.studyflow – a “tired participant” persona playing a 1-back warm-up block:

ResponseSource: llm
LLM:
  Provider: claude
  Model: claude-haiku-4-5
Prompt: |
  You are a tired participant near the end of a long 1-back session.
  Aim for about 80% accuracy. Occasionally miss matches when your
  attention drifts. Never explain; reply with exactly Match or NonMatch.
Speed: 20
SkipInstructions: true

The key fields:

  • Prompt – free-form persona/system prompt. Be explicit about the expected answer format (“reply with exactly Match or NonMatch”) so responses parse cleanly.
  • IncludeScreenshot: true – attaches a PNG frame of the task to each request, for visual tasks that need a vision-capable model (e.g. WhichOne).
  • Speed – bot pacing multiplier.
  • SkipInstructions – skip the instruction screens, which the bot does not need.
  • MaxResponseTime – LLM round-trips are slower than human key presses; bump MaxResponseTime in the task’s configurations (and/or maxResponseTime in botConfigurations) so the bot is not timed out mid-request.

See the property descriptions in src/assets/schemas/behaverse.moddle.yaml for the full vocabulary.

Shipped examples

Three ready-to-run examples are available from the modeler’s Examples menu (sources in src/assets/examples/):

  • bot_claude.studyflow – Claude-powered bots with distinct personas, including a vision task via IncludeScreenshot.
  • bot_ollama.studyflow – the same pattern against a local Ollama server.
  • bot_external.studyflow – uniform random responses, no LLM required.

What’s next