azure_openai.tsx 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. import { ProviderEnum } from '../declarations'
  2. import type { ProviderConfig } from '../declarations'
  3. import { AzureOpenaiService, AzureOpenaiServiceText, OpenaiBlue } from '@/app/components/base/icons/src/public/llm'
  4. const config: ProviderConfig = {
  5. selector: {
  6. name: {
  7. 'en': 'Azure OpenAI Service',
  8. 'zh-Hans': 'Azure OpenAI Service',
  9. },
  10. icon: <OpenaiBlue className='w-full h-full' />,
  11. },
  12. item: {
  13. key: ProviderEnum.azure_openai,
  14. titleIcon: {
  15. 'en': <AzureOpenaiServiceText className='h-6' />,
  16. 'zh-Hans': <AzureOpenaiServiceText className='h-6' />,
  17. },
  18. },
  19. modal: {
  20. key: ProviderEnum.azure_openai,
  21. title: {
  22. 'en': 'Azure OpenAI Service Model',
  23. 'zh-Hans': 'Azure OpenAI Service Model',
  24. },
  25. icon: <AzureOpenaiService className='h-6' />,
  26. link: {
  27. href: 'https://azure.microsoft.com/en-us/products/ai-services/openai-service',
  28. label: {
  29. 'en': 'Get your API key from Azure',
  30. 'zh-Hans': '从 Azure 获取 API Key',
  31. },
  32. },
  33. defaultValue: {
  34. model_type: 'text-generation',
  35. },
  36. validateKeys: [
  37. 'model_name',
  38. 'model_type',
  39. 'openai_api_base',
  40. 'openai_api_key',
  41. 'base_model_name',
  42. ],
  43. fields: [
  44. {
  45. type: 'text',
  46. key: 'model_name',
  47. required: true,
  48. label: {
  49. 'en': 'Deployment Name',
  50. 'zh-Hans': '部署名称',
  51. },
  52. placeholder: {
  53. 'en': 'Enter your Deployment Name here, matching the Azure deployment name.',
  54. 'zh-Hans': '在此输入您的部署名称,需要与 Azure 的部署名称匹配',
  55. },
  56. },
  57. {
  58. type: 'radio',
  59. key: 'model_type',
  60. required: true,
  61. label: {
  62. 'en': 'Model Type',
  63. 'zh-Hans': '模型类型',
  64. },
  65. options: [
  66. {
  67. key: 'text-generation',
  68. label: {
  69. 'en': 'Text Generation',
  70. 'zh-Hans': '文本生成',
  71. },
  72. },
  73. {
  74. key: 'embeddings',
  75. label: {
  76. 'en': 'Embeddings',
  77. 'zh-Hans': 'Embeddings',
  78. },
  79. },
  80. ],
  81. },
  82. {
  83. type: 'text',
  84. key: 'openai_api_base',
  85. required: true,
  86. label: {
  87. 'en': 'API Endpoint URL',
  88. 'zh-Hans': 'API 域名',
  89. },
  90. placeholder: {
  91. 'en': 'Enter your API Endpoint, eg: https://example.com/xxx',
  92. 'zh-Hans': '在此输入您的 API 域名,如:https://example.com/xxx',
  93. },
  94. },
  95. {
  96. type: 'text',
  97. key: 'openai_api_key',
  98. required: true,
  99. label: {
  100. 'en': 'API Key',
  101. 'zh-Hans': 'API Key',
  102. },
  103. placeholder: {
  104. 'en': 'Enter your API key here',
  105. 'zh-Hans': '在此输入您的 API Key',
  106. },
  107. },
  108. {
  109. type: 'select',
  110. key: 'base_model_name',
  111. required: true,
  112. label: {
  113. 'en': 'Base Model',
  114. 'zh-Hans': '基础模型',
  115. },
  116. options: (v) => {
  117. if (v.model_type === 'text-generation') {
  118. return [
  119. {
  120. key: 'gpt-35-turbo',
  121. label: {
  122. 'en': 'gpt-35-turbo',
  123. 'zh-Hans': 'gpt-35-turbo',
  124. },
  125. },
  126. {
  127. key: 'gpt-35-turbo-16k',
  128. label: {
  129. 'en': 'gpt-35-turbo-16k',
  130. 'zh-Hans': 'gpt-35-turbo-16k',
  131. },
  132. },
  133. {
  134. key: 'gpt-4',
  135. label: {
  136. 'en': 'gpt-4',
  137. 'zh-Hans': 'gpt-4',
  138. },
  139. },
  140. {
  141. key: 'gpt-4-32k',
  142. label: {
  143. 'en': 'gpt-4-32k',
  144. 'zh-Hans': 'gpt-4-32k',
  145. },
  146. },
  147. {
  148. key: 'gpt-4-1106-preview',
  149. label: {
  150. 'en': 'gpt-4-1106-preview',
  151. 'zh-Hans': 'gpt-4-1106-preview',
  152. },
  153. },
  154. {
  155. key: 'gpt-4-vision-preview',
  156. label: {
  157. 'en': 'gpt-4-vision-preview',
  158. 'zh-Hans': 'gpt-4-vision-preview',
  159. },
  160. },
  161. {
  162. key: 'text-davinci-003',
  163. label: {
  164. 'en': 'text-davinci-003',
  165. 'zh-Hans': 'text-davinci-003',
  166. },
  167. },
  168. ]
  169. }
  170. if (v.model_type === 'embeddings') {
  171. return [
  172. {
  173. key: 'text-embedding-ada-002',
  174. label: {
  175. 'en': 'text-embedding-ada-002',
  176. 'zh-Hans': 'text-embedding-ada-002',
  177. },
  178. },
  179. ]
  180. }
  181. return []
  182. },
  183. },
  184. ],
  185. },
  186. }
  187. export default config