debug-configuration.ts 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262
  1. import type { RefObject } from 'react'
  2. import { createContext, useContext } from 'use-context-selector'
  3. import { PromptMode } from '@/models/debug'
  4. import type {
  5. AnnotationReplyConfig,
  6. BlockStatus,
  7. ChatPromptConfig,
  8. CitationConfig,
  9. CompletionPromptConfig,
  10. ConversationHistoriesRole,
  11. DatasetConfigs,
  12. Inputs,
  13. ModelConfig,
  14. ModerationConfig,
  15. MoreLikeThisConfig,
  16. PromptConfig,
  17. PromptItem,
  18. SpeechToTextConfig,
  19. SuggestedQuestionsAfterAnswerConfig,
  20. TextToSpeechConfig,
  21. } from '@/models/debug'
  22. import type { ExternalDataTool } from '@/models/common'
  23. import type { DataSet } from '@/models/datasets'
  24. import type { VisionSettings } from '@/types/app'
  25. import { ModelModeType, RETRIEVE_TYPE, Resolution, TransferMethod } from '@/types/app'
  26. import { ANNOTATION_DEFAULT, DEFAULT_AGENT_SETTING, DEFAULT_CHAT_PROMPT_CONFIG, DEFAULT_COMPLETION_PROMPT_CONFIG } from '@/config'
  27. import type { FormValue } from '@/app/components/header/account-setting/model-provider-page/declarations'
  28. import type { Collection } from '@/app/components/tools/types'
  29. type IDebugConfiguration = {
  30. appId: string
  31. isAPIKeySet: boolean
  32. isTrailFinished: boolean
  33. mode: string
  34. modelModeType: ModelModeType
  35. promptMode: PromptMode
  36. setPromptMode: (promptMode: PromptMode) => void
  37. isAdvancedMode: boolean
  38. isAgent: boolean
  39. isFunctionCall: boolean
  40. isOpenAI: boolean
  41. collectionList: Collection[]
  42. canReturnToSimpleMode: boolean
  43. setCanReturnToSimpleMode: (canReturnToSimpleMode: boolean) => void
  44. chatPromptConfig: ChatPromptConfig
  45. completionPromptConfig: CompletionPromptConfig
  46. currentAdvancedPrompt: PromptItem | PromptItem[]
  47. setCurrentAdvancedPrompt: (prompt: PromptItem | PromptItem[], isUserChanged?: boolean) => void
  48. showHistoryModal: () => void
  49. conversationHistoriesRole: ConversationHistoriesRole
  50. setConversationHistoriesRole: (conversationHistoriesRole: ConversationHistoriesRole) => void
  51. hasSetBlockStatus: BlockStatus
  52. conversationId: string | null // after first chat send
  53. setConversationId: (conversationId: string | null) => void
  54. introduction: string
  55. setIntroduction: (introduction: string) => void
  56. suggestedQuestions: string[]
  57. setSuggestedQuestions: (questions: string[]) => void
  58. controlClearChatMessage: number
  59. setControlClearChatMessage: (controlClearChatMessage: number) => void
  60. prevPromptConfig: PromptConfig
  61. setPrevPromptConfig: (prevPromptConfig: PromptConfig) => void
  62. moreLikeThisConfig: MoreLikeThisConfig
  63. setMoreLikeThisConfig: (moreLikeThisConfig: MoreLikeThisConfig) => void
  64. suggestedQuestionsAfterAnswerConfig: SuggestedQuestionsAfterAnswerConfig
  65. setSuggestedQuestionsAfterAnswerConfig: (suggestedQuestionsAfterAnswerConfig: SuggestedQuestionsAfterAnswerConfig) => void
  66. speechToTextConfig: SpeechToTextConfig
  67. setSpeechToTextConfig: (speechToTextConfig: SpeechToTextConfig) => void
  68. textToSpeechConfig: TextToSpeechConfig
  69. setTextToSpeechConfig: (textToSpeechConfig: TextToSpeechConfig) => void
  70. citationConfig: CitationConfig
  71. setCitationConfig: (citationConfig: CitationConfig) => void
  72. annotationConfig: AnnotationReplyConfig
  73. setAnnotationConfig: (annotationConfig: AnnotationReplyConfig) => void
  74. moderationConfig: ModerationConfig
  75. setModerationConfig: (moderationConfig: ModerationConfig) => void
  76. externalDataToolsConfig: ExternalDataTool[]
  77. setExternalDataToolsConfig: (externalDataTools: ExternalDataTool[]) => void
  78. formattingChanged: boolean
  79. setFormattingChanged: (formattingChanged: boolean) => void
  80. inputs: Inputs
  81. setInputs: (inputs: Inputs) => void
  82. query: string // user question
  83. setQuery: (query: string) => void
  84. // Belows are draft infos
  85. completionParams: FormValue
  86. setCompletionParams: (completionParams: FormValue) => void
  87. // model_config
  88. modelConfig: ModelConfig
  89. setModelConfig: (modelConfig: ModelConfig) => void
  90. dataSets: DataSet[]
  91. setDataSets: (dataSet: DataSet[]) => void
  92. showSelectDataSet: () => void
  93. // dataset config
  94. datasetConfigs: DatasetConfigs
  95. datasetConfigsRef: RefObject<DatasetConfigs>
  96. setDatasetConfigs: (config: DatasetConfigs) => void
  97. hasSetContextVar: boolean
  98. isShowVisionConfig: boolean
  99. visionConfig: VisionSettings
  100. setVisionConfig: (visionConfig: VisionSettings, noNotice?: boolean) => void
  101. isAllowVideoUpload: boolean
  102. isShowDocumentConfig: boolean
  103. rerankSettingModalOpen: boolean
  104. setRerankSettingModalOpen: (rerankSettingModalOpen: boolean) => void
  105. }
  106. const DebugConfigurationContext = createContext<IDebugConfiguration>({
  107. appId: '',
  108. isAPIKeySet: false,
  109. isTrailFinished: false,
  110. mode: '',
  111. modelModeType: ModelModeType.chat,
  112. promptMode: PromptMode.simple,
  113. setPromptMode: () => { },
  114. isAdvancedMode: false,
  115. isAgent: false,
  116. isFunctionCall: false,
  117. isOpenAI: false,
  118. collectionList: [],
  119. canReturnToSimpleMode: false,
  120. setCanReturnToSimpleMode: () => { },
  121. chatPromptConfig: DEFAULT_CHAT_PROMPT_CONFIG,
  122. completionPromptConfig: DEFAULT_COMPLETION_PROMPT_CONFIG,
  123. currentAdvancedPrompt: [],
  124. showHistoryModal: () => { },
  125. conversationHistoriesRole: {
  126. user_prefix: 'user',
  127. assistant_prefix: 'assistant',
  128. },
  129. setConversationHistoriesRole: () => { },
  130. setCurrentAdvancedPrompt: () => { },
  131. hasSetBlockStatus: {
  132. context: false,
  133. history: false,
  134. query: false,
  135. },
  136. conversationId: '',
  137. setConversationId: () => { },
  138. introduction: '',
  139. setIntroduction: () => { },
  140. suggestedQuestions: [],
  141. setSuggestedQuestions: () => { },
  142. controlClearChatMessage: 0,
  143. setControlClearChatMessage: () => { },
  144. prevPromptConfig: {
  145. prompt_template: '',
  146. prompt_variables: [],
  147. },
  148. setPrevPromptConfig: () => { },
  149. moreLikeThisConfig: {
  150. enabled: false,
  151. },
  152. setMoreLikeThisConfig: () => { },
  153. suggestedQuestionsAfterAnswerConfig: {
  154. enabled: false,
  155. },
  156. setSuggestedQuestionsAfterAnswerConfig: () => { },
  157. speechToTextConfig: {
  158. enabled: false,
  159. },
  160. setSpeechToTextConfig: () => { },
  161. textToSpeechConfig: {
  162. enabled: false,
  163. voice: '',
  164. language: '',
  165. },
  166. setTextToSpeechConfig: () => { },
  167. citationConfig: {
  168. enabled: false,
  169. },
  170. setCitationConfig: () => { },
  171. moderationConfig: {
  172. enabled: false,
  173. },
  174. annotationConfig: {
  175. id: '',
  176. enabled: false,
  177. score_threshold: ANNOTATION_DEFAULT.score_threshold,
  178. embedding_model: {
  179. embedding_model_name: '',
  180. embedding_provider_name: '',
  181. },
  182. },
  183. setAnnotationConfig: () => { },
  184. setModerationConfig: () => { },
  185. externalDataToolsConfig: [],
  186. setExternalDataToolsConfig: () => { },
  187. formattingChanged: false,
  188. setFormattingChanged: () => { },
  189. inputs: {},
  190. setInputs: () => { },
  191. query: '',
  192. setQuery: () => { },
  193. completionParams: {
  194. max_tokens: 16,
  195. temperature: 1, // 0-2
  196. top_p: 1,
  197. presence_penalty: 1, // -2-2
  198. frequency_penalty: 1, // -2-2
  199. },
  200. setCompletionParams: () => { },
  201. modelConfig: {
  202. provider: 'OPENAI', // 'OPENAI'
  203. model_id: 'gpt-3.5-turbo', // 'gpt-3.5-turbo'
  204. mode: ModelModeType.unset,
  205. configs: {
  206. prompt_template: '',
  207. prompt_variables: [],
  208. },
  209. more_like_this: null,
  210. opening_statement: '',
  211. suggested_questions: [],
  212. sensitive_word_avoidance: null,
  213. speech_to_text: null,
  214. text_to_speech: null,
  215. file_upload: null,
  216. suggested_questions_after_answer: null,
  217. retriever_resource: null,
  218. annotation_reply: null,
  219. dataSets: [],
  220. agentConfig: DEFAULT_AGENT_SETTING,
  221. },
  222. setModelConfig: () => { },
  223. dataSets: [],
  224. showSelectDataSet: () => { },
  225. setDataSets: () => { },
  226. datasetConfigs: {
  227. retrieval_model: RETRIEVE_TYPE.multiWay,
  228. reranking_model: {
  229. reranking_provider_name: '',
  230. reranking_model_name: '',
  231. },
  232. top_k: 2,
  233. score_threshold_enabled: false,
  234. score_threshold: 0.7,
  235. datasets: {
  236. datasets: [],
  237. },
  238. },
  239. datasetConfigsRef: {
  240. current: null,
  241. },
  242. setDatasetConfigs: () => { },
  243. hasSetContextVar: false,
  244. isShowVisionConfig: false,
  245. visionConfig: {
  246. enabled: false,
  247. number_limits: 2,
  248. detail: Resolution.low,
  249. transfer_methods: [TransferMethod.remote_url],
  250. },
  251. setVisionConfig: () => { },
  252. isAllowVideoUpload: false,
  253. isShowDocumentConfig: false,
  254. rerankSettingModalOpen: false,
  255. setRerankSettingModalOpen: () => { },
  256. })
  257. export const useDebugConfigurationContext = () => useContext(DebugConfigurationContext)
  258. export default DebugConfigurationContext