Jump to content

Connect SuperML | Leeroopedia MCP: Equip your AI agents with best practices, code verification, and debugging knowledge. Powered by Leeroo — building Organizational Superintelligence. Contact us at founders@leeroo.com.

Implementation:Langgenius Dify Frontend Config

From Leeroopedia
Knowledge Sources
Domains Frontend, Configuration
Last Updated 2026-02-12 07:00 GMT

Overview

Central frontend configuration module that exports API endpoints, edition flags, default model/agent/dataset settings, regex patterns, and environment-driven feature flags for the Dify web application.

Description

The web/config/index.ts module serves as the single source of truth for all frontend configuration values in the Dify Next.js application. It reads environment variables through a typed env object (powered by @t3-oss/env-nextjs) and provides sensible defaults via the getStringConfig helper function, ensuring the application can run in both development and production environments without mandatory environment variable setup.

The module organizes configuration into several categories: API endpoint prefixes (API_PREFIX, PUBLIC_API_PREFIX, MARKETPLACE_API_PREFIX), edition detection flags (IS_CE_EDITION, IS_CLOUD_EDITION), LLM parameter presets (TONE_LIST with Creative/Balanced/Precise/Custom profiles), prompt templates (DEFAULT_CHAT_PROMPT_CONFIG, DEFAULT_COMPLETION_PROMPT_CONFIG, DEFAULT_AGENT_PROMPT), security tokens (CSRF_COOKIE_NAME, CSRF_HEADER_NAME, ACCESS_TOKEN_LOCAL_STORAGE_NAME), validation patterns (VAR_REGEX, emailRegex, validPassword), and feature toggles for dataset defaults, agent settings, and various UI capabilities.

This configuration is imported throughout the frontend codebase by components, hooks, and service layers that need to determine API routing, validate user input, configure model parameters, or check edition-specific feature availability.

Usage

Import specific configuration values from @/config whenever a component or service needs to reference API endpoints, check the current edition, apply default model settings, validate input against regex patterns, or read environment-driven feature flags. The module is designed to be tree-shaken so only referenced exports are included in the production bundle.

Code Reference

Source Location

Signature

export const API_PREFIX: string
export const PUBLIC_API_PREFIX: string
export const MARKETPLACE_API_PREFIX: string
export const MARKETPLACE_URL_PREFIX: string

export const IS_CE_EDITION: boolean
export const IS_CLOUD_EDITION: boolean
export const IS_DEV: boolean
export const IS_PROD: boolean

export const TONE_LIST: readonly [
  { id: 1; name: 'Creative'; config: { temperature: 0.8; top_p: 0.9; ... } },
  { id: 2; name: 'Balanced'; config: { temperature: 0.5; top_p: 0.85; ... } },
  { id: 3; name: 'Precise'; config: { temperature: 0.2; top_p: 0.75; ... } },
  { id: 4; name: 'Custom'; config: undefined },
]

export const DEFAULT_CHAT_PROMPT_CONFIG: { prompt: [{ role: PromptRole.system; text: string }] }
export const DEFAULT_COMPLETION_PROMPT_CONFIG: { prompt: { text: string }; conversation_histories_role: { ... } }
export const getMaxToken: (modelId: string) => number
export const LOCALE_COOKIE_NAME: string
export const CSRF_COOKIE_NAME: () => string
export const CSRF_HEADER_NAME: string
export const VAR_REGEX: RegExp
export const DEFAULT_AGENT_SETTING: { enabled: boolean; max_iteration: number; strategy: AgentStrategy; tools: [] }
export const DEFAULT_AGENT_PROMPT: { chat: string; completion: string }
export const DATASET_DEFAULT: { top_k: number; score_threshold: number }
export const STOP_PARAMETER_RULE: ModelParameterRule

Import

import {
  API_PREFIX,
  PUBLIC_API_PREFIX,
  IS_CE_EDITION,
  IS_CLOUD_EDITION,
  TONE_LIST,
  DEFAULT_AGENT_SETTING,
  DATASET_DEFAULT,
  VAR_REGEX,
  CSRF_COOKIE_NAME,
} from '@/config'

I/O Contract

Inputs

Name Type Required Description
env.NEXT_PUBLIC_API_PREFIX string No API console prefix URL; defaults to http://localhost:5001/console/api
env.NEXT_PUBLIC_PUBLIC_API_PREFIX string No Public API prefix URL; defaults to http://localhost:5001/api
env.NEXT_PUBLIC_MARKETPLACE_API_PREFIX string No Marketplace API prefix URL; defaults to http://localhost:5002/api
env.NEXT_PUBLIC_EDITION string No Edition identifier: SELF_HOSTED or CLOUD
env.NEXT_PUBLIC_CSP_WHITELIST string No Content Security Policy whitelist domains
env.NEXT_PUBLIC_COOKIE_DOMAIN string No Cookie domain for CSRF token naming strategy
env.NEXT_PUBLIC_MAX_TOOLS_NUM number No Maximum number of tools allowed in agent configuration
env.NEXT_PUBLIC_MAX_PARALLEL_LIMIT number No Maximum parallel execution limit for workflow nodes
modelId string Yes (for getMaxToken) Model identifier string to determine max token count

Outputs

Name Type Description
API_PREFIX string Resolved console API endpoint URL
PUBLIC_API_PREFIX string Resolved public API endpoint URL
IS_CE_EDITION boolean True when running the Community (self-hosted) edition
IS_CLOUD_EDITION boolean True when running the Cloud edition
TONE_LIST readonly array Four preset tone configurations for LLM parameter tuning
CSRF_COOKIE_NAME() string Returns the appropriate CSRF cookie name based on protocol security
getMaxToken(modelId) number Returns 8000 for gpt-4/gpt-3.5-turbo-16k, 4000 otherwise
VAR_REGEX RegExp Regular expression for matching template variable references
DATASET_DEFAULT object Default retrieval settings: top_k=4, score_threshold=0.8
DEFAULT_AGENT_SETTING object Default agent configuration with function_call strategy

Usage Examples

Construct an API Request URL

import { API_PREFIX } from '@/config'

const url = `${API_PREFIX}/workspaces`
const response = await fetch(url, { headers: { 'Content-Type': 'application/json' } })

Check Edition for Feature Gating

import { IS_CE_EDITION, IS_CLOUD_EDITION } from '@/config'

if (IS_CLOUD_EDITION) {
  // Show billing and subscription features
}
if (IS_CE_EDITION) {
  // Show self-hosted configuration options
}

Apply a Tone Preset to Model Parameters

import { TONE_LIST } from '@/config'

const balancedTone = TONE_LIST.find(t => t.name === 'Balanced')
if (balancedTone?.config) {
  setModelParams({
    temperature: balancedTone.config.temperature,
    top_p: balancedTone.config.top_p,
  })
}

Validate a Template Variable Reference

import { VAR_REGEX, resetReg } from '@/config'

resetReg()
const matches = promptText.match(VAR_REGEX)
if (matches) {
  console.log('Found variable references:', matches)
}

Related Pages

Page Connections

Double-click a node to navigate. Hold to expand connections.
Principle
Implementation
Heuristic
Environment