Models
Models define the LLM configurations that power AI student personas during office hour simulations. Each model wraps a specific LLM (such as gpt-4o or claude-3-opus) with settings for temperature, reasoning level, modalities, and pricing, and links back to the provider that supplies the underlying API.
What is a Model?
A model in Glow represents a configured LLM identity. It connects an external language model to the platform by pairing it with a provider, quality tier, and feature flags. Models are then attached to agents through the agent_models_junction, giving each agent a specific conversational capability during simulations.
For example, a university might configure a gpt-4o-sim model with medium temperature and text-only modality for TA training conversations, and a separate claude-3-haiku-quick model for rapid policy-lookup agents.
How it Connects
Provider --> Model --> Agent (via agent_models_junction)
|
+--> Eval (via eval model_ids)- Provider supplies the LLM backend (API keys, endpoints). Every model has a
provider_id. - Agent uses one or more models through the
agent_models_junctiontable. The model determines which LLM powers that agent’s conversations. - Eval references models through
model_idsso that evaluation runs can score performance across different LLM configurations.
Create a model
Via the CLI
Calls below use
$GLOW_INSTANCE_URL+$GLOW_TOKEN— see Authentication to export them once.
glow models create --body '{
"models": [{
"name": "gpt-4o-sim",
"description": "GPT-4o configured for student persona simulations",
"provider_ids": ["PROVIDER_UUID"]
}]
}'Via the API
curl -X POST $GLOW_INSTANCE_URL/model/create \
-H "Authorization: Bearer $GLOW_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"models": [{
"name": "gpt-4o-sim",
"description": "GPT-4o for TA training simulations",
"provider_ids": ["PROVIDER_UUID"]
}]
}'Each entry returns the new model_id, the generated draft_id, and the initial version.
Provider linking
Every model requires at least one provider. The provider_ids field connects the model to the provider that holds the API endpoint and credentials. When you search models, the response includes provider_id and provider_name for each entry, along with filter_provider_ids for filtering.
# Filter models by provider
curl -X POST $GLOW_INSTANCE_URL/model/search \
-H "Authorization: Bearer $GLOW_TOKEN" \
-H "Content-Type: application/json" \
-d '{"filter_provider_ids": ["OPENAI_PROVIDER_UUID"]}'Capabilities and feature flags
Models support several capability dimensions configured through resource IDs:
| Dimension | Field | Purpose |
|---|---|---|
| Modalities | modality_ids | Text, image, audio, video support |
| Temperature | temperature_level_ids | Controls response randomness |
| Reasoning | reasoning_level_ids | Depth of chain-of-thought |
| Quality | quality_ids | Output quality tier |
| Pricing | pricing_ids | Cost tier classification |
| Voice | voice_ids | TTS voice selection |
Use flag_ids to toggle boolean capabilities like image_model or active/inactive status.
The draft cycle
Models support a draft workflow for staging changes before publishing. Use the draft system to preview configuration changes without affecting running simulations.
# Create or update a draft
glow models draft --body '{
"name": "gpt-4o-sim-v2",
"description": "Updated temperature for more natural conversation",
"temperature_level_ids": ["MEDIUM_TEMP_UUID"],
"provider_ids": ["OPENAI_PROVIDER_UUID"]
}'
# List your drafts
glow models listThe draft endpoint uses PATCH semantics with optimistic concurrency via expected_version. The response returns a draft_id, new_version, and the server-authoritative form_state.
Search & filter
# Free-text search
glow models search --body '{"search": "gpt-4o"}'
# Facet filter: only OpenAI text models in CS
glow models search --body '{
"filter_provider_ids": ["OPENAI_PROVIDER_UUID"],
"filter_department_ids": ["CS_DEPT_UUID"],
"page_size": 25
}'The response includes a department_filter, provider_filter, and modality facets with available options, counts, and selected IDs for building filter UIs.
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; models follow the same shape.
Delete by explicit IDs:
glow models delete --body '{
"model_ids": ["model-1", "model-2"]
}'Delete all matching a filter (with exclusions):
glow models delete --body '{
"all": true,
"filter_provider_ids": ["deprecated-provider-uuid"],
"excluded_ids": ["model-still-in-use"]
}'Bulk update via patch:
glow models update --body '{
"all": true,
"filter_provider_ids": ["old-provider-uuid"],
"patch": { "provider_ids": ["new-provider-uuid"] }
}'Common Operations
| Task | CLI | API Endpoint |
|---|---|---|
| List all models | glow models search | POST /model/search |
| Get model details | glow models get --body '{"model_id": "..."}' | POST /model/get |
| Create model | glow models create --body '{...}' | POST /model/create |
| Update model | glow models update --body '{"model_id": "...", ...}' | POST /model/update |
| Duplicate model | glow models create --body '{...}' | POST /model/duplicate |
| Delete model(s) | glow models delete --body '{"model_id": "..."}' | POST /model/delete |
| Bulk delete (filter) | glow models delete --body '{"all": true, "filter_…": "…"}' | POST /model/delete |
| Export to CSV | glow models export | POST /model/export |
| Stage a draft | glow models draft --body '{...}' | PATCH /model/draft |
| List drafts | glow models list | POST /model/drafts |
Related
- Models API Reference — full endpoint and type documentation
- Models CLI Reference — all CLI commands
- Providers Guide — set up the LLM backend a model connects to
- Evals Guide — evaluate model performance across simulations