diff --git a/README.md b/README.md index da26c6fdb..3379f6e6b 100644 --- a/README.md +++ b/README.md @@ -106,6 +106,8 @@ cache_read = 0.30 # Cost per million cached read tokens (USD) cache_write = 3.75 # Cost per million cached write tokens (USD) input_audio = 1.00 # Cost per million audio input tokens (USD) output_audio = 10.00 # Cost per million audio output tokens (USD) +input_image = 0.45 # Cost per million image input tokens (USD) +input_video = 12.00 # Cost per million video input tokens (USD) [limit] context = 400_000 # Maximum context window (tokens) @@ -202,6 +204,8 @@ Models must conform to the following schema, as defined in `packages/core/src/sc - `cost.cache_write` _(optional)_: Number — Cost per million cached write tokens (USD) - `cost.input_audio` _(optional)_: Number — Cost per million audio input tokens, if billed separately (USD) - `cost.output_audio` _(optional)_: Number — Cost per million audio output tokens, if billed separately (USD) +- `cost.input_image` _(optional)_: Number — Cost per million image input tokens, if billed separately (USD) +- `cost.input_video` _(optional)_: Number — Cost per million video input tokens, if billed separately (USD) - `limit.context`: Number — Maximum context window (tokens) - `limit.input`: Number — Maximum input tokens - `limit.output`: Number — Maximum output tokens diff --git a/packages/core/src/schema.ts b/packages/core/src/schema.ts index 064782cf3..ee73008e8 100644 --- a/packages/core/src/schema.ts +++ b/packages/core/src/schema.ts @@ -45,6 +45,14 @@ const Cost = z .number() .min(0, "Audio output price cannot be negative") .optional(), + input_image: z + .number() + .min(0, "Image input price cannot be negative") + .optional(), + input_video: z + .number() + .min(0, "Video input price cannot be negative") + .optional(), }); const CostTier = Cost.extend({ diff --git a/packages/web/src/index.css b/packages/web/src/index.css index 3dd25505e..f5a3b0316 100644 --- a/packages/web/src/index.css +++ b/packages/web/src/index.css @@ -294,13 +294,15 @@ tbody { td:nth-child(13), td:nth-child(14), td:nth-child(15), - td:nth-child(16) { + td:nth-child(16), + td:nth-child(17), + td:nth-child(18) { color: var(--color-text); } td:nth-child(5), td:nth-child(6), - td:nth-child(18) { + td:nth-child(24) { font-size: 0.8125rem; font-family: var(--font-mono); text-transform: uppercase; @@ -316,7 +318,9 @@ tbody { td:nth-child(14), td:nth-child(15), td:nth-child(16), - td:nth-child(17) { + td:nth-child(17), + td:nth-child(18), + td:nth-child(19) { font-size: 0.8125rem; font-family: var(--font-mono); } diff --git a/packages/web/src/index.ts b/packages/web/src/index.ts index 29beab273..fbe5d0d85 100644 --- a/packages/web/src/index.ts +++ b/packages/web/src/index.ts @@ -145,6 +145,8 @@ function prepareRow(row: TableRow): VirtualizedRow { row.cacheWriteCost, row.audioInputCost, row.audioOutputCost, + row.imageInputCost, + row.videoInputCost, row.contextLimit, row.inputLimit, row.outputLimit, diff --git a/packages/web/src/render.tsx b/packages/web/src/render.tsx index cd0106f08..42bc76cad 100644 --- a/packages/web/src/render.tsx +++ b/packages/web/src/render.tsx @@ -90,6 +90,8 @@ export const TableRows: TableRow[] = Object.entries(Providers) cacheWriteCost: model.cost?.cache_write, audioInputCost: model.cost?.input_audio, audioOutputCost: model.cost?.output_audio, + imageInputCost: model.cost?.input_image, + videoInputCost: model.cost?.input_video, contextLimit: model.limit.context, inputLimit: model.limit.input, outputLimit: model.limit.output, @@ -239,6 +241,26 @@ export const Rendered = renderToString( +