UNPKG

@lobehub/chat

Version:

Lobe Chat - an open-source, high-performance chatbot framework that supports speech synthesis, multimodal, and extensible Function Call plugin system. Supports one-click free deployment of your private ChatGPT/LLM web application.

91 lines (81 loc) 2.46 kB
import { Pricing, PricingUnit, PricingUnitName } from 'model-bank'; /** * Internal helper to extract the displayed unit rate from a pricing unit by strategy * - fixed → rate * - tiered → tiers[0].rate * - lookup → first price value */ const getRateFromUnit = (unit: PricingUnit): number | undefined => { switch (unit.strategy) { case 'fixed': { return unit.rate; } case 'tiered': { return unit.tiers?.[0]?.rate; } case 'lookup': { const prices = Object.values(unit.lookup?.prices || {}); return prices[0]; } default: { return undefined; } } }; /** * Get unit rate by unit name, used to deduplicate logic across helpers */ export const getUnitRateByName = ( pricing?: Pricing, unitName?: PricingUnitName, ): number | undefined => { if (!pricing?.units || !unitName) return undefined; const unit = pricing.units.find((u) => u.name === unitName); if (!unit) return undefined; return getRateFromUnit(unit); }; /** * Get text input unit rate from pricing * - fixed → rate * - tiered → tiers[0].rate * - lookup → Object.values(lookup.prices)[0] */ export function getTextInputUnitRate(pricing?: Pricing): number | undefined { return getUnitRateByName(pricing, 'textInput'); } /** * Get text output unit rate from pricing */ export function getTextOutputUnitRate(pricing?: Pricing): number | undefined { return getUnitRateByName(pricing, 'textOutput'); } /** * Get audio input unit rate from pricing */ export function getAudioInputUnitRate(pricing?: Pricing): number | undefined { return getUnitRateByName(pricing, 'audioInput'); } /** * Get audio output unit rate from pricing */ export function getAudioOutputUnitRate(pricing?: Pricing): number | undefined { return getUnitRateByName(pricing, 'audioOutput'); } /** * Get cached text input unit rate from pricing */ export function getCachedTextInputUnitRate(pricing?: Pricing): number | undefined { return getUnitRateByName(pricing, 'textInput_cacheRead'); } /** * Get write cache input unit rate from pricing (TextInputCacheWrite) */ export function getWriteCacheInputUnitRate(pricing?: Pricing): number | undefined { return getUnitRateByName(pricing, 'textInput_cacheWrite'); } /** * Get cached audio input unit rate from pricing */ export function getCachedAudioInputUnitRate(pricing?: Pricing): number | undefined { return getUnitRateByName(pricing, 'audioInput_cacheRead'); }