2023-05-15 08:51:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								# Dify Backend API
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								## Usage
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								1.  Start the docker-compose stack
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   The backend require some middleware, including PostgreSQL, Redis, and Weaviate, which can be started together using `docker-compose` .
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   ```bash
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   cd ../docker
							 
						 
					
						
							
								
									
										
										
										
											2023-08-05 21:54:42 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								   docker-compose -f docker-compose.middleware.yaml -p dify up -d
							 
						 
					
						
							
								
									
										
										
										
											2023-05-15 08:51:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								   cd ../api
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   ```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								2.  Copy `.env.example`  to `.env` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								3.  Generate a `SECRET_KEY`  in the `.env`  file.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   ```bash
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   openssl rand -base64 42
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   ```
							 
						 
					
						
							
								
									
										
										
										
											2023-06-19 11:09:40 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								3.5 If you use annaconda, create a new environment and activate it
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   ```bash
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   conda create --name dify python=3.10
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   conda activate dify
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   ```
							 
						 
					
						
							
								
									
										
										
										
											2023-05-15 08:51:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								4.  Install dependencies
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   ```bash
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   pip install -r requirements.txt
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   ```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								5.  Run migrate
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   Before the first launch, migrate the database to the latest version.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   ```bash
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   flask db upgrade
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   ```
							 
						 
					
						
							
								
									
										
										
										
											2023-08-13 17:32:23 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   ⚠️ If you encounter problems with jieba, for example
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   ```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   >  flask db upgrade
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   Error: While importing 'app', an ImportError was raised:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   ```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   Please run the following command instead.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   ```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   pip install -r requirements.txt --upgrade --force-reinstall
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   ```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   
							 
						 
					
						
							
								
									
										
										
										
											2023-05-15 08:51:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								6.  Start backend:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   ```bash
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   flask run --host 0.0.0.0 --port=5001 --debug
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   ```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								7.  Setup your application by visiting http://localhost:5001/console/api/setup or other apis...
							 
						 
					
						
							
								
									
										
										
										
											2023-09-09 13:48:29 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								8.  If you need to debug local async processing, you can run `celery -A app.celery worker -P gevent -c 1 --loglevel INFO -Q dataset,generation,mail` , celery can do dataset importing and other async tasks.