Skip to Content
Models

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_junction table. The model determines which LLM powers that agent’s conversations.
  • Eval references models through model_ids so 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:

DimensionFieldPurpose
Modalitiesmodality_idsText, image, audio, video support
Temperaturetemperature_level_idsControls response randomness
Reasoningreasoning_level_idsDepth of chain-of-thought
Qualityquality_idsOutput quality tier
Pricingpricing_idsCost tier classification
Voicevoice_idsTTS 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 list

The 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

TaskCLIAPI Endpoint
List all modelsglow models searchPOST /model/search
Get model detailsglow models get --body '{"model_id": "..."}'POST /model/get
Create modelglow models create --body '{...}'POST /model/create
Update modelglow models update --body '{"model_id": "...", ...}'POST /model/update
Duplicate modelglow 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 CSVglow models exportPOST /model/export
Stage a draftglow models draft --body '{...}'PATCH /model/draft
List draftsglow models listPOST /model/drafts

Last updated on