data.ts 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. import { FormSchema } from '@/components/Form';
  2. export const LLMProviders: any[] = [
  3. {
  4. model: 'openai',
  5. name: 'OpenAI',
  6. },
  7. {
  8. model: 'google',
  9. name: 'Google',
  10. },
  11. {
  12. model: 'ollama',
  13. name: 'Ollama',
  14. },
  15. {
  16. model: 'baidu',
  17. name: '百度大模型',
  18. },
  19. {
  20. model: 'alibaba',
  21. name: '阿里大模型',
  22. },
  23. ];
  24. export const columns = [
  25. {
  26. title: '供应商',
  27. key: 'name',
  28. },
  29. {
  30. title: '模型名称',
  31. key: 'model',
  32. },
  33. {
  34. title: '回复上限',
  35. key: 'responseLimit',
  36. width: '120',
  37. },
  38. {
  39. title: '生成随机性',
  40. key: 'temperature',
  41. width: '120',
  42. },
  43. {
  44. title: 'Top P',
  45. key: 'topP',
  46. width: '120',
  47. },
  48. {
  49. title: 'Api Key',
  50. key: 'apiKey',
  51. },
  52. ];
  53. export const formSchemas: FormSchema[] = [
  54. {
  55. field: 'id',
  56. label: 'ID',
  57. component: 'NInput',
  58. isHidden: true,
  59. },
  60. {
  61. field: 'provider',
  62. label: 'LLM供应商',
  63. component: 'NSelect',
  64. componentProps: {
  65. options: LLMProviders,
  66. labelField: 'name',
  67. valueField: 'model',
  68. },
  69. rules: [{ required: true, message: '请选择LLM供应商', trigger: ['blur'] }],
  70. },
  71. {
  72. field: 'model',
  73. label: '模型名称',
  74. labelMessage: '该LLM供应商对应的模型版本号',
  75. component: 'NInput',
  76. rules: [{ required: true, message: '请输入模型别名', trigger: ['blur'] }],
  77. },
  78. {
  79. field: 'name',
  80. label: '模型别名',
  81. component: 'NInput',
  82. rules: [{ required: true, message: '请输入模型别名', trigger: ['blur'] }],
  83. },
  84. {
  85. field: 'apiKey',
  86. label: 'Api Key',
  87. labelMessage: '模型链接的秘钥,注意有些模型例如Gemini是本地认证方式,则不是通过这种方式',
  88. component: 'NInput',
  89. // rules: [{ required: true, message: '请输入模型ApiKey', trigger: ['blur'] }],
  90. },
  91. {
  92. field: 'baseUrl',
  93. label: 'Base Url',
  94. labelMessage: '注意对于大多数模型此参数仅代表中转地址,但是对于Ollama这类本地模型则是必填的',
  95. component: 'NInput',
  96. },
  97. {
  98. field: 'responseLimit',
  99. label: '回复上限',
  100. labelMessage: '控制模型输出的Tokens长度上限。通常 100 Tokens 约等于150个中文汉字',
  101. component: 'NSlider',
  102. rules: [{ type: 'number', required: true, message: '请输入回复上限', trigger: ['blur'] }],
  103. componentProps: {
  104. showTooltip: true,
  105. defaultValue: 2000,
  106. step: 1,
  107. min: 1,
  108. max: 8192,
  109. },
  110. },
  111. {
  112. field: 'temperature',
  113. label: '生成随机性',
  114. labelMessage: '调高参数会使得模型的输出更多样性和创新性,反之降低参数将会减少多样性',
  115. component: 'NSlider',
  116. rules: [{ type: 'number', required: true, message: '请输入生成随机性', trigger: ['blur'] }],
  117. componentProps: {
  118. showTooltip: true,
  119. defaultValue: 0.8,
  120. step: 0.05,
  121. min: 0,
  122. max: 2,
  123. },
  124. },
  125. {
  126. field: 'topP',
  127. label: 'Top P',
  128. labelMessage:
  129. '模型在生成输出时会从概率最高的词汇开始选择,直到这些词汇的总概率累积达到Top p值。这样可以限制模型只选择这些高概率的词汇,从而控制输出内容的多样性。建议不要与“生成随机性“同时调整',
  130. component: 'NSlider',
  131. rules: [{ type: 'number', required: true, message: '请输入', trigger: ['blur'] }],
  132. componentProps: {
  133. showTooltip: true,
  134. defaultValue: 1,
  135. step: 0.1,
  136. min: 0,
  137. max: 1,
  138. },
  139. },
  140. ];