Spaces:
Paused
Paused
| import type { AnnotationReplyConfig, ChatPromptConfig, CompletionPromptConfig, DatasetConfigs, PromptMode } from '@/models/debug' | |
| import type { CollectionType } from '@/app/components/tools/types' | |
| import type { LanguagesSupported } from '@/i18n/language' | |
| import type { Tag } from '@/app/components/base/tag-management/constant' | |
| import type { | |
| RerankingModeEnum, | |
| WeightedScoreEnum, | |
| } from '@/models/datasets' | |
| import type { UploadFileSetting } from '@/app/components/workflow/types' | |
| export enum Theme { | |
| light = 'light', | |
| dark = 'dark', | |
| } | |
| export enum ProviderType { | |
| openai = 'openai', | |
| anthropic = 'anthropic', | |
| azure_openai = 'azure_openai', | |
| replicate = 'replicate', | |
| huggingface_hub = 'huggingface_hub', | |
| minimax = 'minimax', | |
| tongyi = 'tongyi', | |
| spark = 'spark', | |
| } | |
| export enum AppType { | |
| 'chat' = 'chat', | |
| 'completion' = 'completion', | |
| } | |
| export enum ModelModeType { | |
| 'chat' = 'chat', | |
| 'completion' = 'completion', | |
| 'unset' = '', | |
| } | |
| export enum RETRIEVE_TYPE { | |
| oneWay = 'single', | |
| multiWay = 'multiple', | |
| } | |
| export enum RETRIEVE_METHOD { | |
| semantic = 'semantic_search', | |
| fullText = 'full_text_search', | |
| hybrid = 'hybrid_search', | |
| invertedIndex = 'invertedIndex', | |
| keywordSearch = 'keyword_search', | |
| } | |
| export type VariableInput = { | |
| key: string | |
| name: string | |
| value: string | |
| } | |
| /** | |
| * App modes | |
| */ | |
| export const AppModes = ['advanced-chat', 'agent-chat', 'chat', 'completion', 'workflow'] as const | |
| export type AppMode = typeof AppModes[number] | |
| /** | |
| * Variable type | |
| */ | |
| export const VariableTypes = ['string', 'number', 'select'] as const | |
| export type VariableType = typeof VariableTypes[number] | |
| /** | |
| * Prompt variable parameter | |
| */ | |
| export type PromptVariable = { | |
| /** Variable key */ | |
| key: string | |
| /** Variable name */ | |
| name: string | |
| /** Type */ | |
| type: VariableType | |
| required: boolean | |
| /** Enumeration of single-selection drop-down values */ | |
| options?: string[] | |
| max_length?: number | |
| } | |
| export type TextTypeFormItem = { | |
| default: string | |
| label: string | |
| variable: string | |
| required: boolean | |
| max_length: number | |
| } | |
| export type SelectTypeFormItem = { | |
| default: string | |
| label: string | |
| variable: string | |
| required: boolean | |
| options: string[] | |
| } | |
| export type ParagraphTypeFormItem = { | |
| default: string | |
| label: string | |
| variable: string | |
| required: boolean | |
| } | |
| /** | |
| * User Input Form Item | |
| */ | |
| export type UserInputFormItem = { | |
| 'text-input': TextTypeFormItem | |
| } | { | |
| 'select': SelectTypeFormItem | |
| } | { | |
| 'paragraph': TextTypeFormItem | |
| } | |
| export type AgentTool = { | |
| provider_id: string | |
| provider_type: CollectionType | |
| provider_name: string | |
| tool_name: string | |
| tool_label: string | |
| tool_parameters: Record<string, any> | |
| enabled: boolean | |
| isDeleted?: boolean | |
| notAuthor?: boolean | |
| } | |
| export type ToolItem = { | |
| dataset: { | |
| enabled: boolean | |
| id: string | |
| } | |
| } | { | |
| 'sensitive-word-avoidance': { | |
| enabled: boolean | |
| words: string[] | |
| canned_response: string | |
| } | |
| } | AgentTool | |
| export enum AgentStrategy { | |
| functionCall = 'function_call', | |
| react = 'react', | |
| } | |
| export type CompletionParams = { | |
| /** Maximum number of tokens in the answer message returned by Completion */ | |
| max_tokens: number | |
| /** | |
| * A number between 0 and 2. | |
| * The larger the number, the more random the result; | |
| * otherwise, the more deterministic. | |
| * When in use, choose either `temperature` or `top_p`. | |
| * Default is 1. | |
| */ | |
| temperature: number | |
| /** | |
| * Represents the proportion of probability mass samples to take, | |
| * e.g., 0.1 means taking the top 10% probability mass samples. | |
| * The determinism between the samples is basically consistent. | |
| * Among these results, the `top_p` probability mass results are taken. | |
| * When in use, choose either `temperature` or `top_p`. | |
| * Default is 1. | |
| */ | |
| top_p: number | |
| /** When enabled, the Completion Text will concatenate the Prompt content together and return it. */ | |
| echo: boolean | |
| /** | |
| * Specify up to 4 to automatically stop generating before the text specified in `stop`. | |
| * Suitable for use in chat mode. | |
| * For example, specify "Q" and "A", | |
| * and provide some Q&A examples as context, | |
| * and the model will give out in Q&A format and stop generating before Q&A. | |
| */ | |
| stop: string[] | |
| /** | |
| * A number between -2.0 and 2.0. | |
| * The larger the value, the less the model will repeat topics and the more it will provide new topics. | |
| */ | |
| presence_penalty: number | |
| /** | |
| * A number between -2.0 and 2.0. | |
| * A lower setting will make the model appear less cultured, | |
| * always repeating expressions. | |
| * The difference between `frequency_penalty` and `presence_penalty` | |
| * is that `frequency_penalty` penalizes a word based on its frequency in the training data, | |
| * while `presence_penalty` penalizes a word based on its occurrence in the input text. | |
| */ | |
| frequency_penalty: number | |
| } | |
| /** | |
| * Model configuration. The backend type. | |
| */ | |
| export type Model = { | |
| /** LLM provider, e.g., OPENAI */ | |
| provider: string | |
| /** Model name, e.g, gpt-3.5.turbo */ | |
| name: string | |
| mode: ModelModeType | |
| /** Default Completion call parameters */ | |
| completion_params: CompletionParams | |
| } | |
| export type ModelConfig = { | |
| opening_statement: string | |
| suggested_questions?: string[] | |
| pre_prompt: string | |
| prompt_type: PromptMode | |
| chat_prompt_config: ChatPromptConfig | {} | |
| completion_prompt_config: CompletionPromptConfig | {} | |
| user_input_form: UserInputFormItem[] | |
| dataset_query_variable?: string | |
| more_like_this: { | |
| enabled?: boolean | |
| } | |
| suggested_questions_after_answer: { | |
| enabled: boolean | |
| } | |
| speech_to_text: { | |
| enabled: boolean | |
| } | |
| text_to_speech: { | |
| enabled: boolean | |
| voice?: string | |
| language?: string | |
| autoPlay?: TtsAutoPlay | |
| } | |
| retriever_resource: { | |
| enabled: boolean | |
| } | |
| sensitive_word_avoidance: { | |
| enabled: boolean | |
| } | |
| annotation_reply?: AnnotationReplyConfig | |
| agent_mode: { | |
| enabled: boolean | |
| strategy?: AgentStrategy | |
| tools: ToolItem[] | |
| } | |
| model: Model | |
| dataset_configs: DatasetConfigs | |
| file_upload?: { | |
| image: VisionSettings | |
| } & UploadFileSetting | |
| files?: VisionFile[] | |
| created_at?: number | |
| updated_at?: number | |
| } | |
| export type Language = typeof LanguagesSupported[number] | |
| /** | |
| * Web Application Configuration | |
| */ | |
| export type SiteConfig = { | |
| /** Application URL Identifier: `http://dify.app/{access_token}` */ | |
| access_token: string | |
| /** Public Title */ | |
| title: string | |
| /** Application Description will be shown in the Client */ | |
| description: string | |
| /** Define the color in hex for different elements of the chatbot, such as: | |
| * The header, the button , etc. | |
| */ | |
| chat_color_theme: string | |
| /** Invert the color of the theme set in chat_color_theme */ | |
| chat_color_theme_inverted: boolean | |
| /** Author */ | |
| author: string | |
| /** User Support Email Address */ | |
| support_email: string | |
| /** | |
| * Default Language, e.g. zh-Hans, en-US | |
| * Use standard RFC 4646, see https://www.ruanyifeng.com/blog/2008/02/codes_for_language_names.html | |
| */ | |
| default_language: Language | |
| /** Custom Domain */ | |
| customize_domain: string | |
| /** Theme */ | |
| theme: string | |
| /** Custom Token strategy Whether Terminal Users can choose their OpenAI Key */ | |
| customize_token_strategy: 'must' | 'allow' | 'not_allow' | |
| /** Is Prompt Public */ | |
| prompt_public: boolean | |
| /** Web API and APP Base Domain Name */ | |
| app_base_url: string | |
| /** Copyright */ | |
| copyright: string | |
| /** Privacy Policy */ | |
| privacy_policy: string | |
| /** Custom Disclaimer */ | |
| custom_disclaimer: string | |
| icon_type: AppIconType | null | |
| icon: string | |
| icon_background: string | null | |
| icon_url: string | null | |
| show_workflow_steps: boolean | |
| use_icon_as_answer_icon: boolean | |
| } | |
| export type AppIconType = 'image' | 'emoji' | |
| /** | |
| * App | |
| */ | |
| export type App = { | |
| /** App ID */ | |
| id: string | |
| /** Name */ | |
| name: string | |
| /** Description */ | |
| description: string | |
| /** | |
| * Icon Type | |
| * @default 'emoji' | |
| */ | |
| icon_type: AppIconType | null | |
| /** Icon, stores file ID if icon_type is 'image' */ | |
| icon: string | |
| /** Icon Background, only available when icon_type is null or 'emoji' */ | |
| icon_background: string | null | |
| /** Icon URL, only available when icon_type is 'image' */ | |
| icon_url: string | null | |
| /** Whether to use app icon as answer icon */ | |
| use_icon_as_answer_icon: boolean | |
| /** Mode */ | |
| mode: AppMode | |
| /** Enable web app */ | |
| enable_site: boolean | |
| /** Enable web API */ | |
| enable_api: boolean | |
| /** API requests per minute, default is 60 */ | |
| api_rpm: number | |
| /** API requests per hour, default is 3600 */ | |
| api_rph: number | |
| /** Whether it's a demo app */ | |
| is_demo: boolean | |
| /** Model configuration */ | |
| model_config: ModelConfig | |
| app_model_config: ModelConfig | |
| /** Timestamp of creation */ | |
| created_at: number | |
| /** Web Application Configuration */ | |
| site: SiteConfig | |
| /** api site url */ | |
| api_base_url: string | |
| tags: Tag[] | |
| } | |
| export type AppSSO = { | |
| enable_sso: boolean | |
| } | |
| /** | |
| * App Template | |
| */ | |
| export type AppTemplate = { | |
| /** Name */ | |
| name: string | |
| /** Description */ | |
| description: string | |
| /** Mode */ | |
| mode: AppMode | |
| /** Model */ | |
| model_config: ModelConfig | |
| } | |
| export enum Resolution { | |
| low = 'low', | |
| high = 'high', | |
| } | |
| export enum TransferMethod { | |
| all = 'all', | |
| local_file = 'local_file', | |
| remote_url = 'remote_url', | |
| } | |
| export enum TtsAutoPlay { | |
| enabled = 'enabled', | |
| disabled = 'disabled', | |
| } | |
| export const ALLOW_FILE_EXTENSIONS = ['png', 'jpg', 'jpeg', 'webp', 'gif'] | |
| export type VisionSettings = { | |
| enabled: boolean | |
| number_limits: number | |
| detail: Resolution | |
| transfer_methods: TransferMethod[] | |
| image_file_size_limit?: number | string | |
| } | |
| export type ImageFile = { | |
| type: TransferMethod | |
| _id: string | |
| fileId: string | |
| file?: File | |
| progress: number | |
| url: string | |
| base64Url?: string | |
| deleted?: boolean | |
| } | |
| export type VisionFile = { | |
| id?: string | |
| type: string | |
| transfer_method: TransferMethod | |
| url: string | |
| upload_file_id: string | |
| belongs_to?: string | |
| } | |
| export type RetrievalConfig = { | |
| search_method: RETRIEVE_METHOD | |
| reranking_enable: boolean | |
| reranking_model: { | |
| reranking_provider_name: string | |
| reranking_model_name: string | |
| } | |
| top_k: number | |
| score_threshold_enabled: boolean | |
| score_threshold: number | |
| reranking_mode?: RerankingModeEnum | |
| weights?: { | |
| weight_type: WeightedScoreEnum | |
| vector_setting: { | |
| vector_weight: number | |
| embedding_provider_name: string | |
| embedding_model_name: string | |
| } | |
| keyword_setting: { | |
| keyword_weight: number | |
| } | |
| } | |
| } | |