123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 |
- import type { UserInputFormItem } from '@/types/app'
- import type { PromptVariable } from '@/models/debug'
- export const userInputsFormToPromptVariables = (useInputs: UserInputFormItem[] | null, dataset_query_variable?: string) => {
- if (!useInputs)
- return []
- const promptVariables: PromptVariable[] = []
- useInputs.forEach((item: any) => {
- const isParagraph = !!item.paragraph
- const [type, content] = (() => {
- if (isParagraph)
- return ['paragraph', item.paragraph]
- if (item['text-input'])
- return ['string', item['text-input']]
- if (item.number)
- return ['number', item.number]
- if (item.file)
- return ['file', item.file]
- if (item['file-list'])
- return ['file-list', item['file-list']]
- if (item.external_data_tool)
- return [item.external_data_tool.type, item.external_data_tool]
- return ['select', item.select || {}]
- })()
- const is_context_var = dataset_query_variable === content?.variable
- if (type === 'string' || type === 'paragraph') {
- promptVariables.push({
- key: content.variable,
- name: content.label,
- required: content.required,
- type,
- max_length: content.max_length,
- options: [],
- is_context_var,
- })
- }
- else if (type === 'number') {
- promptVariables.push({
- key: content.variable,
- name: content.label,
- required: content.required,
- type,
- options: [],
- })
- }
- else if (type === 'select') {
- promptVariables.push({
- key: content.variable,
- name: content.label,
- required: content.required,
- type: 'select',
- options: content.options,
- is_context_var,
- })
- }
- else if (type === 'file') {
- promptVariables.push({
- key: content.variable,
- name: content.label,
- required: content.required,
- type,
- config: {
- allowed_file_types: content.allowed_file_types,
- allowed_file_extensions: content.allowed_file_extensions,
- allowed_file_upload_methods: content.allowed_file_upload_methods,
- number_limits: 1,
- },
- })
- }
- else if (type === 'file-list') {
- promptVariables.push({
- key: content.variable,
- name: content.label,
- required: content.required,
- type,
- config: {
- allowed_file_types: content.allowed_file_types,
- allowed_file_extensions: content.allowed_file_extensions,
- allowed_file_upload_methods: content.allowed_file_upload_methods,
- number_limits: content.max_length,
- },
- })
- }
- else {
- promptVariables.push({
- key: content.variable,
- name: content.label,
- required: content.required,
- type: content.type,
- enabled: content.enabled,
- config: content.config,
- icon: content.icon,
- icon_background: content.icon_background,
- is_context_var,
- })
- }
- })
- return promptVariables
- }
- export const promptVariablesToUserInputsForm = (promptVariables: PromptVariable[]) => {
- const userInputs: UserInputFormItem[] = []
- promptVariables.filter(({ key, name }) => {
- if (key && key.trim() && name && name.trim())
- return true
- return false
- }).forEach((item: any) => {
- if (item.type === 'string' || item.type === 'paragraph') {
- userInputs.push({
- [item.type === 'string' ? 'text-input' : 'paragraph']: {
- label: item.name,
- variable: item.key,
- required: item.required !== false, // default true
- max_length: item.max_length,
- default: '',
- },
- } as any)
- return
- }
- if (item.type === 'number') {
- userInputs.push({
- number: {
- label: item.name,
- variable: item.key,
- required: item.required !== false, // default true
- default: '',
- },
- } as any)
- }
- else if (item.type === 'select') {
- userInputs.push({
- select: {
- label: item.name,
- variable: item.key,
- required: item.required !== false, // default true
- options: item.options,
- default: '',
- },
- } as any)
- }
- else {
- userInputs.push({
- external_data_tool: {
- label: item.name,
- variable: item.key,
- enabled: item.enabled,
- type: item.type,
- config: item.config,
- required: item.required,
- icon: item.icon,
- icon_background: item.icon_background,
- },
- } as any)
- }
- })
- return userInputs
- }
|