dify/web/context/debug-configuration.ts

245 lines
7.7 KiB
TypeScript

import { createContext, useContext } from 'use-context-selector'
import { PromptMode } from '@/models/debug'
import type {
AnnotationReplyConfig,
BlockStatus,
ChatPromptConfig,
CitationConfig,
CompletionPromptConfig,
ConversationHistoriesRole,
DatasetConfigs,
Inputs,
ModelConfig,
ModerationConfig,
MoreLikeThisConfig,
PromptConfig,
PromptItem,
SpeechToTextConfig,
SuggestedQuestionsAfterAnswerConfig,
TextToSpeechConfig,
} from '@/models/debug'
import type { ExternalDataTool } from '@/models/common'
import type { DataSet } from '@/models/datasets'
import type { VisionSettings } from '@/types/app'
import { ModelModeType, RETRIEVE_TYPE, Resolution, TransferMethod } from '@/types/app'
import { ANNOTATION_DEFAULT, DEFAULT_AGENT_SETTING, DEFAULT_CHAT_PROMPT_CONFIG, DEFAULT_COMPLETION_PROMPT_CONFIG } from '@/config'
import type { FormValue } from '@/app/components/header/account-setting/model-provider-page/declarations'
import type { Collection } from '@/app/components/tools/types'
type IDebugConfiguration = {
appId: string
hasSetAPIKEY: boolean
isTrailFinished: boolean
mode: string
modelModeType: ModelModeType
promptMode: PromptMode
setPromptMode: (promptMode: PromptMode) => void
isAdvancedMode: boolean
isAgent: boolean
isFunctionCall: boolean
isOpenAI: boolean
collectionList: Collection[]
canReturnToSimpleMode: boolean
setCanReturnToSimpleMode: (canReturnToSimpleMode: boolean) => void
chatPromptConfig: ChatPromptConfig
completionPromptConfig: CompletionPromptConfig
currentAdvancedPrompt: PromptItem | PromptItem[]
setCurrentAdvancedPrompt: (prompt: PromptItem | PromptItem[], isUserChanged?: boolean) => void
showHistoryModal: () => void
conversationHistoriesRole: ConversationHistoriesRole
setConversationHistoriesRole: (conversationHistoriesRole: ConversationHistoriesRole) => void
hasSetBlockStatus: BlockStatus
conversationId: string | null // after first chat send
setConversationId: (conversationId: string | null) => void
introduction: string
setIntroduction: (introduction: string) => void
suggestedQuestions: string[]
setSuggestedQuestions: (questions: string[]) => void
controlClearChatMessage: number
setControlClearChatMessage: (controlClearChatMessage: number) => void
prevPromptConfig: PromptConfig
setPrevPromptConfig: (prevPromptConfig: PromptConfig) => void
moreLikeThisConfig: MoreLikeThisConfig
setMoreLikeThisConfig: (moreLikeThisConfig: MoreLikeThisConfig) => void
suggestedQuestionsAfterAnswerConfig: SuggestedQuestionsAfterAnswerConfig
setSuggestedQuestionsAfterAnswerConfig: (suggestedQuestionsAfterAnswerConfig: SuggestedQuestionsAfterAnswerConfig) => void
speechToTextConfig: SpeechToTextConfig
setSpeechToTextConfig: (speechToTextConfig: SpeechToTextConfig) => void
textToSpeechConfig: TextToSpeechConfig
setTextToSpeechConfig: (textToSpeechConfig: TextToSpeechConfig) => void
citationConfig: CitationConfig
setCitationConfig: (citationConfig: CitationConfig) => void
annotationConfig: AnnotationReplyConfig
setAnnotationConfig: (annotationConfig: AnnotationReplyConfig) => void
moderationConfig: ModerationConfig
setModerationConfig: (moderationConfig: ModerationConfig) => void
externalDataToolsConfig: ExternalDataTool[]
setExternalDataToolsConfig: (externalDataTools: ExternalDataTool[]) => void
formattingChanged: boolean
setFormattingChanged: (formattingChanged: boolean) => void
inputs: Inputs
setInputs: (inputs: Inputs) => void
query: string // user question
setQuery: (query: string) => void
// Belows are draft infos
completionParams: FormValue
setCompletionParams: (completionParams: FormValue) => void
// model_config
modelConfig: ModelConfig
setModelConfig: (modelConfig: ModelConfig) => void
dataSets: DataSet[]
setDataSets: (dataSet: DataSet[]) => void
showSelectDataSet: () => void
// dataset config
datasetConfigs: DatasetConfigs
setDatasetConfigs: (config: DatasetConfigs) => void
hasSetContextVar: boolean
isShowVisionConfig: boolean
visionConfig: VisionSettings
setVisionConfig: (visionConfig: VisionSettings, noNotice?: boolean) => void
}
const DebugConfigurationContext = createContext<IDebugConfiguration>({
appId: '',
hasSetAPIKEY: false,
isTrailFinished: false,
mode: '',
modelModeType: ModelModeType.chat,
promptMode: PromptMode.simple,
setPromptMode: () => { },
isAdvancedMode: false,
isAgent: false,
isFunctionCall: false,
isOpenAI: false,
collectionList: [],
canReturnToSimpleMode: false,
setCanReturnToSimpleMode: () => { },
chatPromptConfig: DEFAULT_CHAT_PROMPT_CONFIG,
completionPromptConfig: DEFAULT_COMPLETION_PROMPT_CONFIG,
currentAdvancedPrompt: [],
showHistoryModal: () => { },
conversationHistoriesRole: {
user_prefix: 'user',
assistant_prefix: 'assistant',
},
setConversationHistoriesRole: () => { },
setCurrentAdvancedPrompt: () => { },
hasSetBlockStatus: {
context: false,
history: false,
query: false,
},
conversationId: '',
setConversationId: () => { },
introduction: '',
setIntroduction: () => { },
suggestedQuestions: [],
setSuggestedQuestions: () => {},
controlClearChatMessage: 0,
setControlClearChatMessage: () => { },
prevPromptConfig: {
prompt_template: '',
prompt_variables: [],
},
setPrevPromptConfig: () => { },
moreLikeThisConfig: {
enabled: false,
},
setMoreLikeThisConfig: () => { },
suggestedQuestionsAfterAnswerConfig: {
enabled: false,
},
setSuggestedQuestionsAfterAnswerConfig: () => { },
speechToTextConfig: {
enabled: false,
},
setSpeechToTextConfig: () => { },
textToSpeechConfig: {
enabled: false,
},
setTextToSpeechConfig: () => { },
citationConfig: {
enabled: false,
},
setCitationConfig: () => { },
moderationConfig: {
enabled: false,
},
annotationConfig: {
id: '',
enabled: false,
score_threshold: ANNOTATION_DEFAULT.score_threshold,
embedding_model: {
embedding_model_name: '',
embedding_provider_name: '',
},
},
setAnnotationConfig: () => { },
setModerationConfig: () => { },
externalDataToolsConfig: [],
setExternalDataToolsConfig: () => { },
formattingChanged: false,
setFormattingChanged: () => { },
inputs: {},
setInputs: () => { },
query: '',
setQuery: () => { },
completionParams: {
max_tokens: 16,
temperature: 1, // 0-2
top_p: 1,
presence_penalty: 1, // -2-2
frequency_penalty: 1, // -2-2
},
setCompletionParams: () => { },
modelConfig: {
provider: 'OPENAI', // 'OPENAI'
model_id: 'gpt-3.5-turbo', // 'gpt-3.5-turbo'
mode: ModelModeType.unset,
configs: {
prompt_template: '',
prompt_variables: [],
},
opening_statement: null,
more_like_this: null,
suggested_questions_after_answer: null,
speech_to_text: null,
text_to_speech: null,
retriever_resource: null,
sensitive_word_avoidance: null,
dataSets: [],
agentConfig: DEFAULT_AGENT_SETTING,
},
setModelConfig: () => { },
dataSets: [],
showSelectDataSet: () => { },
setDataSets: () => { },
datasetConfigs: {
retrieval_model: RETRIEVE_TYPE.oneWay,
reranking_model: {
reranking_provider_name: '',
reranking_model_name: '',
},
top_k: 2,
score_threshold_enabled: false,
score_threshold: 0.7,
datasets: {
datasets: [],
},
},
setDatasetConfigs: () => { },
hasSetContextVar: false,
isShowVisionConfig: false,
visionConfig: {
enabled: false,
number_limits: 2,
detail: Resolution.low,
transfer_methods: [TransferMethod.remote_url],
},
setVisionConfig: () => { },
})
export const useDebugConfigurationContext = () => useContext(DebugConfigurationContext)
export default DebugConfigurationContext