Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs/astro.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -331,6 +331,7 @@ export default defineConfig({
{ label: 'Cost Management', link: '/reference/cost-management/' },
{ label: 'Cost Management (Rate Limiting)', link: '/reference/rate-limiting-controls/' },
{ label: 'Cost Management (Effective Tokens)', link: '/reference/effective-tokens-specification/' },
{ label: 'Cost Management (Model Tables)', link: '/reference/model-tables/' },
{ label: 'Environment Variables', link: '/reference/environment-variables/' },
{ label: 'FAQ', link: '/reference/faq/' },
{ label: 'Footers', link: '/reference/footers/' },
Expand Down
3 changes: 2 additions & 1 deletion docs/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,14 @@
"scripts": {
"dev": "astro dev",
"start": "astro dev",
"prebuild": "npm run generate-agent-factory && npm run build:slides",
"prebuild": "npm run generate-agent-factory && npm run generate-model-tables && npm run build:slides",
"build": "astro build",
"build:slides": "mkdir -p public/js && cp node_modules/mermaid/dist/mermaid.min.js public/js/ && npx @marp-team/marp-cli slides/index.md --html --allow-local-files --theme slides/gh-aw-theme.css -o public/slides/index.html && mkdir -p public/slides && cp slides/*.pdf public/slides/",
"preview": "astro preview",
"astro": "astro",
"validate-links": "astro build",
"generate-agent-factory": "cd .. && node scripts/generate-agent-factory.js",
"generate-model-tables": "cd .. && node scripts/generate-model-tables.js",
"test": "playwright test",
Comment on lines +8 to 16
"test:ui": "playwright test --ui",
"test:debug": "playwright test --debug"
Expand Down
154 changes: 154 additions & 0 deletions docs/src/content/docs/reference/model-tables.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,154 @@
---
title: Model Aliases & Multipliers
description: Reference tables for the built-in model alias map and per-model Effective Token multipliers used by GitHub Agentic Workflows.
sidebar:
order: 297
---

This page lists the built-in model aliases and the per-model Effective Token (ET) multipliers used by GitHub Agentic Workflows.

> [!CAUTION]
> The multiplier values shown on this page are **approximations**. They are used solely for the purpose of normalising token usage across models into a single comparable metric (Effective Tokens) and do **not** represent precise cost ratios. Values may be inaccurate for specific model versions and may become out of date as providers update their offerings. Do not use these numbers for billing or financial calculations.

## Model Aliases

Model aliases let you write `engine: copilot` with a human-friendly model name such as `sonnet` or `mini`, and gh-aw resolves it to the best available concrete model at compile time. Each alias holds an ordered list of patterns; the first pattern that matches an available model wins.

For details on the alias syntax, fallback resolution algorithm, and how to define your own aliases in workflow frontmatter, see the [Model Alias Format Specification](/gh-aw/reference/model-alias-specification/).

### Vendor Aliases

Vendor aliases map a short name to one or more provider-scoped glob patterns. The Copilot gateway is always tried first.

| Alias | Fallback patterns (tried in order) |
|-------|-------------------------------------|
| `sonnet` | `copilot/*sonnet*`, `anthropic/*sonnet*` |
| `haiku` | `copilot/*haiku*`, `anthropic/*haiku*` |
| `opus` | `copilot/*opus*`, `anthropic/*opus*` |
| `gpt-4.1` | `copilot/gpt-4.1*`, `openai/gpt-4.1*` |
| `gpt-5` | `copilot/gpt-5*`, `openai/gpt-5*` |
| `gpt-5-mini` | `copilot/gpt-5*mini*`, `openai/gpt-5*mini*` |
| `gpt-5-nano` | `copilot/gpt-5*nano*`, `openai/gpt-5*nano*` |
| `gpt-5-codex` | `copilot/gpt-5*codex*`, `openai/gpt-5*codex*` |
| `gpt-5-pro` | `copilot/gpt-5*pro*`, `openai/gpt-5*pro*` |
| `reasoning` | `copilot/o1*`, `copilot/o3*`, `copilot/o4*`, `openai/o1*`, `openai/o3*`, `openai/o4*` |
| `gemini-flash` | `copilot/gemini-*flash*`, `google/gemini-*flash*` |
| `gemini-pro` | `copilot/gemini-*pro*`, `google/gemini-*pro*` |
| `deep-research` | `copilot/deep-research*`, `google/deep-research*` |

### Meta-Aliases

Meta-aliases reference other aliases by name. They are resolved recursively until a concrete pattern is reached.

| Meta-alias | Expands to |
|------------|------------|
| `small` | `mini` |
| `mini` | `haiku` → `gpt-5-mini` → `gpt-5-nano` → `gemini-flash` |
| `large` | `sonnet` → `gpt-5-pro` → `gpt-5` → `gemini-pro` |
| `auto` | `large` |

## Model Multipliers

Effective Token multipliers scale the weighted token total for each model relative to the reference model (`claude-sonnet-4.5`, multiplier = 1.0). A multiplier of 5.0 means that a run on that model counts as five times as many Effective Tokens as the same run on the reference model.

See the [Effective Tokens Specification](/gh-aw/reference/effective-tokens-specification/) for the full formula.

### Token Class Weights

Before per-model multipliers are applied, raw token counts are weighted by token class:

| Token class | Default weight |
|-------------|---------------|
| Input | 1 |
| Cached Input | 0.1 |
| Output | 4 |
| Reasoning | 4 |
| Cache Write | 1 |

### Per-Model Multipliers

### Anthropic

| Model | Multiplier |
|-------|-----------|
| `claude-haiku-4-5` | 0.1 |
| `claude-haiku-4.5` | 0.1 |
| `claude-3-5-haiku` | 0.1 |
| `claude-3-haiku` | 0.1 |
| `claude-sonnet-4` | 1 |
| `claude-sonnet-4-5` | 1 |
| `claude-sonnet-4.5` | 1 |
| `claude-sonnet-4.6` | 1 |
| `claude-3-5-sonnet` | 1 |
| `claude-3-7-sonnet` | 1 |
| `claude-3-sonnet` | 1 |
| `claude-opus-4` | 5 |
| `claude-opus-4-1` | 5 |
| `claude-opus-4-5` | 5 |
| `claude-opus-4-6` | 5 |
| `claude-opus-4-7` | 5 |
| `claude-opus-4.5` | 5 |
| `claude-opus-4.6` | 5 |
| `claude-3-5-opus` | 5 |
| `claude-3-opus` | 5 |

### OpenAI

| Model | Multiplier |
|-------|-----------|
| `gpt-4o` | 1 |
| `gpt-4o-mini` | 0.1 |
| `gpt-4.1` | 1 |
| `gpt-4.1-2025-04-14` | 1 |
| `gpt-41-copilot` | 1 |
| `gpt-4.1-mini` | 0.1 |
| `gpt-4.1-nano` | 0.05 |
| `gpt-4-turbo` | 1 |
| `gpt-4` | 1 |
| `gpt-5` | 1 |
| `gpt-5-mini` | 0.33 |
| `gpt-5-nano` | 0.05 |
| `gpt-5-pro` | 2 |
| `gpt-5.1` | 1 |
| `gpt-5.1-codex` | 1 |
| `gpt-5.1-codex-mini` | 0.33 |
| `gpt-5.1-codex-max` | 1 |
| `gpt-5.2` | 1 |
| `gpt-5.2-codex` | 1 |
| `gpt-5.2-pro` | 2 |
| `gpt-5.3-codex` | 1 |
| `gpt-5.4` | 1 |
| `gpt-5.4-mini` | 0.33 |
| `gpt-5.4-pro` | 2 |
| `gpt-5.5` | 1 |
| `gpt-5.5-pro` | 2 |

### OpenAI Reasoning

| Model | Multiplier |
|-------|-----------|
| `o1` | 3 |
| `o1-mini` | 0.5 |
| `o1-pro` | 10 |
| `o3` | 3 |
| `o3-mini` | 0.5 |
| `o3-pro` | 10 |
| `o4-mini` | 0.5 |

### Google

| Model | Multiplier |
|-------|-----------|
| `gemini-2.5-pro` | 1 |
| `gemini-2.5-flash` | 0.2 |
| `gemini-2.5-flash-image` | 0.2 |
| `gemini-2.5-flash-lite` | 0.1 |
| `gemini-2.0-flash` | 0.1 |
| `gemini-1.5-pro` | 1 |
| `gemini-1.5-flash` | 0.1 |
| `gemini-3-flash-preview` | 0.33 |
| `gemini-3-pro-preview` | 6 |
| `gemini-3-pro-image-preview` | 6 |
| `gemini-3.1-pro-preview` | 6 |
| `gemini-3.1-flash-lite-preview` | 0.1 |
| `gemini-3.1-flash-image-preview` | 0.33 |
80 changes: 80 additions & 0 deletions pkg/cli/data/model_aliases.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
{
"version": "1",
"description": "Built-in model alias map for GitHub Agentic Workflows. Each key is an alias name; the value is an ordered list of model patterns tried in sequence until one resolves.",
"aliases": {
"sonnet": [
"copilot/*sonnet*",
"anthropic/*sonnet*"
],
"haiku": [
"copilot/*haiku*",
"anthropic/*haiku*"
],
"opus": [
"copilot/*opus*",
"anthropic/*opus*"
],
"gpt-4.1": [
"copilot/gpt-4.1*",
"openai/gpt-4.1*"
],
"gpt-5": [
"copilot/gpt-5*",
"openai/gpt-5*"
],
"gpt-5-mini": [
"copilot/gpt-5*mini*",
"openai/gpt-5*mini*"
],
"gpt-5-nano": [
"copilot/gpt-5*nano*",
"openai/gpt-5*nano*"
],
"gpt-5-codex": [
"copilot/gpt-5*codex*",
"openai/gpt-5*codex*"
],
"gpt-5-pro": [
"copilot/gpt-5*pro*",
"openai/gpt-5*pro*"
],
"reasoning": [
"copilot/o1*",
"copilot/o3*",
"copilot/o4*",
"openai/o1*",
"openai/o3*",
"openai/o4*"
],
"gemini-flash": [
"copilot/gemini-*flash*",
"google/gemini-*flash*"
],
"gemini-pro": [
"copilot/gemini-*pro*",
"google/gemini-*pro*"
],
"deep-research": [
"copilot/deep-research*",
"google/deep-research*"
],
"small": [
"mini"
],
"mini": [
"haiku",
"gpt-5-mini",
"gpt-5-nano",
"gemini-flash"
],
"large": [
"sonnet",
"gpt-5-pro",
"gpt-5",
"gemini-pro"
],
"auto": [
"large"
]
}
}
Loading
Loading