From 1373a7b21d7b04f0fe5ea2a008c88b6a85665fe0 Mon Sep 17 00:00:00 2001 From: Mohamed Bassem Date: Sun, 13 Apr 2025 17:03:58 +0000 Subject: fix: Allow using JSON mode for ollama users. Fixes #1160 --- packages/shared/config.ts | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) (limited to 'packages/shared/config.ts') diff --git a/packages/shared/config.ts b/packages/shared/config.ts index fd224ea7..8abb5902 100644 --- a/packages/shared/config.ts +++ b/packages/shared/config.ts @@ -8,6 +8,13 @@ const stringBool = (defaultValue: string) => .refine((s) => s === "true" || s === "false") .transform((s) => s === "true"); +const optionalStringBool = () => + z + .string() + .refine((s) => s === "true" || s === "false") + .transform((s) => s === "true") + .optional(); + const allEnv = z.object({ API_URL: z.string().url().default("http://localhost:3000"), DISABLE_SIGNUPS: stringBool("false"), @@ -29,7 +36,10 @@ const allEnv = z.object({ INFERENCE_IMAGE_MODEL: z.string().default("gpt-4o-mini"), EMBEDDING_TEXT_MODEL: z.string().default("text-embedding-3-small"), INFERENCE_CONTEXT_LENGTH: z.coerce.number().default(2048), - INFERENCE_SUPPORTS_STRUCTURED_OUTPUT: stringBool("true"), + INFERENCE_SUPPORTS_STRUCTURED_OUTPUT: optionalStringBool(), + INFERENCE_OUTPUT_SCHEMA: z + .enum(["structured", "json", "plain"]) + .default("structured"), OCR_CACHE_DIR: z.string().optional(), OCR_LANGS: z .string() @@ -104,7 +114,12 @@ const serverConfigSchema = allEnv.transform((val) => { imageModel: val.INFERENCE_IMAGE_MODEL, inferredTagLang: val.INFERENCE_LANG, contextLength: val.INFERENCE_CONTEXT_LENGTH, - supportsStructuredOutput: val.INFERENCE_SUPPORTS_STRUCTURED_OUTPUT, + outputSchema: + val.INFERENCE_SUPPORTS_STRUCTURED_OUTPUT !== undefined + ? val.INFERENCE_SUPPORTS_STRUCTURED_OUTPUT + ? ("structured" as const) + : ("plain" as const) + : val.INFERENCE_OUTPUT_SCHEMA, }, embedding: { textModel: val.EMBEDDING_TEXT_MODEL, -- cgit v1.2.3-70-g09d2