diff --git a/packages/proxy/schema/model_list.json b/packages/proxy/schema/model_list.json index c8837c32..e3a9eb74 100644 --- a/packages/proxy/schema/model_list.json +++ b/packages/proxy/schema/model_list.json @@ -265,6 +265,7 @@ "gpt-6-luna": { "format": "openai", "flavor": "chat", + "supports_decisions": true, "multimodal": true, "input_cost_per_mil_tokens": 0.1, "output_cost_per_mil_tokens": 0.5, @@ -23544,7 +23545,7 @@ }, "jev-1.14.0": { "format": "typesafe", - "flavor": "evaluation", + "flavor": "decisions", "input_cost_per_mil_tokens": 0.042, "output_cost_per_mil_tokens": 0, "displayName": "Jev 1.14", @@ -23554,7 +23555,7 @@ }, "jev-preview": { "format": "typesafe", - "flavor": "evaluation", + "flavor": "decisions", "input_cost_per_mil_tokens": 0.042, "output_cost_per_mil_tokens": 0, "displayName": "jev-preview", @@ -23565,7 +23566,7 @@ }, "jev-latest": { "format": "typesafe", - "flavor": "evaluation", + "flavor": "decisions", "input_cost_per_mil_tokens": 0.042, "output_cost_per_mil_tokens": 0, "displayName": "jev-latest", @@ -23576,7 +23577,7 @@ }, "jev-1.13.0": { "format": "typesafe", - "flavor": "evaluation", + "flavor": "decisions", "input_cost_per_mil_tokens": 0.042, "output_cost_per_mil_tokens": 0, "displayName": "Jev 1.13", diff --git a/packages/proxy/schema/models.test.ts b/packages/proxy/schema/models.test.ts index f8b3d69b..9a4d01ab 100644 --- a/packages/proxy/schema/models.test.ts +++ b/packages/proxy/schema/models.test.ts @@ -136,7 +136,7 @@ it.each(["jev-1.13.0", "jev-latest", "jev-preview"] as const)( (model) => { expect(raw_models[model]).toMatchObject({ format: "typesafe", - flavor: "evaluation", + flavor: "decisions", available_providers: ["typesafe"], input_cost_per_mil_tokens: 0.042, output_cost_per_mil_tokens: 0, diff --git a/packages/proxy/schema/models.ts b/packages/proxy/schema/models.ts index 76c741f4..51f9941d 100644 --- a/packages/proxy/schema/models.ts +++ b/packages/proxy/schema/models.ts @@ -9,6 +9,7 @@ export const ModelFlavors = [ "completion", "embedding", "evaluation", + "decisions", "realtime", "live", ] as const; @@ -164,6 +165,12 @@ export const ModelSchema = z.object({ .boolean() .nullish() .describe("The model supports native streaming responses."), + supports_decisions: z + .boolean() + .nullish() + .describe( + "The model answers decision requests (POST /v1/decisions): typed answers to questions about an input.", + ), streaming_only: z .boolean() .nullish() diff --git a/packages/proxy/scripts/sync_typesafe.test.ts b/packages/proxy/scripts/sync_typesafe.test.ts index c79b89d4..4e72f1a6 100644 --- a/packages/proxy/scripts/sync_typesafe.test.ts +++ b/packages/proxy/scripts/sync_typesafe.test.ts @@ -101,7 +101,7 @@ Output tokens are free.`, for (const model of Object.values(models)) { expect(model).toMatchObject({ format: "typesafe", - flavor: "evaluation", + flavor: "decisions", available_providers: ["typesafe"], input_cost_per_mil_tokens: 0.042, output_cost_per_mil_tokens: 0, diff --git a/packages/proxy/scripts/sync_typesafe.ts b/packages/proxy/scripts/sync_typesafe.ts index 32dafe14..2a4e7539 100644 --- a/packages/proxy/scripts/sync_typesafe.ts +++ b/packages/proxy/scripts/sync_typesafe.ts @@ -109,7 +109,7 @@ export function parseTypesafePricing(markdown: string): ModelCatalog { } models[modelId] = { format: "typesafe", - flavor: "evaluation", + flavor: "decisions", input_cost_per_mil_tokens: pricePerMillionTokens, output_cost_per_mil_tokens: 0, displayName: rows[0][0],