Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

use-form-config-map.tsx 11KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400
  1. import { LlmSettingSchema } from '@/components/llm-setting-items/next';
  2. import { CodeTemplateStrMap, ProgrammingLanguage } from '@/constants/agent';
  3. import { useTranslation } from 'react-i18next';
  4. import { z } from 'zod';
  5. import { Operator } from '../constant';
  6. import AgentForm from '../form/agent-form';
  7. import AkShareForm from '../form/akshare-form';
  8. import AnswerForm from '../form/answer-form';
  9. import ArXivForm from '../form/arxiv-form';
  10. import BaiduFanyiForm from '../form/baidu-fanyi-form';
  11. import BaiduForm from '../form/baidu-form';
  12. import BeginForm from '../form/begin-form';
  13. import BingForm from '../form/bing-form';
  14. import CategorizeForm from '../form/categorize-form';
  15. import CodeForm from '../form/code-form';
  16. import CrawlerForm from '../form/crawler-form';
  17. import DeepLForm from '../form/deepl-form';
  18. import DuckDuckGoForm from '../form/duckduckgo-form';
  19. import EmailForm from '../form/email-form';
  20. import ExeSQLForm from '../form/exesql-form';
  21. import GenerateForm from '../form/generate-form';
  22. import GithubForm from '../form/github-form';
  23. import GoogleForm from '../form/google-form';
  24. import GoogleScholarForm from '../form/google-scholar-form';
  25. import InvokeForm from '../form/invoke-form';
  26. import IterationForm from '../form/iteration-form';
  27. import IterationStartForm from '../form/iteration-start-from';
  28. import Jin10Form from '../form/jin10-form';
  29. import KeywordExtractForm from '../form/keyword-extract-form';
  30. import MessageForm from '../form/message-form';
  31. import PubMedForm from '../form/pubmed-form';
  32. import QWeatherForm from '../form/qweather-form';
  33. import RelevantForm from '../form/relevant-form';
  34. import RetrievalForm from '../form/retrieval-form/next';
  35. import RewriteQuestionForm from '../form/rewrite-question-form';
  36. import { StringTransformForm } from '../form/string-transform-form';
  37. import SwitchForm from '../form/switch-form';
  38. import TavilyForm from '../form/tavily-form';
  39. import TemplateForm from '../form/template-form';
  40. import ToolForm from '../form/tool-form';
  41. import TuShareForm from '../form/tushare-form';
  42. import UserFillUpForm from '../form/user-fill-up-form';
  43. import WenCaiForm from '../form/wencai-form';
  44. import WikipediaForm from '../form/wikipedia-form';
  45. import YahooFinanceForm from '../form/yahoo-finance-form';
  46. export function useFormConfigMap() {
  47. const { t } = useTranslation();
  48. const FormConfigMap = {
  49. [Operator.Begin]: {
  50. component: BeginForm,
  51. defaultValues: {},
  52. schema: z.object({
  53. enablePrologue: z.boolean().optional(),
  54. prologue: z
  55. .string()
  56. .min(1, {
  57. message: t('common.namePlaceholder'),
  58. })
  59. .trim()
  60. .optional(),
  61. mode: z.string(),
  62. query: z
  63. .array(
  64. z.object({
  65. key: z.string(),
  66. type: z.string(),
  67. value: z.string(),
  68. optional: z.boolean(),
  69. name: z.string(),
  70. options: z.array(z.union([z.number(), z.string(), z.boolean()])),
  71. }),
  72. )
  73. .optional(),
  74. }),
  75. },
  76. [Operator.Retrieval]: {
  77. component: RetrievalForm,
  78. defaultValues: { query: [] },
  79. schema: z.object({
  80. name: z
  81. .string()
  82. .min(1, {
  83. message: t('common.namePlaceholder'),
  84. })
  85. .trim(),
  86. age: z
  87. .string()
  88. .min(1, {
  89. message: t('common.namePlaceholder'),
  90. })
  91. .trim(),
  92. query: z.array(
  93. z.object({
  94. type: z.string(),
  95. }),
  96. ),
  97. }),
  98. },
  99. [Operator.Generate]: {
  100. component: GenerateForm,
  101. defaultValues: {
  102. cite: true,
  103. prompt: t('flow.promptText'),
  104. },
  105. schema: z.object({
  106. prompt: z.string().min(1, {
  107. message: t('flow.promptMessage'),
  108. }),
  109. }),
  110. },
  111. [Operator.Answer]: {
  112. component: AnswerForm,
  113. defaultValues: {},
  114. schema: z.object({}),
  115. },
  116. [Operator.Categorize]: {
  117. component: CategorizeForm,
  118. defaultValues: {},
  119. schema: z.object({
  120. parameter: z.string().optional(),
  121. ...LlmSettingSchema,
  122. message_history_window_size: z.coerce.number(),
  123. items: z.array(
  124. z
  125. .object({
  126. name: z.string().min(1, t('flow.nameMessage')).trim(),
  127. description: z.string().optional(),
  128. // examples: z
  129. // .array(
  130. // z.object({
  131. // value: z.string(),
  132. // }),
  133. // )
  134. // .optional(),
  135. })
  136. .optional(),
  137. ),
  138. }),
  139. },
  140. [Operator.Message]: {
  141. component: MessageForm,
  142. defaultValues: {},
  143. schema: z.object({
  144. content: z
  145. .array(
  146. z.object({
  147. value: z.string(),
  148. }),
  149. )
  150. .optional(),
  151. }),
  152. },
  153. [Operator.Relevant]: {
  154. component: RelevantForm,
  155. defaultValues: {},
  156. schema: z.object({}),
  157. },
  158. [Operator.RewriteQuestion]: {
  159. component: RewriteQuestionForm,
  160. defaultValues: {
  161. message_history_window_size: 6,
  162. },
  163. schema: z.object({
  164. llm_id: z.string(),
  165. message_history_window_size: z.number(),
  166. language: z.string(),
  167. }),
  168. },
  169. [Operator.Code]: {
  170. component: CodeForm,
  171. defaultValues: {
  172. lang: ProgrammingLanguage.Python,
  173. script: CodeTemplateStrMap[ProgrammingLanguage.Python],
  174. arguments: [],
  175. },
  176. schema: z.object({
  177. lang: z.string(),
  178. script: z.string(),
  179. arguments: z.array(
  180. z.object({ name: z.string(), component_id: z.string() }),
  181. ),
  182. return: z.union([
  183. z
  184. .array(z.object({ name: z.string(), component_id: z.string() }))
  185. .optional(),
  186. z.object({ name: z.string(), component_id: z.string() }),
  187. ]),
  188. }),
  189. },
  190. [Operator.WaitingDialogue]: {
  191. component: CodeForm,
  192. defaultValues: {},
  193. schema: z.object({
  194. arguments: z.array(
  195. z.object({ name: z.string(), component_id: z.string() }),
  196. ),
  197. }),
  198. },
  199. [Operator.Agent]: {
  200. component: AgentForm,
  201. defaultValues: {},
  202. schema: z.object({}),
  203. },
  204. [Operator.Baidu]: {
  205. component: BaiduForm,
  206. defaultValues: { top_n: 10 },
  207. schema: z.object({ top_n: z.number() }),
  208. },
  209. [Operator.DuckDuckGo]: {
  210. component: DuckDuckGoForm,
  211. defaultValues: {
  212. top_n: 10,
  213. channel: 'text',
  214. },
  215. schema: z.object({
  216. top_n: z.number(),
  217. }),
  218. },
  219. [Operator.KeywordExtract]: {
  220. component: KeywordExtractForm,
  221. defaultValues: { top_n: 3 },
  222. schema: z.object({
  223. llm_id: z.string(),
  224. top_n: z.number(),
  225. }),
  226. },
  227. [Operator.Wikipedia]: {
  228. component: WikipediaForm,
  229. defaultValues: {
  230. top_n: 10,
  231. },
  232. schema: z.object({
  233. language: z.string(),
  234. top_n: z.number(),
  235. }),
  236. },
  237. [Operator.PubMed]: {
  238. component: PubMedForm,
  239. defaultValues: { top_n: 10 },
  240. schema: z.object({
  241. top_n: z.number(),
  242. email: z.string(),
  243. }),
  244. },
  245. [Operator.ArXiv]: {
  246. component: ArXivForm,
  247. defaultValues: {},
  248. schema: z.object({}),
  249. },
  250. [Operator.Google]: {
  251. component: GoogleForm,
  252. defaultValues: {},
  253. schema: z.object({}),
  254. },
  255. [Operator.Bing]: {
  256. component: BingForm,
  257. defaultValues: {},
  258. schema: z.object({}),
  259. },
  260. [Operator.GoogleScholar]: {
  261. component: GoogleScholarForm,
  262. defaultValues: {},
  263. schema: z.object({}),
  264. },
  265. [Operator.DeepL]: {
  266. component: DeepLForm,
  267. defaultValues: {},
  268. schema: z.object({}),
  269. },
  270. [Operator.GitHub]: {
  271. component: GithubForm,
  272. defaultValues: {},
  273. schema: z.object({}),
  274. },
  275. [Operator.BaiduFanyi]: {
  276. component: BaiduFanyiForm,
  277. defaultValues: {},
  278. schema: z.object({}),
  279. },
  280. [Operator.QWeather]: {
  281. component: QWeatherForm,
  282. defaultValues: {},
  283. schema: z.object({
  284. web_apikey: z.string(),
  285. lang: z.string(),
  286. type: z.string(),
  287. user_type: z.string(),
  288. time_period: z.string().optional(),
  289. }),
  290. },
  291. [Operator.ExeSQL]: {
  292. component: ExeSQLForm,
  293. defaultValues: {},
  294. schema: z.object({}),
  295. },
  296. [Operator.Switch]: {
  297. component: SwitchForm,
  298. defaultValues: {},
  299. schema: z.object({}),
  300. },
  301. [Operator.WenCai]: {
  302. component: WenCaiForm,
  303. defaultValues: {
  304. top_n: 20,
  305. },
  306. schema: z.object({
  307. top_n: z.number(),
  308. query_type: z.string(),
  309. }),
  310. },
  311. [Operator.AkShare]: {
  312. component: AkShareForm,
  313. defaultValues: {
  314. top_n: 10,
  315. },
  316. schema: z.object({
  317. top_n: z.number(),
  318. }),
  319. },
  320. [Operator.YahooFinance]: {
  321. component: YahooFinanceForm,
  322. defaultValues: {},
  323. schema: z.object({}),
  324. },
  325. [Operator.Jin10]: {
  326. component: Jin10Form,
  327. defaultValues: {},
  328. schema: z.object({}),
  329. },
  330. [Operator.TuShare]: {
  331. component: TuShareForm,
  332. defaultValues: {},
  333. schema: z.object({}),
  334. },
  335. [Operator.Crawler]: {
  336. component: CrawlerForm,
  337. defaultValues: {},
  338. schema: z.object({}),
  339. },
  340. [Operator.Invoke]: {
  341. component: InvokeForm,
  342. defaultValues: {},
  343. schema: z.object({}),
  344. },
  345. [Operator.Concentrator]: {
  346. component: () => <></>,
  347. defaultValues: {},
  348. schema: z.object({}),
  349. },
  350. [Operator.Note]: {
  351. component: () => <></>,
  352. defaultValues: {},
  353. schema: z.object({}),
  354. },
  355. [Operator.Template]: {
  356. component: TemplateForm,
  357. defaultValues: {},
  358. schema: z.object({}),
  359. },
  360. [Operator.Email]: {
  361. component: EmailForm,
  362. defaultValues: {},
  363. schema: z.object({}),
  364. },
  365. [Operator.Iteration]: {
  366. component: IterationForm,
  367. defaultValues: {},
  368. schema: z.object({}),
  369. },
  370. [Operator.IterationStart]: {
  371. component: IterationStartForm,
  372. defaultValues: {},
  373. schema: z.object({}),
  374. },
  375. [Operator.Tool]: {
  376. component: ToolForm,
  377. defaultValues: {},
  378. schema: z.object({}),
  379. },
  380. [Operator.TavilySearch]: {
  381. component: TavilyForm,
  382. defaultValues: {},
  383. schema: z.object({}),
  384. },
  385. [Operator.UserFillUp]: {
  386. component: UserFillUpForm,
  387. defaultValues: {},
  388. schema: z.object({}),
  389. },
  390. [Operator.StringTransform]: {
  391. component: StringTransformForm,
  392. defaultValues: {},
  393. schema: z.object({}),
  394. },
  395. };
  396. return FormConfigMap;
  397. }