From 61a34cb492ab6e80a9ee16740d8e2ae306c02c0a Mon Sep 17 00:00:00 2001 From: dimmur-brw Date: Fri, 20 Mar 2026 19:38:27 +0100 Subject: [PATCH] Fix AIField generation for mistral API provider (#4996) --- .../core/generative_ai/generative_ai_model_types.py | 4 +--- ..._fix_aifield_generation_for_mistral_api_provider.json | 9 +++++++++ premium/backend/src/baserow_premium/fields/job_types.py | 6 ++++++ 3 files changed, 16 insertions(+), 3 deletions(-) create mode 100644 changelog/entries/unreleased/bug/4994_fix_aifield_generation_for_mistral_api_provider.json diff --git a/backend/src/baserow/core/generative_ai/generative_ai_model_types.py b/backend/src/baserow/core/generative_ai/generative_ai_model_types.py index 0d55f4e20a..36008330aa 100644 --- a/backend/src/baserow/core/generative_ai/generative_ai_model_types.py +++ b/backend/src/baserow/core/generative_ai/generative_ai_model_types.py @@ -319,9 +319,7 @@ def prompt( # accepts 1. kwargs["temperature"] = min(temperature, 1) response = client.chat.complete( - messages=[ - {"role": "user", "content": [{"type": "text", "text": prompt}]} - ], + messages=[{"role": "user", "content": prompt}], model=model, **kwargs, ) diff --git a/changelog/entries/unreleased/bug/4994_fix_aifield_generation_for_mistral_api_provider.json b/changelog/entries/unreleased/bug/4994_fix_aifield_generation_for_mistral_api_provider.json new file mode 100644 index 0000000000..629853a38c --- /dev/null +++ b/changelog/entries/unreleased/bug/4994_fix_aifield_generation_for_mistral_api_provider.json @@ -0,0 +1,9 @@ +{ + "type": "bug", + "message": "Fix AIField generation for mistral API provider", + "issue_origin": "github", + "issue_number": 4994, + "domain": "database", + "bullet_points": [], + "created_at": "2026-03-17" +} \ No newline at end of file diff --git a/premium/backend/src/baserow_premium/fields/job_types.py b/premium/backend/src/baserow_premium/fields/job_types.py index 458d1114f7..14f089bd16 100644 --- a/premium/backend/src/baserow_premium/fields/job_types.py +++ b/premium/backend/src/baserow_premium/fields/job_types.py @@ -512,7 +512,13 @@ def _generate_value_for(self, row: GeneratedTableModel) -> Any: # additional prompt trying to force the output, for example. message = ai_output_type.format_prompt(message, ai_field) + if not message or not message.strip(): + # If the resolved prompt is empty, preserve the existing value instead + # of overwriting it with NULL in the database. + return getattr(row, ai_field.db_column, None) + if self.use_file_fields: + file_ids = [] try: file_ids = AIFileManager.upload_files_from_file_field( ai_field, row, generative_ai_model_type