Skip to Content
Agents

Agents

Agents configure the AI engine that powers Glow simulations — they control which language model is used, what tools are available, how grading rubrics are applied, and voice and reasoning settings.

What is an Agent?

An agent is the configuration layer between your training content and the underlying AI model. It does not contain personas — personas are attached to Scenarios, not agents. Instead, an agent defines the technical and behavioral parameters of the AI engine itself.

An agent contains:

  • Name — a descriptive identifier for this configuration (e.g., “Default Simulation Agent”, “Advanced Grading Agent”)
  • Description — what this agent configuration is optimized for
  • Models — which language model(s) to use for conversations and grading
  • Tools — which tool integrations are available to the AI during the session
  • Rubrics — which evaluation rubrics the agent uses for grading (e.g., Communication Skills, Policy Knowledge, De-escalation)
  • Temperature Levels — controls response randomness (lower = more deterministic, higher = more creative)
  • Reasoning Levels — controls depth of reasoning the model applies
  • Voices — text-to-speech voice selection for audio-enabled simulations
  • Prompts — system-level prompt configuration
  • Instructions — agent-level behavioral instructions
  • Flags — boolean configuration settings
  • Departments — organizational groupings for access control
  • Qualities — quality-level configuration for output

Agents vs. Personas

This is a common point of confusion, so it is worth stating clearly:

  • Personas define who the learner is talking to — the AI character’s personality, speech patterns, and behavior. Personas are attached to scenarios.
  • Agents define how the AI engine operates — the model, temperature, tools, and grading criteria. Agents are a separate configuration layer.

A persona says “I am a confused student who starts sentences with ‘Uh…’.” An agent says “Use GPT-4o at temperature 0.7 with the de-escalation rubric.”

How Agents Connect to the Workflow

Agents operate alongside the content pipeline, providing the AI engine configuration that powers the entire system:

StepResourceDescription
1. Create PersonasPersonasDefine AI characters with instructions and parameter fields
2. Assign to ScenariosScenariosBuild training situations and attach personas, documents, and objectives
3. Add Scenarios to SimulationsSimulationsBundle scenarios into a complete training session with rubrics and time limits
4. Add Simulations to CohortsCohortsAssign simulations to groups of learners
5. Run AttemptsAttemptsLearners start attempts; the Agent powers the AI conversation and grading

The agent is the engine that processes every message, generates persona responses, produces hints, and evaluates performance against rubrics.


Create an agent

Via the CLI

Calls below use $GLOW_INSTANCE_URL + $GLOW_TOKEN — see Authentication to export them once.

glow agents create --body '{ "agents": [{ "name": "Default Simulation Agent", "description": "Standard agent configuration for university training simulations" }] }'

Via the API

curl -X POST $GLOW_INSTANCE_URL/agent/create \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $GLOW_TOKEN" \ -d '{ "agents": [{ "name": "Default Simulation Agent", "description": "Standard agent configuration for university training simulations" }] }'

Each entry returns the new agent_id, the generated draft_id, and the initial version for optimistic-concurrency follow-ups.


Wiring models, tools, and rubrics

Models

The model selection determines which AI model processes conversations and grading. Configure models through the draft endpoint:

glow agents draft --body '{ "input_draft_id": "agent-draft-uuid", "model_ids": ["model-uuid-1"] }'
curl -X PATCH $GLOW_INSTANCE_URL/agent/draft \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $GLOW_TOKEN" \ -d '{ "input_draft_id": "agent-draft-uuid", "model_ids": ["model-uuid-1"] }'

You can search agents by model using the filter_model_ids parameter:

curl -X POST $GLOW_INSTANCE_URL/agent/search \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $GLOW_TOKEN" \ -d '{"filter_model_ids": ["model-uuid-1"]}'

Tools

Tools extend the agent’s capabilities during a simulation. Attach tools through the draft:

glow agents draft --body '{ "input_draft_id": "agent-draft-uuid", "tool_ids": ["tool-uuid-1", "tool-uuid-2"] }'

Filter agents by tools:

glow agents search --body '{"filter_tool_ids": ["tool-uuid-1"]}'

Rubrics

Rubrics define the evaluation criteria the agent uses when grading learner performance. The university seed data includes rubrics like Communication Skills, Policy Knowledge, and De-escalation.

glow agents draft --body '{ "input_draft_id": "agent-draft-uuid", "rubric_ids": ["communication-skills-uuid", "policy-knowledge-uuid", "de-escalation-uuid"] }'

Tuning temperature, reasoning, and voice

Temperature Levels

Temperature controls the randomness of the AI’s responses. Lower values produce more consistent, predictable responses. Higher values produce more varied, creative responses.

glow agents draft --body '{ "input_draft_id": "agent-draft-uuid", "temperature_level_ids": ["temperature-level-uuid"] }'

For training simulations where consistency matters (e.g., policy training), use lower temperature. For open practice where variety is beneficial, consider higher temperature.

Reasoning Levels

Reasoning levels control how much deliberation the AI applies before responding. Higher reasoning produces more thoughtful responses but takes longer.

glow agents draft --body '{ "input_draft_id": "agent-draft-uuid", "reasoning_level_ids": ["reasoning-level-uuid"] }'

Voices

Voices determine the text-to-speech output when audio mode is enabled in a simulation. Different voices can match the persona’s character (e.g., a younger voice for a student persona, a more authoritative voice for a professor).

glow agents draft --body '{ "input_draft_id": "agent-draft-uuid", "voice_ids": ["voice-uuid"] }'

Generate sub-op

The agent surface exposes a generate sub-op (POST /agent/generate) that runs the configured engine end-to-end against an arbitrary input — handy for sanity-checking a wired agent before pointing real learner traffic at it.

Use this in your own scripts to smoke-test an agent after edits or to wire it into batch grading flows. See the Agents API Reference for the exact request shape.


The draft cycle

Agents use the same draft system as other Glow resources. All configuration changes go through the draft endpoint, with expected_version providing optimistic concurrency so concurrent edits surface a conflict instead of silently clobbering each other.

# Create or update a draft with full configuration glow agents draft --body '{ "input_draft_id": "existing-draft-uuid", "expected_version": 3, "name": "Advanced Grading Agent", "description": "High-reasoning agent with strict rubric evaluation", "model_ids": ["model-uuid"], "tool_ids": ["tool-uuid-1"], "rubric_ids": ["communication-uuid", "policy-uuid"], "temperature_level_ids": ["low-temp-uuid"], "reasoning_level_ids": ["high-reasoning-uuid"], "voice_ids": ["voice-uuid"] }'
# Via API curl -X PATCH $GLOW_INSTANCE_URL/agent/draft \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $GLOW_TOKEN" \ -d '{ "input_draft_id": "existing-draft-uuid", "expected_version": 3, "name": "Advanced Grading Agent", "description": "High-reasoning agent with strict rubric evaluation" }'

List your drafts:

glow agents list

Search & filter

# Simple text search glow agents search --body '{"search": "grading"}' # Facet filters glow agents search --body '{ "filter_model_ids": ["model-uuid-1"], "filter_tool_ids": ["tool-uuid-1"], "page_size": 25 }'

The response includes hydrated agent rows plus facet sections (model_filter, tool_filter, department_filter, …) so the UI can render dropdowns without a second round-trip.


Bulk operations

Bulk delete and update follow the canonical all-matching shape — explicit IDs, or all: true with flat filter fields plus optional excluded_ids and a patch body. The persona surface is the prove-out; agents adopt the same shape.

Delete by explicit IDs:

glow agents delete --body '{ "agent_ids": ["agent-1", "agent-2", "agent-3"] }'

Delete all matching a filter (with exclusions):

glow agents delete --body '{ "all": true, "filter_department_ids": ["dept-deprecated"], "excluded_ids": ["agent-keep-this-one"] }'

Bulk update via patch:

glow agents update --body '{ "all": true, "filter_model_ids": ["model-old-uuid"], "patch": { "archived": true } }'

Common Operations

TaskCLIAPI
List all agentsglow agents searchPOST /agent/search
Get one agentglow agents get --body '{"agent_id": "..."}'POST /agent/get
Create agentsglow agents create --body '{"agents": [...]}'POST /agent/create
Update agentsglow agents update --body '{"agents": [...]}'POST /agent/update
Duplicate an agentPOST /agent/duplicate
Delete agentsglow agents delete --body '{"agent_ids": [...]}'POST /agent/delete
Bulk delete (filter)glow agents delete --body '{"all": true, "filter_…": "…"}'POST /agent/delete
Save a draftglow agents draft --body '{...}'PATCH /agent/draft
List draftsglow agents listPOST /agent/drafts
Generate (smoke test)POST /agent/generate
Export to CSVglow agents exportPOST /agent/export
Last updated on