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:
| Step | Resource | Description |
|---|---|---|
| 1. Create Personas | Personas | Define AI characters with instructions and parameter fields |
| 2. Assign to Scenarios | Scenarios | Build training situations and attach personas, documents, and objectives |
| 3. Add Scenarios to Simulations | Simulations | Bundle scenarios into a complete training session with rubrics and time limits |
| 4. Add Simulations to Cohorts | Cohorts | Assign simulations to groups of learners |
| 5. Run Attempts | Attempts | Learners 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 listSearch & 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
| Task | CLI | API |
|---|---|---|
| List all agents | glow agents search | POST /agent/search |
| Get one agent | glow agents get --body '{"agent_id": "..."}' | POST /agent/get |
| Create agents | glow agents create --body '{"agents": [...]}' | POST /agent/create |
| Update agents | glow agents update --body '{"agents": [...]}' | POST /agent/update |
| Duplicate an agent | — | POST /agent/duplicate |
| Delete agents | glow agents delete --body '{"agent_ids": [...]}' | POST /agent/delete |
| Bulk delete (filter) | glow agents delete --body '{"all": true, "filter_…": "…"}' | POST /agent/delete |
| Save a draft | glow agents draft --body '{...}' | PATCH /agent/draft |
| List drafts | glow agents list | POST /agent/drafts |
| Generate (smoke test) | — | POST /agent/generate |
| Export to CSV | glow agents export | POST /agent/export |
Related
- Agents API Reference — full endpoint schemas and field definitions
- Agents CLI Reference — all CLI commands and flags
- Simulations Guide — the training sessions that agents power
- Attempts Guide — the runtime sessions where agents process messages and grade
- Personas Guide — the AI characters (attached to scenarios, not agents) that agents bring to life
- Scenarios Guide — the training situations that define persona and document context