mirror of
				https://github.com/langgenius/dify.git
				synced 2025-11-04 04:43:09 +00:00 
			
		
		
		
	Co-authored-by: luowei <glpat-EjySCyNjWiLqAED-YmwM> Co-authored-by: crazywoola <427733928@qq.com> Co-authored-by: crazywoola <100913391+crazywoola@users.noreply.github.com>
		
			
				
	
	
		
			247 lines
		
	
	
		
			7.7 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			247 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,
 | 
						|
    voice: '',
 | 
						|
    language: '',
 | 
						|
  },
 | 
						|
  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
 |