don't run AI column functionality if the feature isn't enabled

This commit is contained in:
Martin McKeaveney 2024-10-03 16:59:59 +01:00
parent 2dff149aa9
commit ddea2d137a
6 changed files with 38 additions and 10 deletions

View File

@ -833,7 +833,8 @@
"type": "string", "type": "string",
"enum": [ "enum": [
"static", "static",
"dynamic" "dynamic",
"ai"
], ],
"description": "Defines whether this is a static or dynamic formula." "description": "Defines whether this is a static or dynamic formula."
} }
@ -857,6 +858,7 @@
"link", "link",
"formula", "formula",
"auto", "auto",
"ai",
"json", "json",
"internal", "internal",
"barcodeqr", "barcodeqr",
@ -1042,7 +1044,8 @@
"type": "string", "type": "string",
"enum": [ "enum": [
"static", "static",
"dynamic" "dynamic",
"ai"
], ],
"description": "Defines whether this is a static or dynamic formula." "description": "Defines whether this is a static or dynamic formula."
} }
@ -1066,6 +1069,7 @@
"link", "link",
"formula", "formula",
"auto", "auto",
"ai",
"json", "json",
"internal", "internal",
"barcodeqr", "barcodeqr",
@ -1262,7 +1266,8 @@
"type": "string", "type": "string",
"enum": [ "enum": [
"static", "static",
"dynamic" "dynamic",
"ai"
], ],
"description": "Defines whether this is a static or dynamic formula." "description": "Defines whether this is a static or dynamic formula."
} }
@ -1286,6 +1291,7 @@
"link", "link",
"formula", "formula",
"auto", "auto",
"ai",
"json", "json",
"internal", "internal",
"barcodeqr", "barcodeqr",

View File

@ -761,6 +761,7 @@ components:
enum: enum:
- static - static
- dynamic - dynamic
- ai
description: Defines whether this is a static or dynamic formula. description: Defines whether this is a static or dynamic formula.
- type: object - type: object
properties: properties:
@ -779,6 +780,7 @@ components:
- link - link
- formula - formula
- auto - auto
- ai
- json - json
- internal - internal
- barcodeqr - barcodeqr
@ -929,6 +931,7 @@ components:
enum: enum:
- static - static
- dynamic - dynamic
- ai
description: Defines whether this is a static or dynamic formula. description: Defines whether this is a static or dynamic formula.
- type: object - type: object
properties: properties:
@ -947,6 +950,7 @@ components:
- link - link
- formula - formula
- auto - auto
- ai
- json - json
- internal - internal
- barcodeqr - barcodeqr
@ -1104,6 +1108,7 @@ components:
enum: enum:
- static - static
- dynamic - dynamic
- ai
description: Defines whether this is a static or dynamic formula. description: Defines whether this is a static or dynamic formula.
- type: object - type: object
properties: properties:
@ -1122,6 +1127,7 @@ components:
- link - link
- formula - formula
- auto - auto
- ai
- json - json
- internal - internal
- barcodeqr - barcodeqr

View File

@ -10,6 +10,7 @@ import * as linkRows from "../../../db/linkedRows"
import isEqual from "lodash/isEqual" import isEqual from "lodash/isEqual"
import { cloneDeep } from "lodash/fp" import { cloneDeep } from "lodash/fp"
import sdk from "../../../sdk" import sdk from "../../../sdk"
import * as pro from "@budibase/pro"
/** /**
* This function runs through a list of enriched rows, looks at the rows which * This function runs through a list of enriched rows, looks at the rows which
@ -143,9 +144,12 @@ export async function finaliseRow(
dynamic: false, dynamic: false,
contextRows: [enrichedRow], contextRows: [enrichedRow],
}) })
row = await processAIColumns(table, row, { const aiEnabled = await pro.features.isBudibaseAIEnabled() || await pro.features.isAICustomConfigsEnabled()
contextRows: [enrichedRow], if (aiEnabled) {
}) row = await processAIColumns(table, row, {
contextRows: [enrichedRow],
})
}
const response = await db.put(row) const response = await db.put(row)
// for response, calculate the formulas for the enriched row // for response, calculate the formulas for the enriched row
@ -153,9 +157,11 @@ export async function finaliseRow(
enrichedRow = await processFormulas(table, enrichedRow, { enrichedRow = await processFormulas(table, enrichedRow, {
dynamic: false, dynamic: false,
}) })
enrichedRow = await processAIColumns(table, row, { if (aiEnabled) {
contextRows: [enrichedRow], enrichedRow = await processAIColumns(table, row, {
}) contextRows: [enrichedRow],
})
}
// this updates the related formulas in other rows based on the relations to this row // this updates the related formulas in other rows based on the relations to this row
if (updateFormula) { if (updateFormula) {

View File

@ -343,6 +343,12 @@ describe("/datasources", () => {
type: FieldType.FORMULA, type: FieldType.FORMULA,
formula: "any formula", formula: "any formula",
}, },
[FieldType.AI]: {
name: "ai",
type: FieldType.AI,
operation: "PROMPT",
prompt: "test prompt",
},
[FieldType.BARCODEQR]: { [FieldType.BARCODEQR]: {
name: "barcodeqr", name: "barcodeqr",
type: FieldType.BARCODEQR, type: FieldType.BARCODEQR,

View File

@ -242,6 +242,7 @@ function copyExistingPropsOver(
let shouldKeepSchema = false let shouldKeepSchema = false
switch (existingColumnType) { switch (existingColumnType) {
case FieldType.FORMULA: case FieldType.FORMULA:
case FieldType.AI:
case FieldType.AUTO: case FieldType.AUTO:
case FieldType.INTERNAL: case FieldType.INTERNAL:
shouldKeepSchema = true shouldKeepSchema = true

View File

@ -77,7 +77,10 @@ export enum FieldType {
*/ */
AUTO = "auto", AUTO = "auto",
/** /**
* A complex type, called an AI column within Budibase. This type has a... TODO: fill out * A complex type, called an AI column within Budibase. This type is only supported against internal tables
* and calculates the output based on a chosen operation (summarise text, translation etc) which passes to
* the configured Budibase Large Language Model to retrieve the output and write it back into the row.
* AI fields function in a similar fashion to static formulas, and possess many of the same characteristics.
*/ */
AI = "ai", AI = "ai",
/** /**