Skip to content

Conversation

@ammar-agent
Copy link
Collaborator

@ammar-agent ammar-agent commented Dec 12, 2025

Summary

Consolidate duplicated OpenAI service_tier enum definitions into a single source of truth, and implement service tier-aware cost calculations.

Changes

  • Create OPENAI_SERVICE_TIERS constant array and OpenAIServiceTier type in providers.ts
  • Add isValidServiceTier() type guard for runtime validation
  • Add OPENAI_DEFAULT_SERVICE_TIER constant ("auto")
  • Replace all hardcoded enum definitions with the shared constant
  • Implement service tier cost calculations in displayUsage.ts

Cost Calculation Implementation

Service tiers have different pricing from OpenAI:

  • flex: ~50% cheaper (uses input_cost_per_token_flex, output_cost_per_token_flex)
  • priority: premium pricing (~2x, uses input_cost_per_token_priority, output_cost_per_token_priority)
  • default/auto: standard pricing

The actual service tier is read from the response providerMetadata.openai.serviceTier (not the requested tier), ensuring accurate cost display even when priority requests are downgraded to standard.

Files Changed

  • src/common/constants/providers.ts - new constants and type guard
  • src/common/orpc/schemas/api.ts - use shared constant
  • src/common/orpc/schemas/providerOptions.ts - use shared constant
  • src/node/services/aiService.ts - use type guard
  • src/node/services/providerService.ts - use type guard
  • src/browser/components/Settings/sections/ProvidersSection.tsx - use constants
  • src/common/utils/tokens/displayUsage.ts - implement tier-based pricing
  • src/common/utils/tokens/displayUsage.test.ts - add service tier cost tests
  • src/common/utils/tokens/modelStats.ts - add tier-specific cost fields
  • src/common/utils/ai/providerOptions.ts - use default constant

Generated with mux

- Create OPENAI_SERVICE_TIERS constant array and OpenAIServiceTier type
- Add isValidServiceTier type guard for validation
- Add OPENAI_DEFAULT_SERVICE_TIER constant (auto)
- Replace all duplicated enum definitions with shared constant
- Add TODO for cost calculation adjustments based on service tier

Service tiers have different pricing:
- flex: ~50% cheaper (Batch API rates)
- priority: premium pricing
- default/auto: standard pricing

_Generated with mux_
- Add tier-specific cost fields to ModelStats (flex, priority)
- Extract pricing data from models.json (already has flex/priority rates)
- Apply tier-adjusted pricing based on serviceTier from OpenAI response
- Add tests for service tier cost adjustments
Address review feedback:
- Rename isValidServiceTier to isValidOpenAIServiceTier (namespacing)
- Replace verbose tier-specific cost fields with standard multipliers
- Add OPENAI_SERVICE_TIER_COST_MULTIPLIERS constant (flex: 0.5x, priority: 2x)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant