You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
zhaobingshuang 3f7aa38d77
fix: #20560 When elasticsearch is used as the vector database, the Retrieval Test fails to filter the data after setting the Score Threshold, and the score of the recalled results is empty (#20561)
5 months ago
..
.idea fix nltk averaged_perceptron_tagger download and fix score limit is none (#7582) 1 year ago
.vscode feat/enhance the multi-modal support (#8818) 1 year ago
configs nacos config init , and force add ts parms. (#20526) 5 months ago
constants feat(api): Add image multimodal support for LLMNode (#17372) 6 months ago
contexts fix: Copy request context and current user in app generators. (#20240) 5 months ago
controllers Add APIs for Knowledge Base Tag Management and Dataset Binding (#20023) 5 months ago
core fix: #20560 When elasticsearch is used as the vector database, the Retrieval Test fails to filter the data after setting the Score Threshold, and the score of the recalled results is empty (#20561) 5 months ago
docker add MAX_TASK_PRE_CHILD for celery (#18985) 6 months ago
events Remove dead code (#17899) 6 months ago
extensions [Observability] Add type check and try-except in otel (#20319) 5 months ago
factories fix: drop some type fixme (#20344) 5 months ago
fields feat: add author_name for app list card (#16900) 5 months ago
libs refactor: Consolidate Flask-Login Authentication Logic (#20235) 5 months ago
migrations feat(api): Introduce `WorkflowDraftVariable` Model (#19737) 5 months ago
models fix(models): WorkflowRun's total_steps and exceptions_count mismatch with database (#20452) 5 months ago
schedule fix: drop some type fixme (#20344) 5 months ago
services Add APIs for Knowledge Base Tag Management and Dataset Binding (#20023) 5 months ago
tasks fix celery job not closed issue (#19268) 5 months ago
templates E-300 (#19726) 5 months ago
tests refactor(api/core/workflow/enums): Rename WORKFLOW_RUN_ID to WORKFLOW_EXECUTION_ID (#20459) 5 months ago
.dockerignore Enhance Code Consistency Across Repository with `.editorconfig` (#19023) 6 months ago
.env.example feat(qdrant):add replication_factor when create collection in qdrant (#20133) 5 months ago
.ruff.toml chore(api): enhance ruff rules to disallow dangerous functions and modules (#16461) 7 months ago
Dockerfile build: introduce uv as Python package manager (#16317) 6 months ago
README.md chore: required pip and performance improvment in mypy checks (#19225) 6 months ago
app.py chore: avoid repeated type ignore noqa by adding flask_restful and flask_login in mypy import exclusions (#19224) 6 months ago
app_factory.py feat: add debug log for request and response (#19781) (#19783) 5 months ago
commands.py fix(housekeeping): exclude files that are used as app icons or avatar images from being removed (#20532) 5 months ago
dify_app.py refactor: assembling the app features in modular way (#9129) 11 months ago
mypy.ini chore: avoid repeated type ignore noqa by adding flask_restful and flask_login in mypy import exclusions (#19224) 6 months ago
pyproject.toml feat(agent_node): ensure that the enum-checking syntax is compatible with Python 3.11. (#20373) 5 months ago
pytest.ini Refactor/remove db from cycle manager (#20455) 5 months ago
uv.lock feat(agent_node): ensure that the enum-checking syntax is compatible with Python 3.11. (#20373) 5 months ago

README.md

Dify Backend API

Usage

[!IMPORTANT]

In the v1.3.0 release, poetry has been replaced with uv as the package manager for Dify API backend service.

  1. Start the docker-compose stack

The backend require some middleware, including PostgreSQL, Redis, and Weaviate, which can be started together using docker-compose.

   cd ../docker
   cp middleware.env.example middleware.env
   # change the profile to other vector database if you are not using weaviate
   docker compose -f docker-compose.middleware.yaml --profile weaviate -p dify up -d
   cd ../api
  1. Copy .env.example to .env
   cp .env.example .env 
  1. Generate a SECRET_KEY in the .env file.

bash for Linux

   sed -i "/^SECRET_KEY=/c\SECRET_KEY=$(openssl rand -base64 42)" .env

bash for Mac

   secret_key=$(openssl rand -base64 42)
   sed -i '' "/^SECRET_KEY=/c\\
   SECRET_KEY=${secret_key}" .env
  1. Create environment.

Dify API service uses UV to manage dependencies. First, you need to add the uv package manager, if you don’t have it already.

   pip install uv
   # Or on macOS
   brew install uv
  1. Install dependencies
   uv sync --dev
  1. Run migrate

Before the first launch, migrate the database to the latest version.

   uv run flask db upgrade
  1. Start backend
   uv run flask run --host 0.0.0.0 --port=5001 --debug
  1. Start Dify web service.
  2. Setup your application by visiting http://localhost:3000.
  3. If you need to handle and debug the async tasks (e.g. dataset importing and documents indexing), please start the worker service.
   uv run celery -A app.celery worker -P gevent -c 1 --loglevel INFO -Q dataset,generation,mail,ops_trace,app_deletion

Testing

  1. Install dependencies for both the backend and the test environment
   uv sync --dev
  1. Run the tests locally with mocked system environment variables in tool.pytest_env section in pyproject.toml
   uv run -P api bash dev/pytest/pytest_all_tests.sh