Files
TaxHacker_s23/ai/schema.ts
2025-05-23 14:33:40 +02:00

34 lines
959 B
TypeScript

import { Field } from "@/prisma/client"
export const fieldsToJsonSchema = (fields: Field[]) => {
const fieldsWithPrompt = fields.filter((field) => field.llm_prompt)
const schemaProperties = fieldsWithPrompt.reduce(
(acc, field) => {
acc[field.code] = { type: field.type, description: field.llm_prompt || "" }
return acc
},
{} as Record<string, { type: string; description: string }>
)
const schema = {
type: "object",
properties: {
...schemaProperties,
items: {
type: "array",
description: "Included items or products in the transaction which have own name and price",
items: {
type: "object",
properties: schemaProperties,
required: [...Object.keys(schemaProperties)],
additionalProperties: false,
},
},
},
required: [...Object.keys(schemaProperties), "items"],
additionalProperties: false,
}
return schema
}