aiwg
Version:
Deployment tool and support utility for AI context. Copies agents, skills, commands, rules, and behaviors into the paths each AI platform reads (Claude Code, Codex, Copilot, Cursor, Warp, OpenClaw, and 6 more) so one source of truth works across 10 platfo
178 lines (148 loc) • 4.21 kB
YAML
# Cost Model Schema
# Schema for cost-model.yaml generated by aiwg nlp productionize and cost-analyst agent
$schema: "https://json-schema.org/draft/2020-12/schema"
$id: "https://aiwg.io/schemas/nlp-prod/cost-model/v1"
title: "NLP Pipeline Cost Model"
description: |
Schema for cost-model.yaml — the TCO model for a production pipeline.
Generated by the Cost Analyst agent and `aiwg nlp estimate-cost`.
Stored in the pipeline directory alongside pipeline.config.yaml.
type: object
required:
- version
- pipeline
- analyzed_at
- steps
- totals
properties:
version:
type: string
default: "1.0.0"
pipeline:
type: string
description: "Pipeline name"
analyzed_at:
type: string
format: date-time
monthly_volume:
type: integer
description: "Assumed monthly call volume for projections"
steps:
type: array
items:
$ref: "#/$defs/StepCost"
totals:
$ref: "#/$defs/TotalCost"
recommendations:
type: array
items:
$ref: "#/$defs/CostRecommendation"
$defs:
StepCost:
type: object
required:
- name
- model
- avg_input_tokens
- avg_output_tokens
- cost_per_call_usd
properties:
name:
type: string
model:
type: string
avg_input_tokens:
type: integer
avg_output_tokens:
type: integer
cost_per_call_usd:
type: number
cacheable_prefix_tokens:
type: integer
default: 0
description: "Tokens in stable system prompt prefix eligible for caching"
cache_savings_per_call_usd:
type: number
default: 0.0
description: "Per-call savings if prompt cache enabled"
parallelizable_with:
type: array
items:
type: string
description: "Names of steps with no data dependency (can run concurrently)"
TotalCost:
type: object
required:
- cost_per_call_usd
properties:
cost_per_call_usd:
type: number
monthly_cost_usd:
type: number
description: "Monthly cost without any optimizations"
monthly_cost_with_caching_usd:
type: number
description: "Monthly cost with prompt caching enabled"
monthly_cost_optimized_usd:
type: number
description: "Monthly cost after all recommended optimizations"
potential_savings_pct:
type: number
minimum: 0.0
maximum: 100.0
description: "Percentage savings from current to optimized"
CostRecommendation:
type: object
required:
- type
- action
- estimated_savings_pct
properties:
type:
type: string
enum: [model_downgrade, caching, parallelization, prompt_trim, batching]
step:
type: string
nullable: true
description: "Step this applies to (null if pipeline-wide)"
action:
type: string
description: "Specific action to take"
estimated_savings_pct:
type: number
minimum: 0.0
maximum: 100.0
risk:
type: string
enum: [low, medium, high]
default: low
validation:
type: string
description: "Command or method to verify the optimization doesn't regress quality"
# Example
examples:
- version: "1.0.0"
pipeline: product-extractor
analyzed_at: "2026-04-01T12:00:00Z"
monthly_volume: 100000
steps:
- name: extract
model: claude-haiku-4-5
avg_input_tokens: 800
avg_output_tokens: 200
cost_per_call_usd: 0.000090
cacheable_prefix_tokens: 320
cache_savings_per_call_usd: 0.000029
totals:
cost_per_call_usd: 0.000090
monthly_cost_usd: 9.00
monthly_cost_with_caching_usd: 6.10
monthly_cost_optimized_usd: 6.10
potential_savings_pct: 32.2
recommendations:
- type: caching
step: extract
action: "Enable prefix caching — system prompt is 320 tokens and stable across all calls"
estimated_savings_pct: 32.0
risk: low
validation: "Enable cache_prefix: true in pipeline.config.yaml; verify output quality unchanged"