From 8cf4fef67e97b5158bb9c4e18518c2ecdbc730a0 Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Sun, 14 Jun 2026 07:23:36 -0700 Subject: [PATCH] Add to UI config --- src-ui/src/app/data/paperless-config.ts | 9 ++++++++ src/documents/tests/test_api_app_config.py | 1 + ...cationconfiguration_llm_request_timeout.py | 23 +++++++++++++++++++ src/paperless/models.py | 6 +++++ 4 files changed, 39 insertions(+) create mode 100644 src/paperless/migrations/0013_applicationconfiguration_llm_request_timeout.py diff --git a/src-ui/src/app/data/paperless-config.ts b/src-ui/src/app/data/paperless-config.ts index 1c74d8c08..ad3f4c0c9 100644 --- a/src-ui/src/app/data/paperless-config.ts +++ b/src-ui/src/app/data/paperless-config.ts @@ -360,6 +360,14 @@ export const PaperlessConfigOptions: ConfigOption[] = [ category: ConfigCategory.AI, note: $localize`Language to use for generated AI suggestions. When unset, AI suggestions use the user's display language if explicitly set.`, }, + { + key: 'llm_request_timeout', + title: $localize`LLM Request Timeout`, + type: ConfigOptionType.Number, + config_key: 'PAPERLESS_AI_LLM_REQUEST_TIMEOUT', + category: ConfigCategory.AI, + note: $localize`Timeout in seconds for LLM requests.`, + }, ] export interface PaperlessConfig extends ObjectWithId { @@ -401,4 +409,5 @@ export interface PaperlessConfig extends ObjectWithId { llm_api_key: string llm_endpoint: string llm_output_language: string + llm_request_timeout: number } diff --git a/src/documents/tests/test_api_app_config.py b/src/documents/tests/test_api_app_config.py index 9b94fff17..214edbeee 100644 --- a/src/documents/tests/test_api_app_config.py +++ b/src/documents/tests/test_api_app_config.py @@ -82,6 +82,7 @@ class TestApiAppConfig(DirectoriesMixin, APITestCase): "llm_api_key": None, "llm_endpoint": None, "llm_output_language": None, + "llm_request_timeout": None, }, ) diff --git a/src/paperless/migrations/0013_applicationconfiguration_llm_request_timeout.py b/src/paperless/migrations/0013_applicationconfiguration_llm_request_timeout.py new file mode 100644 index 000000000..836c0696c --- /dev/null +++ b/src/paperless/migrations/0013_applicationconfiguration_llm_request_timeout.py @@ -0,0 +1,23 @@ +# Generated by Django 5.2.14 on 2026-06-14 14:22 + +import django.core.validators +from django.db import migrations +from django.db import models + + +class Migration(migrations.Migration): + dependencies = [ + ("paperless", "0012_applicationconfiguration_llm_output_language"), + ] + + operations = [ + migrations.AddField( + model_name="applicationconfiguration", + name="llm_request_timeout", + field=models.PositiveSmallIntegerField( + null=True, + validators=[django.core.validators.MinValueValidator(1)], + verbose_name="Sets the LLM request timeout in seconds", + ), + ), + ] diff --git a/src/paperless/models.py b/src/paperless/models.py index d246a546f..71920cb0b 100644 --- a/src/paperless/models.py +++ b/src/paperless/models.py @@ -366,6 +366,12 @@ class ApplicationConfiguration(AbstractSingletonModel): max_length=32, ) + llm_request_timeout = models.PositiveSmallIntegerField( + verbose_name=_("Sets the LLM timeout in seconds"), + null=True, + validators=[MinValueValidator(1)], + ) + class Meta: verbose_name = _("paperless application settings") permissions = [