2024-08-28 06:10:27 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								import  json  
						 
					
						
							
								
									
										
										
										
											2024-03-21 07:11:36 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								import  logging  
						 
					
						
							
								
									
										
										
										
											2024-08-28 06:10:27 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								import  os  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								import  shutil  
						 
					
						
							
								
									
										
										
										
											2025-02-16 18:33:25 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								import  base64  
						 
					
						
							
								
									
										
										
										
											2025-03-09 01:59:15 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								import  redis  
						 
					
						
							
								
									
										
										
										
											2025-02-16 18:33:25 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-08-25 22:52:36 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								from  datetime  import  datetime  
						 
					
						
							
								
									
										
										
										
											2024-01-07 17:40:36 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								from  pathlib  import  Path  
						 
					
						
							
								
									
										
										
										
											2024-08-28 06:10:27 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								from  typing  import  Generic ,  Optional ,  TypeVar  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								from  urllib . parse  import  urlparse  
						 
					
						
							
								
									
										
										
										
											2024-02-25 14:35:11 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-24 09:12:19 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								import  requests  
						 
					
						
							
								
									
										
										
										
											2025-01-16 08:01:26 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								from  pydantic  import  BaseModel  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								from  sqlalchemy  import  JSON ,  Column ,  DateTime ,  Integer ,  func  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-09-04 22:54:48 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								from  open_webui . env  import  (  
						 
					
						
							
								
									
										
										
										
											2024-08-28 06:10:27 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    DATA_DIR , 
							 
						 
					
						
							
								
									
										
										
										
											2025-01-16 08:01:26 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    DATABASE_URL , 
							 
						 
					
						
							
								
									
										
										
										
											2024-08-28 06:10:27 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    ENV , 
							 
						 
					
						
							
								
									
										
										
										
											2025-03-09 01:59:15 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    REDIS_URL , 
							 
						 
					
						
							
								
									
										
										
										
											2024-08-28 06:10:27 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    FRONTEND_BUILD_DIR , 
							 
						 
					
						
							
								
									
										
										
										
											2025-01-16 08:01:26 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    OFFLINE_MODE , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    OPEN_WEBUI_DIR , 
							 
						 
					
						
							
								
									
										
										
										
											2024-08-25 22:52:36 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    WEBUI_AUTH , 
							 
						 
					
						
							
								
									
										
										
										
											2024-08-28 06:10:27 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    WEBUI_FAVICON_URL , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    WEBUI_NAME , 
							 
						 
					
						
							
								
									
										
										
										
											2024-08-25 22:52:36 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    log , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
									
										
										
										
											2025-01-16 08:01:26 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								from  open_webui . internal . db  import  Base ,  get_db  
						 
					
						
							
								
									
										
										
										
											2024-04-12 17:27:40 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-07-18 04:24:34 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								class  EndpointFilter ( logging . Filter ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    def  filter ( self ,  record :  logging . LogRecord )  - >  bool : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  record . getMessage ( ) . find ( " /health " )  ==  - 1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# Filter out /endpoint  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								logging . getLogger ( " uvicorn.access " ) . addFilter ( EndpointFilter ( ) )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-01-07 17:40:36 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								####################################  
						 
					
						
							
								
									
										
										
										
											2024-08-25 22:52:36 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# Config helpers  
						 
					
						
							
								
									
										
										
										
											2024-01-07 17:40:36 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								####################################  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-08-25 22:52:36 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# Function to run the alembic migrations  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  run_migrations ( ) :  
						 
					
						
							
								
									
										
										
										
											2025-02-25 22:36:25 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    log . info ( " Running migrations " ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-05-20 11:12:03 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    try : 
							 
						 
					
						
							
								
									
										
										
										
											2024-08-25 22:52:36 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        from  alembic  import  command 
							 
						 
					
						
							
								
									
										
										
										
											2024-08-28 06:10:27 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        from  alembic . config  import  Config 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-23 16:36:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-09-04 22:54:48 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        alembic_cfg  =  Config ( OPEN_WEBUI_DIR  /  " alembic.ini " ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-09-04 23:33:39 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        # Set the script location dynamically 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        migrations_path  =  OPEN_WEBUI_DIR  /  " migrations " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        alembic_cfg . set_main_option ( " script_location " ,  str ( migrations_path ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-08-25 22:52:36 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        command . upgrade ( alembic_cfg ,  " head " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    except  Exception  as  e : 
							 
						 
					
						
							
								
									
										
										
										
											2025-02-25 22:36:25 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        log . exception ( f " Error running migrations:  { e } " ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-05-10 14:18:39 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-23 16:36:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-10-06 03:40:13 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								run_migrations ( )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-08-25 22:52:36 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								class  Config ( Base ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    __tablename__  =  " config " 
							 
						 
					
						
							
								
									
										
										
										
											2024-05-09 07:33:34 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-08-25 22:52:36 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    id  =  Column ( Integer ,  primary_key = True ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    data  =  Column ( JSON ,  nullable = False ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    version  =  Column ( Integer ,  nullable = False ,  default = 0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    created_at  =  Column ( DateTime ,  nullable = False ,  server_default = func . now ( ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    updated_at  =  Column ( DateTime ,  nullable = True ,  onupdate = func . now ( ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-05-09 07:33:34 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-04-09 18:32:28 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-08-25 23:54:51 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								def  load_json_config ( ) :  
						 
					
						
							
								
									
										
										
										
											2024-08-25 22:52:36 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    with  open ( f " { DATA_DIR } /config.json " ,  " r " )  as  file : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  json . load ( file ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-09 18:32:28 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-06-03 09:14:36 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-08-25 22:52:36 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								def  save_to_db ( data ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    with  get_db ( )  as  db : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        existing_config  =  db . query ( Config ) . first ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  not  existing_config : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            new_config  =  Config ( data = data ,  version = 0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            db . add ( new_config ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        else : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            existing_config . data  =  data 
							 
						 
					
						
							
								
									
										
										
										
											2024-08-25 23:54:51 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            existing_config . updated_at  =  datetime . now ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            db . add ( existing_config ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-08-25 22:52:36 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        db . commit ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-09 18:32:28 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-05-10 13:36:10 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-09-25 07:06:11 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								def  reset_config ( ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    with  get_db ( )  as  db : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        db . query ( Config ) . delete ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        db . commit ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-08-25 22:52:36 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# When initializing, check if config.json exists and migrate it to the database  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  os . path . exists ( f " { DATA_DIR } /config.json " ) :  
						 
					
						
							
								
									
										
										
										
											2024-08-25 23:54:51 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    data  =  load_json_config ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-08-25 22:52:36 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    save_to_db ( data ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . rename ( f " { DATA_DIR } /config.json " ,  f " { DATA_DIR } /old_config.json " ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-05-10 13:36:10 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-08-26 00:42:27 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								DEFAULT_CONFIG  =  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " version " :  0 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " ui " :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " default_locale " :  " " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " prompt_suggestions " :  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                " title " :  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    " Help me study " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    " vocabulary for a college entrance exam " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                " content " :  " Help me study vocabulary: write a sentence for me to fill in the blank, and I ' ll try to pick the correct option. " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                " title " :  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    " Give me ideas " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    " for what to do with my kids '  art " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                " content " :  " What are 5 creative things I could do with my kids '  art? I don ' t want to throw them away, but it ' s also so much clutter. " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                " title " :  [ " Tell me a fun fact " ,  " about the Roman Empire " ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                " content " :  " Tell me a random fun fact about the Roman Empire " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                " title " :  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    " Show me a code snippet " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    " of a website ' s sticky header " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                " content " :  " Show me a code snippet of a website ' s sticky header in CSS and JavaScript. " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                " title " :  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    " Explain options trading " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    " if I ' m familiar with buying and selling stocks " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                " content " :  " Explain options trading in simple terms if I ' m familiar with buying and selling stocks. " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                " title " :  [ " Overcome procrastination " ,  " give me tips " ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                " content " :  " Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it? " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                " title " :  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    " Grammar check " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    " rewrite it for better readability  " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                " content " :  ' Check the following sentence for grammar and clarity:  " [sentence] " . Rewrite it for better readability while maintaining its original meaning. ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-08-25 23:54:51 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								def  get_config ( ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    with  get_db ( )  as  db : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        config_entry  =  db . query ( Config ) . order_by ( Config . id . desc ( ) ) . first ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-08-26 00:42:27 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        return  config_entry . data  if  config_entry  else  DEFAULT_CONFIG 
							 
						 
					
						
							
								
									
										
										
										
											2024-08-25 23:54:51 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CONFIG_DATA  =  get_config ( )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-05-10 13:36:10 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								def  get_config_value ( config_path :  str ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    path_parts  =  config_path . split ( " . " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    cur_config  =  CONFIG_DATA 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for  key  in  path_parts : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  key  in  cur_config : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            cur_config  =  cur_config [ key ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        else : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  None 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  cur_config 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-09-04 03:46:40 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								PERSISTENT_CONFIG_REGISTRY  =  [ ]  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  save_config ( config ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    global  CONFIG_DATA 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    global  PERSISTENT_CONFIG_REGISTRY 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    try : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        save_to_db ( config ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        CONFIG_DATA  =  config 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        # Trigger updates on all registered PersistentConfig entries 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        for  config_item  in  PERSISTENT_CONFIG_REGISTRY : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            config_item . update ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    except  Exception  as  e : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        log . exception ( e ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  False 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  True 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-05-10 13:36:10 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								T  =  TypeVar ( " T " )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-05-14 05:32:21 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								class  PersistentConfig ( Generic [ T ] ) :  
						 
					
						
							
								
									
										
										
										
											2024-05-10 13:36:10 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    def  __init__ ( self ,  env_name :  str ,  config_path :  str ,  env_value :  T ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        self . env_name  =  env_name 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        self . config_path  =  config_path 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        self . env_value  =  env_value 
							 
						 
					
						
							
								
									
										
										
										
											2024-08-25 23:54:51 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        self . config_value  =  get_config_value ( config_path ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-05-10 13:36:10 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        if  self . config_value  is  not  None : 
							 
						 
					
						
							
								
									
										
										
										
											2024-08-25 22:52:36 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            log . info ( f " ' { env_name } '  loaded from the latest database entry " ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-05-10 13:36:10 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            self . value  =  self . config_value 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        else : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            self . value  =  env_value 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-09-04 03:46:40 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        PERSISTENT_CONFIG_REGISTRY . append ( self ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-05-10 13:36:10 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    def  __str__ ( self ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  str ( self . value ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-08-25 23:54:51 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    @property 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    def  __dict__ ( self ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        raise  TypeError ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " PersistentConfig object cannot be converted to dict, use config_get or .value instead. " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    def  __getattribute__ ( self ,  item ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  item  ==  " __dict__ " : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            raise  TypeError ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                " PersistentConfig object cannot be converted to dict, use config_get or .value instead. " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  super ( ) . __getattribute__ ( item ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-05-10 14:18:39 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-09-04 03:46:40 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    def  update ( self ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        new_value  =  get_config_value ( self . config_path ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  new_value  is  not  None : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            self . value  =  new_value 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            log . info ( f " Updated  { self . env_name }  to new value  { self . value } " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-05-10 13:36:10 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    def  save ( self ) : 
							 
						 
					
						
							
								
									
										
										
										
											2024-08-25 22:52:36 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        log . info ( f " Saving  ' { self . env_name } '  to the database " ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-05-10 13:36:10 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        path_parts  =  self . config_path . split ( " . " ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-08-25 23:54:51 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        sub_config  =  CONFIG_DATA 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        for  key  in  path_parts [ : - 1 ] : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  key  not  in  sub_config : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                sub_config [ key ]  =  { } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            sub_config  =  sub_config [ key ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        sub_config [ path_parts [ - 1 ] ]  =  self . value 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        save_to_db ( CONFIG_DATA ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-05-10 13:36:10 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        self . config_value  =  self . value 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-05-10 15:03:24 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								class  AppConfig :  
						 
					
						
							
								
									
										
										
										
											2024-05-14 05:32:21 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    _state :  dict [ str ,  PersistentConfig ] 
							 
						 
					
						
							
								
									
										
										
										
											2025-03-09 01:59:15 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _redis :  Optional [ redis . Redis ]  =  None 
							 
						 
					
						
							
								
									
										
										
										
											2024-05-10 15:03:24 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-03-09 01:59:15 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    def  __init__ ( self ,  redis_url :  Optional [ str ]  =  None ) : 
							 
						 
					
						
							
								
									
										
										
										
											2024-05-10 15:03:24 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        super ( ) . __setattr__ ( " _state " ,  { } ) 
							 
						 
					
						
							
								
									
										
										
										
											2025-03-09 01:59:15 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  redis_url : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            super ( ) . __setattr__ ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                " _redis " ,  redis . Redis . from_url ( redis_url ,  decode_responses = True ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-05-10 15:03:24 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    def  __setattr__ ( self ,  key ,  value ) : 
							 
						 
					
						
							
								
									
										
										
										
											2024-05-14 05:32:21 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        if  isinstance ( value ,  PersistentConfig ) : 
							 
						 
					
						
							
								
									
										
										
										
											2024-05-10 15:03:24 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            self . _state [ key ]  =  value 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        else : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            self . _state [ key ] . value  =  value 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            self . _state [ key ] . save ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-03-09 01:59:15 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if  self . _redis : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                redis_key  =  f " open-webui:config: { key } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                self . _redis . set ( redis_key ,  json . dumps ( self . _state [ key ] . value ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-05-10 15:03:24 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    def  __getattr__ ( self ,  key ) : 
							 
						 
					
						
							
								
									
										
										
										
											2025-03-09 01:59:15 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  key  not  in  self . _state : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            raise  AttributeError ( f " Config key  ' { key } '  not found " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        # If Redis is available, check for an updated value 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  self . _redis : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            redis_key  =  f " open-webui:config: { key } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            redis_value  =  self . _redis . get ( redis_key ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  redis_value  is  not  None : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                try : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    decoded_value  =  json . loads ( redis_value ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    # Update the in-memory value if different 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    if  self . _state [ key ] . value  !=  decoded_value : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        self . _state [ key ] . value  =  decoded_value 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        log . info ( f " Updated  { key }  from Redis:  { decoded_value } " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                except  json . JSONDecodeError : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    log . error ( f " Invalid JSON format in Redis for  { key } :  { redis_value } " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-05-10 15:03:24 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        return  self . _state [ key ] . value 
							 
						 
					
						
							
								
									
										
										
										
											2024-05-10 13:36:10 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								####################################  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# WEBUI_AUTH (Required for security)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								####################################  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-11-20 04:17:23 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								ENABLE_API_KEY  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " ENABLE_API_KEY " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " auth.api_key.enable " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " ENABLE_API_KEY " ,  " True " ) . lower ( )  ==  " true " , 
							 
						 
					
						
							
								
									
										
										
										
											2024-11-19 22:14:52 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-12-27 12:57:51 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								ENABLE_API_KEY_ENDPOINT_RESTRICTIONS  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " ENABLE_API_KEY_ENDPOINT_RESTRICTIONS " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " auth.api_key.endpoint_restrictions " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " ENABLE_API_KEY_ENDPOINT_RESTRICTIONS " ,  " False " ) . lower ( )  ==  " true " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								API_KEY_ALLOWED_ENDPOINTS  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " API_KEY_ALLOWED_ENDPOINTS " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " auth.api_key.allowed_endpoints " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " API_KEY_ALLOWED_ENDPOINTS " ,  " " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-11-20 04:17:23 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-05-14 05:32:21 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								JWT_EXPIRES_IN  =  PersistentConfig (  
						 
					
						
							
								
									
										
										
										
											2024-05-10 13:36:10 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    " JWT_EXPIRES_IN " ,  " auth.jwt_expiry " ,  os . environ . get ( " JWT_EXPIRES_IN " ,  " -1 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-05-26 15:37:09 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								####################################  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# OAuth config  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								####################################  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								ENABLE_OAUTH_SIGNUP  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " ENABLE_OAUTH_SIGNUP " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " oauth.enable_signup " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " ENABLE_OAUTH_SIGNUP " ,  " False " ) . lower ( )  ==  " true " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-05-28 00:21:24 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								OAUTH_MERGE_ACCOUNTS_BY_EMAIL  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " OAUTH_MERGE_ACCOUNTS_BY_EMAIL " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " oauth.merge_accounts_by_email " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " OAUTH_MERGE_ACCOUNTS_BY_EMAIL " ,  " False " ) . lower ( )  ==  " true " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-05-26 15:37:09 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								OAUTH_PROVIDERS  =  { }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-05-28 00:21:24 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								GOOGLE_CLIENT_ID  =  PersistentConfig (  
						 
					
						
							
								
									
										
										
										
											2024-12-17 04:10:01 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    " GOOGLE_CLIENT_ID " , 
							 
						 
					
						
							
								
									
										
										
										
											2024-05-28 00:21:24 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    " oauth.google.client_id " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " GOOGLE_CLIENT_ID " ,  " " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								GOOGLE_CLIENT_SECRET  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " GOOGLE_CLIENT_SECRET " , 
							 
						 
					
						
							
								
									
										
										
										
											2024-12-17 04:10:01 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    " oauth.google.client_secret " , 
							 
						 
					
						
							
								
									
										
										
										
											2024-05-28 00:21:24 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " GOOGLE_CLIENT_SECRET " ,  " " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-12-17 03:43:33 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-05-28 00:21:24 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								GOOGLE_OAUTH_SCOPE  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " GOOGLE_OAUTH_SCOPE " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " oauth.google.scope " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " GOOGLE_OAUTH_SCOPE " ,  " openid email profile " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-07-19 15:03:41 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								GOOGLE_REDIRECT_URI  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " GOOGLE_REDIRECT_URI " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " oauth.google.redirect_uri " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " GOOGLE_REDIRECT_URI " ,  " " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-05-28 00:21:24 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								MICROSOFT_CLIENT_ID  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " MICROSOFT_CLIENT_ID " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " oauth.microsoft.client_id " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " MICROSOFT_CLIENT_ID " ,  " " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								MICROSOFT_CLIENT_SECRET  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " MICROSOFT_CLIENT_SECRET " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " oauth.microsoft.client_secret " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " MICROSOFT_CLIENT_SECRET " ,  " " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								MICROSOFT_CLIENT_TENANT_ID  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " MICROSOFT_CLIENT_TENANT_ID " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " oauth.microsoft.tenant_id " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " MICROSOFT_CLIENT_TENANT_ID " ,  " " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								MICROSOFT_OAUTH_SCOPE  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " MICROSOFT_OAUTH_SCOPE " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " oauth.microsoft.scope " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " MICROSOFT_OAUTH_SCOPE " ,  " openid email profile " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-07-19 15:03:41 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								MICROSOFT_REDIRECT_URI  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " MICROSOFT_REDIRECT_URI " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " oauth.microsoft.redirect_uri " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " MICROSOFT_REDIRECT_URI " ,  " " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-01-17 13:22:35 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								GITHUB_CLIENT_ID  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " GITHUB_CLIENT_ID " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " oauth.github.client_id " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " GITHUB_CLIENT_ID " ,  " " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								GITHUB_CLIENT_SECRET  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " GITHUB_CLIENT_SECRET " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " oauth.github.client_secret " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " GITHUB_CLIENT_SECRET " ,  " " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								GITHUB_CLIENT_SCOPE  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " GITHUB_CLIENT_SCOPE " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " oauth.github.scope " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " GITHUB_CLIENT_SCOPE " ,  " user:email " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								GITHUB_CLIENT_REDIRECT_URI  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " GITHUB_CLIENT_REDIRECT_URI " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " oauth.github.redirect_uri " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " GITHUB_CLIENT_REDIRECT_URI " ,  " " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-05-28 00:21:24 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								OAUTH_CLIENT_ID  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " OAUTH_CLIENT_ID " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " oauth.oidc.client_id " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " OAUTH_CLIENT_ID " ,  " " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								OAUTH_CLIENT_SECRET  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " OAUTH_CLIENT_SECRET " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " oauth.oidc.client_secret " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " OAUTH_CLIENT_SECRET " ,  " " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								OPENID_PROVIDER_URL  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " OPENID_PROVIDER_URL " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " oauth.oidc.provider_url " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " OPENID_PROVIDER_URL " ,  " " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-07-19 15:03:41 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								OPENID_REDIRECT_URI  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " OPENID_REDIRECT_URI " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " oauth.oidc.redirect_uri " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " OPENID_REDIRECT_URI " ,  " " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-05-28 00:21:24 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								OAUTH_SCOPES  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " OAUTH_SCOPES " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " oauth.oidc.scopes " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " OAUTH_SCOPES " ,  " openid email profile " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								OAUTH_PROVIDER_NAME  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " OAUTH_PROVIDER_NAME " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " oauth.oidc.provider_name " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " OAUTH_PROVIDER_NAME " ,  " SSO " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-06-28 21:31:40 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								OAUTH_USERNAME_CLAIM  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " OAUTH_USERNAME_CLAIM " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " oauth.oidc.username_claim " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " OAUTH_USERNAME_CLAIM " ,  " name " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								OAUTH_PICTURE_CLAIM  =  PersistentConfig (  
						 
					
						
							
								
									
										
										
										
											2024-10-04 02:55:32 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    " OAUTH_PICTURE_CLAIM " , 
							 
						 
					
						
							
								
									
										
										
										
											2024-06-28 21:31:40 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    " oauth.oidc.avatar_claim " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " OAUTH_PICTURE_CLAIM " ,  " picture " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-08-08 02:39:51 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								OAUTH_EMAIL_CLAIM  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " OAUTH_EMAIL_CLAIM " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " oauth.oidc.email_claim " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " OAUTH_EMAIL_CLAIM " ,  " email " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-12-18 03:38:07 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								OAUTH_GROUPS_CLAIM  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " OAUTH_GROUPS_CLAIM " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " oauth.oidc.group_claim " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " OAUTH_GROUP_CLAIM " ,  " groups " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-10-11 05:00:05 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								ENABLE_OAUTH_ROLE_MANAGEMENT  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " ENABLE_OAUTH_ROLE_MANAGEMENT " , 
							 
						 
					
						
							
								
									
										
										
										
											2024-10-04 02:55:32 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    " oauth.enable_role_mapping " , 
							 
						 
					
						
							
								
									
										
										
										
											2024-10-11 05:00:05 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    os . environ . get ( " ENABLE_OAUTH_ROLE_MANAGEMENT " ,  " False " ) . lower ( )  ==  " true " , 
							 
						 
					
						
							
								
									
										
										
										
											2024-10-04 02:55:32 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-12-18 03:38:07 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								ENABLE_OAUTH_GROUP_MANAGEMENT  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " ENABLE_OAUTH_GROUP_MANAGEMENT " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " oauth.enable_group_mapping " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " ENABLE_OAUTH_GROUP_MANAGEMENT " ,  " False " ) . lower ( )  ==  " true " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-10-04 02:55:32 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								OAUTH_ROLES_CLAIM  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " OAUTH_ROLES_CLAIM " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " oauth.roles_claim " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " OAUTH_ROLES_CLAIM " ,  " roles " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-10-11 05:00:05 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								OAUTH_ALLOWED_ROLES  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " OAUTH_ALLOWED_ROLES " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " oauth.allowed_roles " , 
							 
						 
					
						
							
								
									
										
										
										
											2024-10-21 09:38:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        role . strip ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        for  role  in  os . environ . get ( " OAUTH_ALLOWED_ROLES " ,  " user,admin " ) . split ( " , " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ] , 
							 
						 
					
						
							
								
									
										
										
										
											2024-10-11 05:00:05 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								OAUTH_ADMIN_ROLES  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " OAUTH_ADMIN_ROLES " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " oauth.admin_roles " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    [ role . strip ( )  for  role  in  os . environ . get ( " OAUTH_ADMIN_ROLES " ,  " admin " ) . split ( " , " ) ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
									
										
										
										
											2024-05-26 15:37:09 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-12-02 16:36:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								OAUTH_ALLOWED_DOMAINS  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " OAUTH_ALLOWED_DOMAINS " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " oauth.allowed_domains " , 
							 
						 
					
						
							
								
									
										
										
										
											2024-12-10 16:54:13 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        domain . strip ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        for  domain  in  os . environ . get ( " OAUTH_ALLOWED_DOMAINS " ,  " * " ) . split ( " , " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ] , 
							 
						 
					
						
							
								
									
										
										
										
											2024-12-02 16:36:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-10-21 09:38:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-05-28 00:21:24 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								def  load_oauth_providers ( ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    OAUTH_PROVIDERS . clear ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  GOOGLE_CLIENT_ID . value  and  GOOGLE_CLIENT_SECRET . value : 
							 
						 
					
						
							
								
									
										
										
										
											2025-01-20 03:59:07 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-01-17 12:56:03 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        def  google_oauth_register ( client ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            client . register ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                name = " google " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                client_id = GOOGLE_CLIENT_ID . value , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                client_secret = GOOGLE_CLIENT_SECRET . value , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                server_metadata_url = " https://accounts.google.com/.well-known/openid-configuration " , 
							 
						 
					
						
							
								
									
										
										
										
											2025-01-20 03:59:07 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                client_kwargs = { " scope " :  GOOGLE_OAUTH_SCOPE . value } , 
							 
						 
					
						
							
								
									
										
										
										
											2025-01-17 12:56:03 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                redirect_uri = GOOGLE_REDIRECT_URI . value , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ) 
							 
						 
					
						
							
								
									
										
										
										
											2025-01-20 03:59:07 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-05-28 00:21:24 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        OAUTH_PROVIDERS [ " google " ]  =  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-07-19 15:03:41 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            " redirect_uri " :  GOOGLE_REDIRECT_URI . value , 
							 
						 
					
						
							
								
									
										
										
										
											2025-01-17 12:56:03 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            " register " :  google_oauth_register , 
							 
						 
					
						
							
								
									
										
										
										
											2024-05-28 00:21:24 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        MICROSOFT_CLIENT_ID . value 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        and  MICROSOFT_CLIENT_SECRET . value 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        and  MICROSOFT_CLIENT_TENANT_ID . value 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) : 
							 
						 
					
						
							
								
									
										
										
										
											2025-01-20 03:59:07 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-01-17 12:56:03 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        def  microsoft_oauth_register ( client ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            client . register ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                name = " microsoft " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                client_id = MICROSOFT_CLIENT_ID . value , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                client_secret = MICROSOFT_CLIENT_SECRET . value , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                server_metadata_url = f " https://login.microsoftonline.com/ { MICROSOFT_CLIENT_TENANT_ID . value } /v2.0/.well-known/openid-configuration " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                client_kwargs = { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    " scope " :  MICROSOFT_OAUTH_SCOPE . value , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                redirect_uri = MICROSOFT_REDIRECT_URI . value , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ) 
							 
						 
					
						
							
								
									
										
										
										
											2025-01-20 03:59:07 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-05-28 00:21:24 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        OAUTH_PROVIDERS [ " microsoft " ]  =  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-07-19 15:03:41 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            " redirect_uri " :  MICROSOFT_REDIRECT_URI . value , 
							 
						 
					
						
							
								
									
										
										
										
											2025-01-15 09:18:16 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            " picture_url " :  " https://graph.microsoft.com/v1.0/me/photo/$value " , 
							 
						 
					
						
							
								
									
										
										
										
											2025-01-17 12:56:03 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            " register " :  microsoft_oauth_register , 
							 
						 
					
						
							
								
									
										
										
										
											2024-05-28 00:21:24 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-01-17 13:22:35 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  GITHUB_CLIENT_ID . value  and  GITHUB_CLIENT_SECRET . value : 
							 
						 
					
						
							
								
									
										
										
										
											2025-01-20 03:59:07 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-01-17 13:22:35 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        def  github_oauth_register ( client ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            client . register ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                name = " github " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                client_id = GITHUB_CLIENT_ID . value , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                client_secret = GITHUB_CLIENT_SECRET . value , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                access_token_url = " https://github.com/login/oauth/access_token " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                authorize_url = " https://github.com/login/oauth/authorize " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                api_base_url = " https://api.github.com " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                userinfo_endpoint = " https://api.github.com/user " , 
							 
						 
					
						
							
								
									
										
										
										
											2025-01-20 03:59:07 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                client_kwargs = { " scope " :  GITHUB_CLIENT_SCOPE . value } , 
							 
						 
					
						
							
								
									
										
										
										
											2025-01-17 13:22:35 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                redirect_uri = GITHUB_CLIENT_REDIRECT_URI . value , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ) 
							 
						 
					
						
							
								
									
										
										
										
											2025-01-20 03:59:07 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-01-17 13:22:35 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        OAUTH_PROVIDERS [ " github " ]  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " redirect_uri " :  GITHUB_CLIENT_REDIRECT_URI . value , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " register " :  github_oauth_register , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " sub_claim " :  " id " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-05-28 00:21:24 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    if  ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        OAUTH_CLIENT_ID . value 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        and  OAUTH_CLIENT_SECRET . value 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        and  OPENID_PROVIDER_URL . value 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) : 
							 
						 
					
						
							
								
									
										
										
										
											2025-01-20 03:59:07 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-01-17 12:56:03 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        def  oidc_oauth_register ( client ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            client . register ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                name = " oidc " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                client_id = OAUTH_CLIENT_ID . value , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                client_secret = OAUTH_CLIENT_SECRET . value , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                server_metadata_url = OPENID_PROVIDER_URL . value , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                client_kwargs = { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    " scope " :  OAUTH_SCOPES . value , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                redirect_uri = OPENID_REDIRECT_URI . value , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ) 
							 
						 
					
						
							
								
									
										
										
										
											2025-01-20 03:59:07 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-05-28 00:21:24 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        OAUTH_PROVIDERS [ " oidc " ]  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " name " :  OAUTH_PROVIDER_NAME . value , 
							 
						 
					
						
							
								
									
										
										
										
											2025-01-17 13:22:35 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            " redirect_uri " :  OPENID_REDIRECT_URI . value , 
							 
						 
					
						
							
								
									
										
										
										
											2025-01-17 12:56:03 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            " register " :  oidc_oauth_register , 
							 
						 
					
						
							
								
									
										
										
										
											2024-05-28 00:21:24 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								load_oauth_providers ( )  
						 
					
						
							
								
									
										
										
										
											2024-05-26 15:37:09 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-04-09 18:32:28 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								####################################  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# Static DIR  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								####################################  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-09-04 22:54:48 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								STATIC_DIR  =  Path ( os . getenv ( " STATIC_DIR " ,  OPEN_WEBUI_DIR  /  " static " ) ) . resolve ( )  
						 
					
						
							
								
									
										
										
										
											2024-04-09 18:32:28 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-03-04 17:47:17 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								for  file_path  in  ( FRONTEND_BUILD_DIR  /  " static " ) . glob ( " **/* " ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  file_path . is_file ( ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        target_path  =  STATIC_DIR  /  file_path . relative_to ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ( FRONTEND_BUILD_DIR  /  " static " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        target_path . parent . mkdir ( parents = True ,  exist_ok = True ) 
							 
						 
					
						
							
								
									
										
										
										
											2025-03-06 11:14:43 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        try : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            shutil . copyfile ( file_path ,  target_path ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        except  Exception  as  e : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            logging . error ( f " An error occurred:  { e } " ) 
							 
						 
					
						
							
								
									
										
										
										
											2025-03-04 17:47:17 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-07-09 14:21:17 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								frontend_favicon  =  FRONTEND_BUILD_DIR  /  " static "  /  " favicon.png "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-05-14 11:53:46 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								if  frontend_favicon . exists ( ) :  
						 
					
						
							
								
									
										
										
										
											2024-06-08 13:56:08 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    try : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        shutil . copyfile ( frontend_favicon ,  STATIC_DIR  /  " favicon.png " ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-06-10 21:27:35 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    except  Exception  as  e : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        logging . error ( f " An error occurred:  { e } " ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-24 09:12:19 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-07-09 14:21:17 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								frontend_splash  =  FRONTEND_BUILD_DIR  /  " static "  /  " splash.png "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  frontend_splash . exists ( ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    try : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        shutil . copyfile ( frontend_splash ,  STATIC_DIR  /  " splash.png " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    except  Exception  as  e : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        logging . error ( f " An error occurred:  { e } " ) 
							 
						 
					
						
							
								
									
										
										
										
											2025-02-17 10:35:09 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								frontend_loader  =  FRONTEND_BUILD_DIR  /  " static "  /  " loader.js "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  frontend_loader . exists ( ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    try : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        shutil . copyfile ( frontend_loader ,  STATIC_DIR  /  " loader.js " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    except  Exception  as  e : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        logging . error ( f " An error occurred:  { e } " ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-07-09 14:21:17 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-24 09:12:19 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								####################################  
						 
					
						
							
								
									
										
										
										
											2025-02-17 10:35:09 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# CUSTOM_NAME (Legacy)  
						 
					
						
							
								
									
										
										
										
											2024-02-24 09:12:19 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								####################################  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CUSTOM_NAME  =  os . environ . get ( " CUSTOM_NAME " ,  " " )  
						 
					
						
							
								
									
										
										
										
											2024-04-04 12:24:57 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-24 09:12:19 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								if  CUSTOM_NAME :  
						 
					
						
							
								
									
										
										
										
											2024-02-24 09:36:38 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    try : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        r  =  requests . get ( f " https://api.openwebui.com/api/v1/custom/ { CUSTOM_NAME } " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        data  =  r . json ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  r . ok : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  " logo "  in  data : 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-26 15:45:36 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                WEBUI_FAVICON_URL  =  url  =  ( 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-24 09:36:38 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                    f " https://api.openwebui.com { data [ ' logo ' ] } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    if  data [ " logo " ] [ 0 ]  ==  " / " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    else  data [ " logo " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                r  =  requests . get ( url ,  stream = True ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  r . status_code  ==  200 : 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-09 18:32:28 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                    with  open ( f " { STATIC_DIR } /favicon.png " ,  " wb " )  as  f : 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-24 09:36:38 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                        r . raw . decode_content  =  True 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        shutil . copyfileobj ( r . raw ,  f ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-07-09 13:20:00 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            if  " splash "  in  data : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                url  =  ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    f " https://api.openwebui.com { data [ ' splash ' ] } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    if  data [ " splash " ] [ 0 ]  ==  " / " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    else  data [ " splash " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                r  =  requests . get ( url ,  stream = True ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  r . status_code  ==  200 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    with  open ( f " { STATIC_DIR } /splash.png " ,  " wb " )  as  f : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        r . raw . decode_content  =  True 
							 
						 
					
						
							
								
									
										
										
										
											2024-07-09 14:21:17 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                        shutil . copyfileobj ( r . raw ,  f ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-07-09 13:20:00 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-24 09:36:38 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            WEBUI_NAME  =  data [ " name " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    except  Exception  as  e : 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-21 07:11:36 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        log . exception ( e ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-24 09:36:38 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        pass 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-24 09:12:19 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-05-10 14:18:39 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-02-16 11:08:07 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								####################################  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# LICENSE_KEY  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								####################################  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-03-04 16:32:27 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								LICENSE_KEY  =  os . environ . get ( " LICENSE_KEY " ,  " " )  
						 
					
						
							
								
									
										
										
										
											2025-02-16 11:08:07 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-10-21 13:53:45 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								####################################  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# STORAGE PROVIDER  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								####################################  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-01-16 08:01:26 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								STORAGE_PROVIDER  =  os . environ . get ( " STORAGE_PROVIDER " ,  " local " )   # defaults to local, s3  
						 
					
						
							
								
									
										
										
										
											2024-10-21 13:53:45 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								S3_ACCESS_KEY_ID  =  os . environ . get ( " S3_ACCESS_KEY_ID " ,  None )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								S3_SECRET_ACCESS_KEY  =  os . environ . get ( " S3_SECRET_ACCESS_KEY " ,  None )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								S3_REGION_NAME  =  os . environ . get ( " S3_REGION_NAME " ,  None )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								S3_BUCKET_NAME  =  os . environ . get ( " S3_BUCKET_NAME " ,  None )  
						 
					
						
							
								
									
										
										
										
											2025-02-08 01:15:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								S3_KEY_PREFIX  =  os . environ . get ( " S3_KEY_PREFIX " ,  None )  
						 
					
						
							
								
									
										
										
										
											2024-10-21 13:53:45 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								S3_ENDPOINT_URL  =  os . environ . get ( " S3_ENDPOINT_URL " ,  None )  
						 
					
						
							
								
									
										
										
										
											2025-02-23 20:52:22 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								S3_USE_ACCELERATE_ENDPOINT  =  (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " S3_USE_ACCELERATE_ENDPOINT " ,  " False " ) . lower ( )  ==  " true " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
									
										
										
										
											2025-02-23 20:31:08 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								S3_ADDRESSING_STYLE  =  os . environ . get ( " S3_ADDRESSING_STYLE " ,  None )  
						 
					
						
							
								
									
										
										
										
											2024-10-21 13:53:45 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-01-17 21:53:41 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								GCS_BUCKET_NAME  =  os . environ . get ( " GCS_BUCKET_NAME " ,  None )  
						 
					
						
							
								
									
										
										
										
											2025-01-22 11:33:33 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								GOOGLE_APPLICATION_CREDENTIALS_JSON  =  os . environ . get (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " GOOGLE_APPLICATION_CREDENTIALS_JSON " ,  None 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
									
										
										
										
											2025-01-17 16:16:25 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-02-19 02:25:49 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								AZURE_STORAGE_ENDPOINT  =  os . environ . get ( " AZURE_STORAGE_ENDPOINT " ,  None )  
						 
					
						
							
								
									
										
										
										
											2025-02-19 02:27:37 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								AZURE_STORAGE_CONTAINER_NAME  =  os . environ . get ( " AZURE_STORAGE_CONTAINER_NAME " ,  None )  
						 
					
						
							
								
									
										
										
										
											2025-02-19 02:25:49 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								AZURE_STORAGE_KEY  =  os . environ . get ( " AZURE_STORAGE_KEY " ,  None )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-19 08:47:12 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								####################################  
						 
					
						
							
								
									
										
										
										
											2024-01-25 16:40:19 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# File Upload DIR  
						 
					
						
							
								
									
										
										
										
											2023-11-19 08:47:12 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								####################################  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-03-05 01:53:52 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								UPLOAD_DIR  =  DATA_DIR  /  " uploads "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								UPLOAD_DIR . mkdir ( parents = True ,  exist_ok = True )  
						 
					
						
							
								
									
										
										
										
											2023-11-15 08:28:51 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-05-10 14:18:39 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-06 14:51:08 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								####################################  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# Cache DIR  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								####################################  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-03-05 01:53:52 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								CACHE_DIR  =  DATA_DIR  /  " cache "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CACHE_DIR . mkdir ( parents = True ,  exist_ok = True )  
						 
					
						
							
								
									
										
										
										
											2024-02-06 14:51:08 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-02-12 14:29:45 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								####################################  
						 
					
						
							
								
									
										
										
										
											2025-02-12 15:12:00 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# DIRECT CONNECTIONS  
						 
					
						
							
								
									
										
										
										
											2025-02-12 14:29:45 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								####################################  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-02-12 15:12:00 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								ENABLE_DIRECT_CONNECTIONS  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " ENABLE_DIRECT_CONNECTIONS " , 
							 
						 
					
						
							
								
									
										
										
										
											2025-02-12 14:29:45 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    " direct.enable " , 
							 
						 
					
						
							
								
									
										
										
										
											2025-02-12 15:12:00 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    os . environ . get ( " ENABLE_DIRECT_CONNECTIONS " ,  " True " ) . lower ( )  ==  " true " , 
							 
						 
					
						
							
								
									
										
										
										
											2025-02-12 14:29:45 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-19 08:47:12 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								####################################  
						 
					
						
							
								
									
										
										
										
											2024-03-07 03:51:51 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# OLLAMA_BASE_URL  
						 
					
						
							
								
									
										
										
										
											2023-11-19 08:47:12 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								####################################  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-05-22 14:58:42 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								ENABLE_OLLAMA_API  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " ENABLE_OLLAMA_API " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " ollama.enable " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " ENABLE_OLLAMA_API " ,  " True " ) . lower ( )  ==  " true " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-01-07 14:59:22 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								OLLAMA_API_BASE_URL  =  os . environ . get (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " OLLAMA_API_BASE_URL " ,  " http://localhost:11434/api " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
									
										
										
										
											2023-11-15 08:28:51 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-03-07 03:44:00 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								OLLAMA_BASE_URL  =  os . environ . get ( " OLLAMA_BASE_URL " ,  " " )  
						 
					
						
							
								
									
										
										
										
											2024-12-01 10:13:10 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								if  OLLAMA_BASE_URL :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # Remove trailing slash 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    OLLAMA_BASE_URL  =  ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        OLLAMA_BASE_URL [ : - 1 ]  if  OLLAMA_BASE_URL . endswith ( " / " )  else  OLLAMA_BASE_URL 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-06-17 04:56:49 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-03-28 04:08:43 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								K8S_FLAG  =  os . environ . get ( " K8S_FLAG " ,  " " )  
						 
					
						
							
								
									
										
										
										
											2024-04-02 20:47:52 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								USE_OLLAMA_DOCKER  =  os . environ . get ( " USE_OLLAMA_DOCKER " ,  " false " )  
						 
					
						
							
								
									
										
										
										
											2024-04-02 17:28:04 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-03-07 03:44:00 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								if  OLLAMA_BASE_URL  ==  " "  and  OLLAMA_API_BASE_URL  !=  " " :  
						 
					
						
							
								
									
										
										
										
											2024-03-03 10:16:02 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    OLLAMA_BASE_URL  =  ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        OLLAMA_API_BASE_URL [ : - 4 ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  OLLAMA_API_BASE_URL . endswith ( " /api " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        else  OLLAMA_API_BASE_URL 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-03-11 10:26:06 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								if  ENV  ==  " prod " :  
						 
					
						
							
								
									
										
										
										
											2024-04-03 17:34:25 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    if  OLLAMA_BASE_URL  ==  " /ollama "  and  not  K8S_FLAG : 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-02 20:47:52 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        if  USE_OLLAMA_DOCKER . lower ( )  ==  " true " : 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-03 17:43:13 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            # if you use all-in-one docker container (Open WebUI + Ollama) 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-02 20:47:52 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            # with the docker build arg USE_OLLAMA=true (--build-arg="USE_OLLAMA=true") this only works with http://localhost:11434 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-22 16:31:35 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            OLLAMA_BASE_URL  =  " http://localhost:11434 " 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-03 17:43:13 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        else : 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-22 16:31:35 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            OLLAMA_BASE_URL  =  " http://host.docker.internal:11434 " 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-28 04:08:43 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    elif  K8S_FLAG : 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-26 04:21:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        OLLAMA_BASE_URL  =  " http://ollama-service.open-webui.svc.cluster.local:11434 " 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-11 10:26:06 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-05-10 14:18:39 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-03-07 03:44:00 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								OLLAMA_BASE_URLS  =  os . environ . get ( " OLLAMA_BASE_URLS " ,  " " )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								OLLAMA_BASE_URLS  =  OLLAMA_BASE_URLS  if  OLLAMA_BASE_URLS  !=  " "  else  OLLAMA_BASE_URL  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-03-07 04:42:14 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								OLLAMA_BASE_URLS  =  [ url . strip ( )  for  url  in  OLLAMA_BASE_URLS . split ( " ; " ) ]  
						 
					
						
							
								
									
										
										
										
											2024-05-14 05:32:21 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								OLLAMA_BASE_URLS  =  PersistentConfig (  
						 
					
						
							
								
									
										
										
										
											2024-05-10 13:36:10 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    " OLLAMA_BASE_URLS " ,  " ollama.base_urls " ,  OLLAMA_BASE_URLS 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
									
										
										
										
											2024-03-03 10:16:02 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-11-12 13:18:51 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								OLLAMA_API_CONFIGS  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " OLLAMA_API_CONFIGS " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " ollama.api_configs " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-01-05 08:49:34 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								####################################  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# OPENAI_API  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								####################################  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-05-18 01:30:22 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								ENABLE_OPENAI_API  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " ENABLE_OPENAI_API " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " openai.enable " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " ENABLE_OPENAI_API " ,  " True " ) . lower ( )  ==  " true " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-01-05 08:49:34 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								OPENAI_API_KEY  =  os . environ . get ( " OPENAI_API_KEY " ,  " " )  
						 
					
						
							
								
									
										
										
										
											2024-01-05 10:38:03 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								OPENAI_API_BASE_URL  =  os . environ . get ( " OPENAI_API_BASE_URL " ,  " " )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-02-19 06:39:32 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								GEMINI_API_KEY  =  os . environ . get ( " GEMINI_API_KEY " ,  " " )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								GEMINI_API_BASE_URL  =  os . environ . get ( " GEMINI_API_BASE_URL " ,  " " )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-05-10 14:18:39 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-01-05 10:38:03 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								if  OPENAI_API_BASE_URL  ==  " " :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    OPENAI_API_BASE_URL  =  " https://api.openai.com/v1 " 
							 
						 
					
						
							
								
									
										
										
										
											2024-01-05 08:49:34 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-03-07 05:18:17 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								OPENAI_API_KEYS  =  os . environ . get ( " OPENAI_API_KEYS " ,  " " )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								OPENAI_API_KEYS  =  OPENAI_API_KEYS  if  OPENAI_API_KEYS  !=  " "  else  OPENAI_API_KEY  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-03-07 08:13:25 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								OPENAI_API_KEYS  =  [ url . strip ( )  for  url  in  OPENAI_API_KEYS . split ( " ; " ) ]  
						 
					
						
							
								
									
										
										
										
											2024-05-14 05:32:21 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								OPENAI_API_KEYS  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " OPENAI_API_KEYS " ,  " openai.api_keys " ,  OPENAI_API_KEYS 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
									
										
										
										
											2024-03-07 05:18:17 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								OPENAI_API_BASE_URLS  =  os . environ . get ( " OPENAI_API_BASE_URLS " ,  " " )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								OPENAI_API_BASE_URLS  =  (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    OPENAI_API_BASE_URLS  if  OPENAI_API_BASE_URLS  !=  " "  else  OPENAI_API_BASE_URL 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-03-18 16:11:48 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								OPENAI_API_BASE_URLS  =  [  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    url . strip ( )  if  url  !=  " "  else  " https://api.openai.com/v1 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for  url  in  OPENAI_API_BASE_URLS . split ( " ; " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								]  
						 
					
						
							
								
									
										
										
										
											2024-05-14 05:32:21 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								OPENAI_API_BASE_URLS  =  PersistentConfig (  
						 
					
						
							
								
									
										
										
										
											2024-05-10 13:36:10 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    " OPENAI_API_BASE_URLS " ,  " openai.api_base_urls " ,  OPENAI_API_BASE_URLS 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
									
										
										
										
											2024-01-23 13:07:40 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-11-12 13:18:51 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								OPENAI_API_CONFIGS  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " OPENAI_API_CONFIGS " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " openai.api_configs " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
									
										
										
										
											2024-04-21 09:37:18 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-11-12 13:18:51 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# Get the actual OpenAI API key based on the base URL  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								OPENAI_API_KEY  =  " "  
						 
					
						
							
								
									
										
										
										
											2024-04-21 09:37:18 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								try :  
						 
					
						
							
								
									
										
										
										
											2024-05-10 13:36:10 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    OPENAI_API_KEY  =  OPENAI_API_KEYS . value [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        OPENAI_API_BASE_URLS . value . index ( " https://api.openai.com/v1 " ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-21 09:37:18 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    ] 
							 
						 
					
						
							
								
									
										
										
										
											2024-08-14 20:38:19 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								except  Exception :  
						 
					
						
							
								
									
										
										
										
											2024-04-21 09:37:18 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    pass 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-21 04:15:59 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								OPENAI_API_BASE_URL  =  " https://api.openai.com/v1 "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-01-23 13:07:40 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								####################################  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# WEBUI  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								####################################  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-12-26 00:50:57 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								WEBUI_URL  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " WEBUI_URL " ,  " webui.url " ,  os . environ . get ( " WEBUI_URL " ,  " http://localhost:3000 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-05-14 05:32:21 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								ENABLE_SIGNUP  =  PersistentConfig (  
						 
					
						
							
								
									
										
										
										
											2024-05-10 13:36:10 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    " ENABLE_SIGNUP " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " ui.enable_signup " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        False 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  not  WEBUI_AUTH 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        else  os . environ . get ( " ENABLE_SIGNUP " ,  " True " ) . lower ( )  ==  " true " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
									
										
										
										
											2024-07-01 05:48:05 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-07-25 09:44:40 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								ENABLE_LOGIN_FORM  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " ENABLE_LOGIN_FORM " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " ui.ENABLE_LOGIN_FORM " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " ENABLE_LOGIN_FORM " ,  " True " ) . lower ( )  ==  " true " , 
							 
						 
					
						
							
								
									
										
										
										
											2024-07-24 10:20:45 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-12-02 10:25:44 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-07-01 05:48:05 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								DEFAULT_LOCALE  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " DEFAULT_LOCALE " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " ui.default_locale " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " DEFAULT_LOCALE " ,  " " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-05-14 05:32:21 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								DEFAULT_MODELS  =  PersistentConfig (  
						 
					
						
							
								
									
										
										
										
											2024-05-10 13:36:10 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    " DEFAULT_MODELS " ,  " ui.default_models " ,  os . environ . get ( " DEFAULT_MODELS " ,  None ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-05-09 07:33:34 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
									
										
										
										
											2024-02-20 10:54:22 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-05-14 05:32:21 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								DEFAULT_PROMPT_SUGGESTIONS  =  PersistentConfig (  
						 
					
						
							
								
									
										
										
										
											2024-05-10 13:36:10 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    " DEFAULT_PROMPT_SUGGESTIONS " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " ui.prompt_suggestions " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    [ 
							 
						 
					
						
							
								
									
										
										
										
											2024-01-23 13:07:40 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " title " :  [ " Help me study " ,  " vocabulary for a college entrance exam " ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " content " :  " Help me study vocabulary: write a sentence for me to fill in the blank, and I ' ll try to pick the correct option. " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " title " :  [ " Give me ideas " ,  " for what to do with my kids '  art " ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " content " :  " What are 5 creative things I could do with my kids '  art? I don ' t want to throw them away, but it ' s also so much clutter. " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " title " :  [ " Tell me a fun fact " ,  " about the Roman Empire " ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " content " :  " Tell me a random fun fact about the Roman Empire " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " title " :  [ " Show me a code snippet " ,  " of a website ' s sticky header " ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " content " :  " Show me a code snippet of a website ' s sticky header in CSS and JavaScript. " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } , 
							 
						 
					
						
							
								
									
										
										
										
											2024-05-02 15:23:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " title " :  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                " Explain options trading " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                " if I ' m familiar with buying and selling stocks " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " content " :  " Explain options trading in simple terms if I ' m familiar with buying and selling stocks. " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " title " :  [ " Overcome procrastination " ,  " give me tips " ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " content " :  " Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it? " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } , 
							 
						 
					
						
							
								
									
										
										
										
											2024-05-10 13:36:10 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    ] , 
							 
						 
					
						
							
								
									
										
										
										
											2024-01-23 13:07:40 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
									
										
										
										
											2024-02-20 10:54:22 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-11-26 16:55:58 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								MODEL_ORDER_LIST  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " MODEL_ORDER_LIST " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " ui.model_order_list " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    [ ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-05-14 05:32:21 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								DEFAULT_USER_ROLE  =  PersistentConfig (  
						 
					
						
							
								
									
										
										
										
											2024-05-10 13:36:10 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    " DEFAULT_USER_ROLE " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " ui.default_user_role " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . getenv ( " DEFAULT_USER_ROLE " ,  " pending " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
									
										
										
										
											2024-02-20 10:54:22 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-11-15 17:29:07 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								USER_PERMISSIONS_WORKSPACE_MODELS_ACCESS  =  (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " USER_PERMISSIONS_WORKSPACE_MODELS_ACCESS " ,  " False " ) . lower ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ==  " true " 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-20 05:21:46 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
									
										
										
										
											2024-03-14 00:01:46 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-11-15 17:29:07 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								USER_PERMISSIONS_WORKSPACE_KNOWLEDGE_ACCESS  =  (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " USER_PERMISSIONS_WORKSPACE_KNOWLEDGE_ACCESS " ,  " False " ) . lower ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ==  " true " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								USER_PERMISSIONS_WORKSPACE_PROMPTS_ACCESS  =  (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " USER_PERMISSIONS_WORKSPACE_PROMPTS_ACCESS " ,  " False " ) . lower ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ==  " true " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								USER_PERMISSIONS_WORKSPACE_TOOLS_ACCESS  =  (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " USER_PERMISSIONS_WORKSPACE_TOOLS_ACCESS " ,  " False " ) . lower ( )  ==  " true " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-01-16 15:01:43 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								USER_PERMISSIONS_CHAT_CONTROLS  =  (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " USER_PERMISSIONS_CHAT_CONTROLS " ,  " True " ) . lower ( )  ==  " true " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-11-16 18:31:04 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								USER_PERMISSIONS_CHAT_FILE_UPLOAD  =  (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " USER_PERMISSIONS_CHAT_FILE_UPLOAD " ,  " True " ) . lower ( )  ==  " true " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-11-15 12:51:49 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								USER_PERMISSIONS_CHAT_DELETE  =  (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " USER_PERMISSIONS_CHAT_DELETE " ,  " True " ) . lower ( )  ==  " true " 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-20 05:21:46 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
									
										
										
										
											2024-03-14 00:01:46 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-11-15 12:51:49 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								USER_PERMISSIONS_CHAT_EDIT  =  (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " USER_PERMISSIONS_CHAT_EDIT " ,  " True " ) . lower ( )  ==  " true " 
							 
						 
					
						
							
								
									
										
										
										
											2024-08-19 22:49:40 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								USER_PERMISSIONS_CHAT_TEMPORARY  =  (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " USER_PERMISSIONS_CHAT_TEMPORARY " ,  " True " ) . lower ( )  ==  " true " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-01-16 15:01:43 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								USER_PERMISSIONS_FEATURES_WEB_SEARCH  =  (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " USER_PERMISSIONS_FEATURES_WEB_SEARCH " ,  " True " ) . lower ( )  ==  " true " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								USER_PERMISSIONS_FEATURES_IMAGE_GENERATION  =  (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " USER_PERMISSIONS_FEATURES_IMAGE_GENERATION " ,  " True " ) . lower ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ==  " true " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-02-04 13:56:35 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								USER_PERMISSIONS_FEATURES_CODE_INTERPRETER  =  (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " USER_PERMISSIONS_FEATURES_CODE_INTERPRETER " ,  " True " ) . lower ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ==  " true " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-01-16 15:01:43 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								DEFAULT_USER_PERMISSIONS  =  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " workspace " :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " models " :  USER_PERMISSIONS_WORKSPACE_MODELS_ACCESS , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " knowledge " :  USER_PERMISSIONS_WORKSPACE_KNOWLEDGE_ACCESS , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " prompts " :  USER_PERMISSIONS_WORKSPACE_PROMPTS_ACCESS , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " tools " :  USER_PERMISSIONS_WORKSPACE_TOOLS_ACCESS , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " chat " :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " controls " :  USER_PERMISSIONS_CHAT_CONTROLS , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " file_upload " :  USER_PERMISSIONS_CHAT_FILE_UPLOAD , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " delete " :  USER_PERMISSIONS_CHAT_DELETE , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " edit " :  USER_PERMISSIONS_CHAT_EDIT , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " temporary " :  USER_PERMISSIONS_CHAT_TEMPORARY , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " features " :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " web_search " :  USER_PERMISSIONS_FEATURES_WEB_SEARCH , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " image_generation " :  USER_PERMISSIONS_FEATURES_IMAGE_GENERATION , 
							 
						 
					
						
							
								
									
										
										
										
											2025-02-04 13:56:35 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        " code_interpreter " :  USER_PERMISSIONS_FEATURES_CODE_INTERPRETER , 
							 
						 
					
						
							
								
									
										
										
										
											2025-01-16 15:01:43 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-05-14 05:32:21 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								USER_PERMISSIONS  =  PersistentConfig (  
						 
					
						
							
								
									
										
										
										
											2024-05-10 13:36:10 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    " USER_PERMISSIONS " , 
							 
						 
					
						
							
								
									
										
										
										
											2024-11-15 12:51:49 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    " user.permissions " , 
							 
						 
					
						
							
								
									
										
										
										
											2025-01-16 15:01:43 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    DEFAULT_USER_PERMISSIONS , 
							 
						 
					
						
							
								
									
										
										
										
											2024-05-10 13:36:10 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
									
										
										
										
											2024-02-14 17:17:43 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-12-23 12:02:14 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								ENABLE_CHANNELS  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " ENABLE_CHANNELS " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " channels.enable " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " ENABLE_CHANNELS " ,  " False " ) . lower ( )  ==  " true " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-10-22 18:16:48 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								ENABLE_EVALUATION_ARENA_MODELS  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " ENABLE_EVALUATION_ARENA_MODELS " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " evaluation.arena.enable " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " ENABLE_EVALUATION_ARENA_MODELS " ,  " True " ) . lower ( )  ==  " true " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								EVALUATION_ARENA_MODELS  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " EVALUATION_ARENA_MODELS " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " evaluation.arena.models " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    [ ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								DEFAULT_ARENA_MODEL  =  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " id " :  " arena-model " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " name " :  " Arena Model " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " meta " :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " profile_image_url " :  " /favicon.png " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " description " :  " Submit your questions to anonymous AI chatbots and vote on the best response. " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " model_ids " :  None , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-05-14 05:32:21 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								WEBHOOK_URL  =  PersistentConfig (  
						 
					
						
							
								
									
										
										
										
											2024-05-10 13:36:10 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    " WEBHOOK_URL " ,  " webhook_url " ,  os . environ . get ( " WEBHOOK_URL " ,  " " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
									
										
										
										
											2024-03-10 13:47:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-04-23 02:55:46 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								ENABLE_ADMIN_EXPORT  =  os . environ . get ( " ENABLE_ADMIN_EXPORT " ,  " True " ) . lower ( )  ==  " true "  
						 
					
						
							
								
									
										
										
										
											2024-04-17 16:33:22 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-08-04 22:16:14 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								ENABLE_ADMIN_CHAT_ACCESS  =  (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " ENABLE_ADMIN_CHAT_ACCESS " ,  " True " ) . lower ( )  ==  " true " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-05-27 00:10:25 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								ENABLE_COMMUNITY_SHARING  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " ENABLE_COMMUNITY_SHARING " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " ui.enable_community_sharing " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " ENABLE_COMMUNITY_SHARING " ,  " True " ) . lower ( )  ==  " true " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-08-19 21:16:49 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								ENABLE_MESSAGE_RATING  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " ENABLE_MESSAGE_RATING " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " ui.enable_message_rating " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " ENABLE_MESSAGE_RATING " ,  " True " ) . lower ( )  ==  " true " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-08-19 06:04:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-08-19 05:17:26 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								def  validate_cors_origins ( origins ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for  origin  in  origins : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  origin  !=  " * " : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            validate_cors_origin ( origin ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  validate_cors_origin ( origin ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    parsed_url  =  urlparse ( origin ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # Check if the scheme is either http or https 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  parsed_url . scheme  not  in  [ " http " ,  " https " ] : 
							 
						 
					
						
							
								
									
										
										
										
											2024-08-19 06:04:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        raise  ValueError ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            f " Invalid scheme in CORS_ALLOW_ORIGIN:  ' { origin } ' . Only  ' http '  and  ' https '  are allowed. " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-08-19 05:17:26 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # Ensure that the netloc (domain + port) is present, indicating it's a valid URL 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  not  parsed_url . netloc : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        raise  ValueError ( f " Invalid URL structure in CORS_ALLOW_ORIGIN:  ' { origin } ' . " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# For production, you should only need one host as  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# fastapi serves the svelte-kit built frontend and backend from the same host and port.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# To test CORS_ALLOW_ORIGIN locally, you can set something like  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# CORS_ALLOW_ORIGIN=http://localhost:5173;http://localhost:8080  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# in your .env file depending on your frontend port, 5173 in this case.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CORS_ALLOW_ORIGIN  =  os . environ . get ( " CORS_ALLOW_ORIGIN " ,  " * " ) . split ( " ; " )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  " * "  in  CORS_ALLOW_ORIGIN :  
						 
					
						
							
								
									
										
										
										
											2024-08-19 06:04:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    log . warning ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " \n \n WARNING: CORS_ALLOW_ORIGIN IS SET TO  ' * '  - NOT RECOMMENDED FOR PRODUCTION DEPLOYMENTS. \n " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-08-19 05:17:26 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								validate_cors_origins ( CORS_ALLOW_ORIGIN )  
						 
					
						
							
								
									
										
										
										
											2024-05-28 03:48:08 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-05-27 03:18:43 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								class  BannerModel ( BaseModel ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    id :  str 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    type :  str 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    title :  Optional [ str ]  =  None 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    content :  str 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    dismissible :  bool 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    timestamp :  int 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-07-03 07:51:30 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-07-02 21:17:36 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								try :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    banners  =  json . loads ( os . environ . get ( " WEBUI_BANNERS " ,  " [] " ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    banners  =  [ BannerModel ( * * banner )  for  banner  in  banners ] 
							 
						 
					
						
							
								
									
										
										
										
											2024-07-02 21:41:59 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								except  Exception  as  e :  
						 
					
						
							
								
									
										
										
										
											2025-02-25 22:36:25 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    log . exception ( f " Error loading WEBUI_BANNERS:  { e } " ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-07-02 21:17:36 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    banners  =  [ ] 
							 
						 
					
						
							
								
									
										
										
										
											2024-05-27 03:18:43 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-07-02 21:17:36 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								WEBUI_BANNERS  =  PersistentConfig ( " WEBUI_BANNERS " ,  " ui.banners " ,  banners )  
						 
					
						
							
								
									
										
										
										
											2024-05-27 03:18:43 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-06-04 12:17:43 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								SHOW_ADMIN_DETAILS  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " SHOW_ADMIN_DETAILS " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " auth.admin.show " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " SHOW_ADMIN_DETAILS " ,  " true " ) . lower ( )  ==  " true " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								ADMIN_EMAIL  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " ADMIN_EMAIL " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " auth.admin.email " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " ADMIN_EMAIL " ,  None ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-06-10 06:19:36 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								####################################  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# TASKS  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								####################################  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-06-10 05:53:10 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								TASK_MODEL  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " TASK_MODEL " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " task.model.default " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " TASK_MODEL " ,  " " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								TASK_MODEL_EXTERNAL  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " TASK_MODEL_EXTERNAL " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " task.model.external " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " TASK_MODEL_EXTERNAL " ,  " " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-06-10 05:25:31 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								TITLE_GENERATION_PROMPT_TEMPLATE  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " TITLE_GENERATION_PROMPT_TEMPLATE " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " task.title.prompt_template " , 
							 
						 
					
						
							
								
									
										
										
										
											2024-09-07 11:50:29 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    os . environ . get ( " TITLE_GENERATION_PROMPT_TEMPLATE " ,  " " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-01-30 06:40:36 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								DEFAULT_TITLE_GENERATION_PROMPT_TEMPLATE  =  """ ### Task: 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Generate  a  concise ,  3 - 5  word  title  with  an  emoji  summarizing  the  chat  history .  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								### Guidelines:  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  The  title  should  clearly  represent  the  main  theme  or  subject  of  the  conversation .  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  Use  emojis  that  enhance  understanding  of  the  topic ,  but  avoid  quotation  marks  or  special  formatting .  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  Write  the  title  in  the  chat ' s primary language; default to English if multilingual.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  Prioritize  accuracy  over  excessive  creativity ;  keep  it  clear  and  simple .  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								### Output:  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								JSON  format :  {  " title " :  " your concise title here "  }  
						 
					
						
							
								
									
										
										
										
											2025-01-30 12:11:37 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								### Examples:  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  {  " title " :  " 📉 Stock Market Trends "  } ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  {  " title " :  " 🍪 Perfect Chocolate Chip Recipe "  } ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  {  " title " :  " Evolution of Music Streaming "  } ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  {  " title " :  " Remote Work Productivity Tips "  } ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  {  " title " :  " Artificial Intelligence in Healthcare "  } ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  {  " title " :  " 🎮 Video Game Development Insights "  }  
						 
					
						
							
								
									
										
										
										
											2025-01-30 06:40:36 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								### Chat History:  
						 
					
						
							
								
									
										
										
										
											2024-12-13 14:28:42 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< chat_history >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{ { MESSAGES : END : 2 } }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / chat_history > """ 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-10-20 12:27:10 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								TAGS_GENERATION_PROMPT_TEMPLATE  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " TAGS_GENERATION_PROMPT_TEMPLATE " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " task.tags.prompt_template " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " TAGS_GENERATION_PROMPT_TEMPLATE " ,  " " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-12-13 14:28:42 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								DEFAULT_TAGS_GENERATION_PROMPT_TEMPLATE  =  """ ### Task: 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Generate  1 - 3  broad  tags  categorizing  the  main  themes  of  the  chat  history ,  along  with  1 - 3  more  specific  subtopic  tags .  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								### Guidelines:  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  Start  with  high - level  domains  ( e . g .  Science ,  Technology ,  Philosophy ,  Arts ,  Politics ,  Business ,  Health ,  Sports ,  Entertainment ,  Education )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  Consider  including  relevant  subfields / subdomains  if  they  are  strongly  represented  throughout  the  conversation  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  If  content  is  too  short  ( less  than  3  messages )  or  too  diverse ,  use  only  [ " General " ]  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  Use  the  chat ' s primary language; default to English if multilingual  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  Prioritize  accuracy  over  specificity  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								### Output:  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								JSON  format :  {  " tags " :  [ " tag1 " ,  " tag2 " ,  " tag3 " ]  }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								### Chat History:  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< chat_history >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{ { MESSAGES : END : 6 } }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / chat_history > """ 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-01-16 16:06:37 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								IMAGE_PROMPT_GENERATION_PROMPT_TEMPLATE  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " IMAGE_PROMPT_GENERATION_PROMPT_TEMPLATE " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " task.image.prompt_template " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " IMAGE_PROMPT_GENERATION_PROMPT_TEMPLATE " ,  " " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								DEFAULT_IMAGE_PROMPT_GENERATION_PROMPT_TEMPLATE  =  """ ### Task: 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Generate  a  detailed  prompt  for  am  image  generation  task  based  on  the  given  language  and  context .  Describe  the  image  as  if  you  were  explaining  it  to  someone  who  cannot  see  it .  Include  relevant  details ,  colors ,  shapes ,  and  any  other  important  elements .  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								### Guidelines:  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  Be  descriptive  and  detailed ,  focusing  on  the  most  important  aspects  of  the  image .  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  Avoid  making  assumptions  or  adding  information  not  present  in  the  image .  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  Use  the  chat ' s primary language; default to English if multilingual.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  If  the  image  is  too  complex ,  focus  on  the  most  prominent  elements .  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								### Output:  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Strictly  return  in  JSON  format :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " prompt " :  " Your detailed description here. " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								### Chat History:  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< chat_history >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{ { MESSAGES : END : 6 } }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / chat_history > """ 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-11-06 10:32:08 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								ENABLE_TAGS_GENERATION  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " ENABLE_TAGS_GENERATION " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " task.tags.enable " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " ENABLE_TAGS_GENERATION " ,  " True " ) . lower ( )  ==  " true " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-02-13 23:28:39 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								ENABLE_TITLE_GENERATION  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " ENABLE_TITLE_GENERATION " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " task.title.enable " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " ENABLE_TITLE_GENERATION " ,  " True " ) . lower ( )  ==  " true " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-11-19 18:24:32 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								ENABLE_SEARCH_QUERY_GENERATION  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " ENABLE_SEARCH_QUERY_GENERATION " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " task.query.search.enable " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " ENABLE_SEARCH_QUERY_GENERATION " ,  " True " ) . lower ( )  ==  " true " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								ENABLE_RETRIEVAL_QUERY_GENERATION  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " ENABLE_RETRIEVAL_QUERY_GENERATION " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " task.query.retrieval.enable " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " ENABLE_RETRIEVAL_QUERY_GENERATION " ,  " True " ) . lower ( )  ==  " true " , 
							 
						 
					
						
							
								
									
										
										
										
											2024-06-10 05:25:31 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-11-19 18:24:32 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								QUERY_GENERATION_PROMPT_TEMPLATE  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " QUERY_GENERATION_PROMPT_TEMPLATE " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " task.query.prompt_template " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " QUERY_GENERATION_PROMPT_TEMPLATE " ,  " " ) , 
							 
						 
					
						
							
								
									
										
										
										
											2024-06-10 05:53:10 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-11-19 18:24:32 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								DEFAULT_QUERY_GENERATION_PROMPT_TEMPLATE  =  """ ### Task: 
  
						 
					
						
							
								
									
										
										
										
											2024-11-27 02:23:29 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Analyze  the  chat  history  to  determine  the  necessity  of  generating  search  queries ,  in  the  given  language .  By  default ,  * * prioritize  generating  1 - 3  broad  and  relevant  search  queries * *  unless  it  is  absolutely  certain  that  no  additional  information  is  required .  The  aim  is  to  retrieve  comprehensive ,  updated ,  and  valuable  information  even  with  minimal  uncertainty .  If  no  search  is  unequivocally  needed ,  return  an  empty  list .  
						 
					
						
							
								
									
										
										
										
											2024-11-19 18:24:32 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								### Guidelines:  
						 
					
						
							
								
									
										
										
										
											2024-11-25 10:49:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								-  Respond  * * EXCLUSIVELY * *  with  a  JSON  object .  Any  form  of  extra  commentary ,  explanation ,  or  additional  text  is  strictly  prohibited .  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  When  generating  search  queries ,  respond  in  the  format :  {  " queries " :  [ " query1 " ,  " query2 " ]  } ,  ensuring  each  query  is  distinct ,  concise ,  and  relevant  to  the  topic .  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  If  and  only  if  it  is  entirely  certain  that  no  useful  results  can  be  retrieved  by  a  search ,  return :  {  " queries " :  [ ]  } .  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  Err  on  the  side  of  suggesting  search  queries  if  there  is  * * any  chance * *  they  might  provide  useful  or  updated  information .  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  Be  concise  and  focused  on  composing  high - quality  search  queries ,  avoiding  unnecessary  elaboration ,  commentary ,  or  assumptions .  
						 
					
						
							
								
									
										
										
										
											2024-11-27 02:23:29 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								-  Today ' s date is:  {{ CURRENT_DATE}}.  
						 
					
						
							
								
									
										
										
										
											2024-11-25 10:49:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								-  Always  prioritize  providing  actionable  and  broad  queries  that  maximize  informational  coverage .  
						 
					
						
							
								
									
										
										
										
											2024-11-19 18:24:32 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								### Output:  
						 
					
						
							
								
									
										
										
										
											2024-11-25 10:03:58 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Strictly  return  in  JSON  format :   
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2024-11-19 18:24:32 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  " queries " :  [ " query1 " ,  " query2 " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								### Chat History:  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< chat_history >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{ { MESSAGES : END : 6 } }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / chat_history >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								""" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-12-01 10:30:59 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								ENABLE_AUTOCOMPLETE_GENERATION  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " ENABLE_AUTOCOMPLETE_GENERATION " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " task.autocomplete.enable " , 
							 
						 
					
						
							
								
									
										
										
										
											2025-03-16 01:40:39 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    os . environ . get ( " ENABLE_AUTOCOMPLETE_GENERATION " ,  " False " ) . lower ( )  ==  " true " , 
							 
						 
					
						
							
								
									
										
										
										
											2024-12-01 10:30:59 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								AUTOCOMPLETE_GENERATION_INPUT_MAX_LENGTH  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " AUTOCOMPLETE_GENERATION_INPUT_MAX_LENGTH " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " task.autocomplete.input_max_length " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int ( os . environ . get ( " AUTOCOMPLETE_GENERATION_INPUT_MAX_LENGTH " ,  " -1 " ) ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
									
										
										
										
											2024-06-10 06:19:36 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-11-29 15:53:52 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								AUTOCOMPLETE_GENERATION_PROMPT_TEMPLATE  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " AUTOCOMPLETE_GENERATION_PROMPT_TEMPLATE " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " task.autocomplete.prompt_template " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " AUTOCOMPLETE_GENERATION_PROMPT_TEMPLATE " ,  " " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-11-29 17:02:32 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-11-29 15:53:52 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								DEFAULT_AUTOCOMPLETE_GENERATION_PROMPT_TEMPLATE  =  """ ### Task: 
  
						 
					
						
							
								
									
										
										
										
											2024-11-29 17:02:32 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								You  are  an  autocompletion  system .  Continue  the  text  in  ` < text > `  based  on  the  * * completion  type * *  in  ` < type > `  and  the  given  language .    
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								### **Instructions**:  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								1.  Analyze  ` < text > `  for  context  and  meaning .    
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								2.  Use  ` < type > `  to  guide  your  output :    
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   -  * * General * * :  Provide  a  natural ,  concise  continuation .   
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   -  * * Search  Query * * :  Complete  as  if  generating  a  realistic  search  query .   
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								3.  Start  as  if  you  are  directly  continuing  ` < text > ` .  Do  * * not * *  repeat ,  paraphrase ,  or  respond  as  a  model .  Simply  complete  the  text .    
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								4.  Ensure  the  continuation :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   -  Flows  naturally  from  ` < text > ` .   
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   -  Avoids  repetition ,  overexplaining ,  or  unrelated  ideas .   
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								5.  If  unsure ,  return :  ` {  " text " :  " "  } ` .    
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								### **Output Rules**:  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  Respond  only  in  JSON  format :  ` {  " text " :  " <your_completion> "  } ` .  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								### **Examples**:  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								#### Example 1:    
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Input :    
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< type > General < / type >    
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< text > The  sun  was  setting  over  the  horizon ,  painting  the  sky < / text >    
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Output :    
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  " text " :  " with vibrant shades of orange and pink. "  }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								#### Example 2:    
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Input :    
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< type > Search  Query < / type >    
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< text > Top - rated  restaurants  in < / text >    
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Output :    
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  " text " :  " New York City for Italian cuisine. "  }    
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								- - -  
						 
					
						
							
								
									
										
										
										
											2024-11-30 16:29:27 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								### Context:  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< chat_history >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{ { MESSAGES : END : 6 } }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / chat_history >  
						 
					
						
							
								
									
										
										
										
											2024-11-29 17:02:32 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< type > { { TYPE } } < / type >    
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< text > { { PROMPT } } < / text >    
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								#### Output:  
						 
					
						
							
								
									
										
										
										
											2024-11-29 15:53:52 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								""" 
  
						 
					
						
							
								
									
										
										
										
											2024-06-10 06:19:36 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-06-11 14:40:27 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								TOOLS_FUNCTION_CALLING_PROMPT_TEMPLATE  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " TOOLS_FUNCTION_CALLING_PROMPT_TEMPLATE " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " task.tools.prompt_template " , 
							 
						 
					
						
							
								
									
										
										
										
											2024-09-07 11:50:29 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    os . environ . get ( " TOOLS_FUNCTION_CALLING_PROMPT_TEMPLATE " ,  " " ) , 
							 
						 
					
						
							
								
									
										
										
										
											2024-06-11 14:40:27 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-02-02 13:01:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								DEFAULT_TOOLS_FUNCTION_CALLING_PROMPT_TEMPLATE  =  """ Available Tools:  {{ TOOLS}} 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Your  task  is  to  choose  and  return  the  correct  tool ( s )  from  the  list  of  available  tools  based  on  the  query .  Follow  these  guidelines :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  Return  only  the  JSON  object ,  without  any  additional  text  or  explanation .  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  If  no  tools  match  the  query ,  return  an  empty  array :   
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     " tool_calls " :  [ ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  If  one  or  more  tools  match  the  query ,  construct  a  JSON  response  containing  a  " tool_calls "  array  with  objects  that  include :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   -  " name " :  The  tool ' s name. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   -  " parameters " :  A  dictionary  of  required  parameters  and  their  corresponding  values . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								The  format  for  the  JSON  response  is  strictly :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " tool_calls " :  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { " name " :  " toolName1 " ,  " parameters " :  { " key1 " :  " value1 " } } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { " name " :  " toolName2 " ,  " parameters " :  { " key2 " :  " value2 " } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} """ 
  
						 
					
						
							
								
									
										
										
										
											2024-12-13 14:28:42 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								DEFAULT_EMOJI_GENERATION_PROMPT_TEMPLATE  =  """ Your task is to reflect the speaker ' s likely facial expression through a fitting emoji. Interpret emotions from the message and reflect their facial expression using fitting, diverse emojis (e.g., 😊, 😢, 😡, 😱). 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Message :  ` ` ` { { prompt } } ` ` ` """ 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								DEFAULT_MOA_GENERATION_PROMPT_TEMPLATE  =  """ You have been provided with a set of responses from various models to the latest user query:  " {{ prompt}} " 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Your  task  is  to  synthesize  these  responses  into  a  single ,  high - quality  response .  It  is  crucial  to  critically  evaluate  the  information  provided  in  these  responses ,  recognizing  that  some  of  it  may  be  biased  or  incorrect .  Your  response  should  not  simply  replicate  the  given  answers  but  should  offer  a  refined ,  accurate ,  and  comprehensive  reply  to  the  instruction .  Ensure  your  response  is  well - structured ,  coherent ,  and  adheres  to  the  highest  standards  of  accuracy  and  reliability .  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Responses  from  models :  { { responses } } """ 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-02-03 17:14:38 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-02-10 18:25:02 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								####################################  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# Code Interpreter  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								####################################  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-03-06 11:06:28 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								ENABLE_CODE_EXECUTION  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " ENABLE_CODE_EXECUTION " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " code_execution.enable " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " ENABLE_CODE_EXECUTION " ,  " True " ) . lower ( )  ==  " true " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
									
										
										
										
											2025-02-18 08:25:50 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CODE_EXECUTION_ENGINE  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " CODE_EXECUTION_ENGINE " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " code_execution.engine " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " CODE_EXECUTION_ENGINE " ,  " pyodide " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CODE_EXECUTION_JUPYTER_URL  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " CODE_EXECUTION_JUPYTER_URL " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " code_execution.jupyter.url " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " CODE_EXECUTION_JUPYTER_URL " ,  " " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CODE_EXECUTION_JUPYTER_AUTH  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " CODE_EXECUTION_JUPYTER_AUTH " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " code_execution.jupyter.auth " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " CODE_EXECUTION_JUPYTER_AUTH " ,  " " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CODE_EXECUTION_JUPYTER_AUTH_TOKEN  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " CODE_EXECUTION_JUPYTER_AUTH_TOKEN " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " code_execution.jupyter.auth_token " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " CODE_EXECUTION_JUPYTER_AUTH_TOKEN " ,  " " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CODE_EXECUTION_JUPYTER_AUTH_PASSWORD  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " CODE_EXECUTION_JUPYTER_AUTH_PASSWORD " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " code_execution.jupyter.auth_password " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " CODE_EXECUTION_JUPYTER_AUTH_PASSWORD " ,  " " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-02-20 08:41:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								CODE_EXECUTION_JUPYTER_TIMEOUT  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " CODE_EXECUTION_JUPYTER_TIMEOUT " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " code_execution.jupyter.timeout " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int ( os . environ . get ( " CODE_EXECUTION_JUPYTER_TIMEOUT " ,  " 60 " ) ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
									
										
										
										
											2025-02-18 08:25:50 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-02-10 18:25:02 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								ENABLE_CODE_INTERPRETER  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " ENABLE_CODE_INTERPRETER " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " code_interpreter.enable " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " ENABLE_CODE_INTERPRETER " ,  " True " ) . lower ( )  ==  " true " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CODE_INTERPRETER_ENGINE  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " CODE_INTERPRETER_ENGINE " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " code_interpreter.engine " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " CODE_INTERPRETER_ENGINE " ,  " pyodide " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-02-12 13:36:16 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								CODE_INTERPRETER_PROMPT_TEMPLATE  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " CODE_INTERPRETER_PROMPT_TEMPLATE " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " code_interpreter.prompt_template " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " CODE_INTERPRETER_PROMPT_TEMPLATE " ,  " " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-02-10 18:25:02 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								CODE_INTERPRETER_JUPYTER_URL  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " CODE_INTERPRETER_JUPYTER_URL " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " code_interpreter.jupyter.url " , 
							 
						 
					
						
							
								
									
										
										
										
											2025-02-18 08:25:50 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    os . environ . get ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " CODE_INTERPRETER_JUPYTER_URL " ,  os . environ . get ( " CODE_EXECUTION_JUPYTER_URL " ,  " " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) , 
							 
						 
					
						
							
								
									
										
										
										
											2025-02-10 18:25:02 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CODE_INTERPRETER_JUPYTER_AUTH  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " CODE_INTERPRETER_JUPYTER_AUTH " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " code_interpreter.jupyter.auth " , 
							 
						 
					
						
							
								
									
										
										
										
											2025-02-18 08:25:50 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    os . environ . get ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " CODE_INTERPRETER_JUPYTER_AUTH " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        os . environ . get ( " CODE_EXECUTION_JUPYTER_AUTH " ,  " " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) , 
							 
						 
					
						
							
								
									
										
										
										
											2025-02-10 18:25:02 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CODE_INTERPRETER_JUPYTER_AUTH_TOKEN  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " CODE_INTERPRETER_JUPYTER_AUTH_TOKEN " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " code_interpreter.jupyter.auth_token " , 
							 
						 
					
						
							
								
									
										
										
										
											2025-02-18 08:25:50 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    os . environ . get ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " CODE_INTERPRETER_JUPYTER_AUTH_TOKEN " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        os . environ . get ( " CODE_EXECUTION_JUPYTER_AUTH_TOKEN " ,  " " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) , 
							 
						 
					
						
							
								
									
										
										
										
											2025-02-10 18:25:02 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CODE_INTERPRETER_JUPYTER_AUTH_PASSWORD  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " CODE_INTERPRETER_JUPYTER_AUTH_PASSWORD " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " code_interpreter.jupyter.auth_password " , 
							 
						 
					
						
							
								
									
										
										
										
											2025-02-18 08:25:50 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    os . environ . get ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " CODE_INTERPRETER_JUPYTER_AUTH_PASSWORD " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        os . environ . get ( " CODE_EXECUTION_JUPYTER_AUTH_PASSWORD " ,  " " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) , 
							 
						 
					
						
							
								
									
										
										
										
											2025-02-10 18:25:02 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-02-20 08:41:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								CODE_INTERPRETER_JUPYTER_TIMEOUT  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " CODE_INTERPRETER_JUPYTER_TIMEOUT " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " code_interpreter.jupyter.timeout " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        os . environ . get ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " CODE_INTERPRETER_JUPYTER_TIMEOUT " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            os . environ . get ( " CODE_EXECUTION_JUPYTER_TIMEOUT " ,  " 60 " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-02-10 18:25:02 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-02-03 17:14:38 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								DEFAULT_CODE_INTERPRETER_PROMPT  =  """ 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								#### Tools Available  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								1.  * * Code  Interpreter * * :  ` < code_interpreter  type = " code "  lang = " python " > < / code_interpreter > `  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   -  You  have  access  to  a  Python  shell  that  runs  directly  in  the  user ' s browser, enabling fast execution of code for analysis, calculations, or problem-solving.  Use it in this response. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   -  The  Python  code  you  write  can  incorporate  a  wide  array  of  libraries ,  handle  data  manipulation  or  visualization ,  perform  API  calls  for  web - related  tasks ,  or  tackle  virtually  any  computational  challenge .  Use  this  flexibility  to  * * think  outside  the  box ,  craft  elegant  solutions ,  and  harness  Python ' s full potential**. 
							 
						 
					
						
							
								
									
										
										
										
											2025-02-04 05:50:57 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   -  To  use  it ,  * * you  must  enclose  your  code  within  ` < code_interpreter  type = " code "  lang = " python " > `  XML  tags * *  and  stop  right  away .  If  you  don ' t, the code won ' t  execute .  Do  NOT  use  triple  backticks . 
							 
						 
					
						
							
								
									
										
										
										
											2025-02-03 17:14:38 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   -  When  coding ,  * * always  aim  to  print  meaningful  outputs * *  ( e . g . ,  results ,  tables ,  summaries ,  or  visuals )  to  better  interpret  and  verify  the  findings .  Avoid  relying  on  implicit  outputs ;  prioritize  explicit  and  clear  print  statements  so  the  results  are  effectively  communicated  to  the  user .   
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   -  After  obtaining  the  printed  output ,  * * always  provide  a  concise  analysis ,  interpretation ,  or  next  steps  to  help  the  user  understand  the  findings  or  refine  the  outcome  further . * *   
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   -  If  the  results  are  unclear ,  unexpected ,  or  require  validation ,  refine  the  code  and  execute  it  again  as  needed .  Always  aim  to  deliver  meaningful  insights  from  the  results ,  iterating  if  necessary .   
							 
						 
					
						
							
								
									
										
										
										
											2025-02-11 05:53:16 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   -  * * If  a  link  to  an  image ,  audio ,  or  any  file  is  provided  in  markdown  format  in  the  output ,  ALWAYS  regurgitate  word  for  word ,  explicitly  display  it  as  part  of  the  response  to  ensure  the  user  can  access  it  easily ,  do  NOT  change  the  link . * * 
							 
						 
					
						
							
								
									
										
										
										
											2025-02-04 12:49:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   -  All  responses  should  be  communicated  in  the  chat ' s primary language, ensuring seamless understanding. If the chat is multilingual, default to English for clarity. 
							 
						 
					
						
							
								
									
										
										
										
											2025-02-05 10:36:22 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-02-03 17:14:38 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Ensure  that  the  tools  are  effectively  utilized  to  achieve  the  highest - quality  analysis  for  the  user . """ 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-02-04 12:49:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-07-01 05:49:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								####################################  
						 
					
						
							
								
									
										
										
										
											2024-09-10 08:34:27 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# Vector Database  
						 
					
						
							
								
									
										
										
										
											2024-07-01 05:49:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								####################################  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-09-10 09:27:50 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VECTOR_DB  =  os . environ . get ( " VECTOR_DB " ,  " chroma " )  
						 
					
						
							
								
									
										
										
										
											2024-01-07 14:59:22 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-09-10 09:27:50 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# Chroma  
						 
					
						
							
								
									
										
										
										
											2025-02-28 03:39:00 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								CHROMA_DATA_PATH  =  f " { DATA_DIR } /vector_db "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-02-25 22:35:36 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								if  VECTOR_DB  ==  " chroma " :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    import  chromadb 
							 
						 
					
						
							
								
									
										
										
										
											2025-02-27 07:42:19 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-02-25 22:35:36 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    CHROMA_TENANT  =  os . environ . get ( " CHROMA_TENANT " ,  chromadb . DEFAULT_TENANT ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    CHROMA_DATABASE  =  os . environ . get ( " CHROMA_DATABASE " ,  chromadb . DEFAULT_DATABASE ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    CHROMA_HTTP_HOST  =  os . environ . get ( " CHROMA_HTTP_HOST " ,  " " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    CHROMA_HTTP_PORT  =  int ( os . environ . get ( " CHROMA_HTTP_PORT " ,  " 8000 " ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    CHROMA_CLIENT_AUTH_PROVIDER  =  os . environ . get ( " CHROMA_CLIENT_AUTH_PROVIDER " ,  " " ) 
							 
						 
					
						
							
								
									
										
										
										
											2025-02-27 07:42:19 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    CHROMA_CLIENT_AUTH_CREDENTIALS  =  os . environ . get ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " CHROMA_CLIENT_AUTH_CREDENTIALS " ,  " " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
									
										
										
										
											2025-02-25 22:35:36 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    # Comma-separated list of header=value pairs 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    CHROMA_HTTP_HEADERS  =  os . environ . get ( " CHROMA_HTTP_HEADERS " ,  " " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  CHROMA_HTTP_HEADERS : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        CHROMA_HTTP_HEADERS  =  dict ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            [ pair . split ( " = " )  for  pair  in  CHROMA_HTTP_HEADERS . split ( " , " ) ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        CHROMA_HTTP_HEADERS  =  None 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    CHROMA_HTTP_SSL  =  os . environ . get ( " CHROMA_HTTP_SSL " ,  " false " ) . lower ( )  ==  " true " 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-23 02:27:43 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# this uses the model defined in the Dockerfile ENV variable. If you dont use docker or docker based deployments such as k8s, the default embedding model will be used (sentence-transformers/all-MiniLM-L6-v2)  
						 
					
						
							
								
									
										
										
										
											2024-04-15 05:55:00 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-09-12 13:52:19 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# Milvus  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								MILVUS_URI  =  os . environ . get ( " MILVUS_URI " ,  f " { DATA_DIR } /vector_db/milvus.db " )  
						 
					
						
							
								
									
										
										
										
											2025-01-15 03:08:11 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								MILVUS_DB  =  os . environ . get ( " MILVUS_DB " ,  " default " )  
						 
					
						
							
								
									
										
										
										
											2025-02-01 06:00:38 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								MILVUS_TOKEN  =  os . environ . get ( " MILVUS_TOKEN " ,  None )  
						 
					
						
							
								
									
										
										
										
											2024-09-12 13:52:19 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-10-09 18:51:43 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# Qdrant  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								QDRANT_URI  =  os . environ . get ( " QDRANT_URI " ,  None )  
						 
					
						
							
								
									
										
										
										
											2024-11-15 04:06:46 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								QDRANT_API_KEY  =  os . environ . get ( " QDRANT_API_KEY " ,  None )  
						 
					
						
							
								
									
										
										
										
											2024-10-09 18:51:43 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-10-30 08:28:37 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# OpenSearch  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								OPENSEARCH_URI  =  os . environ . get ( " OPENSEARCH_URI " ,  " https://localhost:9200 " )  
						 
					
						
							
								
									
										
										
										
											2025-03-09 07:43:49 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								OPENSEARCH_SSL  =  os . environ . get ( " OPENSEARCH_SSL " ,  " true " ) . lower ( )  ==  " true "  
						 
					
						
							
								
									
										
										
										
											2025-03-10 22:27:31 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								OPENSEARCH_CERT_VERIFY  =  (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " OPENSEARCH_CERT_VERIFY " ,  " false " ) . lower ( )  ==  " true " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
									
										
										
										
											2024-10-30 08:28:37 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								OPENSEARCH_USERNAME  =  os . environ . get ( " OPENSEARCH_USERNAME " ,  None )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								OPENSEARCH_PASSWORD  =  os . environ . get ( " OPENSEARCH_PASSWORD " ,  None )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-03-04 05:39:42 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# ElasticSearch  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								ELASTICSEARCH_URL  =  os . environ . get ( " ELASTICSEARCH_URL " ,  " https://localhost:9200 " )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								ELASTICSEARCH_CA_CERTS  =  os . environ . get ( " ELASTICSEARCH_CA_CERTS " ,  None )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								ELASTICSEARCH_API_KEY  =  os . environ . get ( " ELASTICSEARCH_API_KEY " ,  None )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								ELASTICSEARCH_USERNAME  =  os . environ . get ( " ELASTICSEARCH_USERNAME " ,  None )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								ELASTICSEARCH_PASSWORD  =  os . environ . get ( " ELASTICSEARCH_PASSWORD " ,  None )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								ELASTICSEARCH_CLOUD_ID  =  os . environ . get ( " ELASTICSEARCH_CLOUD_ID " ,  None )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								SSL_ASSERT_FINGERPRINT  =  os . environ . get ( " SSL_ASSERT_FINGERPRINT " ,  None )  
						 
					
						
							
								
									
										
										
										
											2025-03-06 11:06:28 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								ELASTICSEARCH_INDEX_PREFIX  =  os . environ . get (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " ELASTICSEARCH_INDEX_PREFIX " ,  " open_webui_collections " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
									
										
										
										
											2024-11-05 05:34:05 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# Pgvector  
						 
					
						
							
								
									
										
										
										
											2024-11-06 07:15:32 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								PGVECTOR_DB_URL  =  os . environ . get ( " PGVECTOR_DB_URL " ,  DATABASE_URL )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  VECTOR_DB  ==  " pgvector "  and  not  PGVECTOR_DB_URL . startswith ( " postgres " ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    raise  ValueError ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " Pgvector requires setting PGVECTOR_DB_URL or using Postgres with vector extension as the primary database. " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
									
										
										
										
											2025-01-04 01:11:09 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								PGVECTOR_INITIALIZE_MAX_VECTOR_LENGTH  =  int (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " PGVECTOR_INITIALIZE_MAX_VECTOR_LENGTH " ,  " 1536 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
									
										
										
										
											2024-10-09 18:51:43 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-09-10 08:34:27 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								####################################  
						 
					
						
							
								
									
										
										
										
											2024-09-28 07:35:31 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# Information Retrieval (RAG)  
						 
					
						
							
								
									
										
										
										
											2024-09-10 08:34:27 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								####################################  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-12-19 10:04:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# If configured, Google Drive will be available as an upload option.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								ENABLE_GOOGLE_DRIVE_INTEGRATION  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " ENABLE_GOOGLE_DRIVE_INTEGRATION " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " google_drive.enable " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . getenv ( " ENABLE_GOOGLE_DRIVE_INTEGRATION " ,  " False " ) . lower ( )  ==  " true " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-12-27 03:41:58 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								GOOGLE_DRIVE_CLIENT_ID  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " GOOGLE_DRIVE_CLIENT_ID " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " google_drive.client_id " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " GOOGLE_DRIVE_CLIENT_ID " ,  " " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								GOOGLE_DRIVE_API_KEY  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " GOOGLE_DRIVE_API_KEY " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " google_drive.api_key " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " GOOGLE_DRIVE_API_KEY " ,  " " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
									
										
										
										
											2024-12-19 10:04:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-02-24 22:14:10 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								ENABLE_ONEDRIVE_INTEGRATION  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " ENABLE_ONEDRIVE_INTEGRATION " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " onedrive.enable " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . getenv ( " ENABLE_ONEDRIVE_INTEGRATION " ,  " False " ) . lower ( )  ==  " true " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								ONEDRIVE_CLIENT_ID  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " ONEDRIVE_CLIENT_ID " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " onedrive.client_id " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " ONEDRIVE_CLIENT_ID " ,  " " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-09-10 08:34:27 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# RAG Content Extraction  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CONTENT_EXTRACTION_ENGINE  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " CONTENT_EXTRACTION_ENGINE " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " rag.CONTENT_EXTRACTION_ENGINE " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " CONTENT_EXTRACTION_ENGINE " ,  " " ) . lower ( ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								TIKA_SERVER_URL  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " TIKA_SERVER_URL " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " rag.tika_server_url " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . getenv ( " TIKA_SERVER_URL " ,  " http://tika:9998 " ) ,   # Default for sidecar deployment 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-02-14 20:08:03 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								DOCLING_SERVER_URL  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " DOCLING_SERVER_URL " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " rag.docling_server_url " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . getenv ( " DOCLING_SERVER_URL " ,  " http://docling:5001 " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-02-07 20:44:47 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								DOCUMENT_INTELLIGENCE_ENDPOINT  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " DOCUMENT_INTELLIGENCE_ENDPOINT " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " rag.document_intelligence_endpoint " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . getenv ( " DOCUMENT_INTELLIGENCE_ENDPOINT " ,  " " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								DOCUMENT_INTELLIGENCE_KEY  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " DOCUMENT_INTELLIGENCE_KEY " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " rag.document_intelligence_key " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . getenv ( " DOCUMENT_INTELLIGENCE_KEY " ,  " " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-02-27 07:42:19 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								BYPASS_EMBEDDING_AND_RETRIEVAL  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " BYPASS_EMBEDDING_AND_RETRIEVAL " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " rag.bypass_embedding_and_retrieval " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " BYPASS_EMBEDDING_AND_RETRIEVAL " ,  " False " ) . lower ( )  ==  " true " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-05-14 05:32:21 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								RAG_TOP_K  =  PersistentConfig (  
						 
					
						
							
								
									
										
										
										
											2024-09-19 22:44:33 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    " RAG_TOP_K " ,  " rag.top_k " ,  int ( os . environ . get ( " RAG_TOP_K " ,  " 3 " ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-05-10 13:36:10 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
									
										
										
										
											2024-05-14 05:32:21 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								RAG_RELEVANCE_THRESHOLD  =  PersistentConfig (  
						 
					
						
							
								
									
										
										
										
											2024-05-10 13:36:10 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    " RAG_RELEVANCE_THRESHOLD " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " rag.relevance_threshold " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float ( os . environ . get ( " RAG_RELEVANCE_THRESHOLD " ,  " 0.0 " ) ) , 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-27 02:41:39 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
									
										
										
										
											2024-04-23 07:36:46 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-05-14 05:32:21 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								ENABLE_RAG_HYBRID_SEARCH  =  PersistentConfig (  
						 
					
						
							
								
									
										
										
										
											2024-05-10 13:36:10 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    " ENABLE_RAG_HYBRID_SEARCH " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " rag.enable_hybrid_search " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " ENABLE_RAG_HYBRID_SEARCH " ,  " " ) . lower ( )  ==  " true " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
									
										
										
										
											2024-05-07 04:12:08 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-02-19 13:14:58 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								RAG_FULL_CONTEXT  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " RAG_FULL_CONTEXT " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " rag.full_context " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . getenv ( " RAG_FULL_CONTEXT " ,  " False " ) . lower ( )  ==  " true " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-08-27 21:30:57 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								RAG_FILE_MAX_COUNT  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " RAG_FILE_MAX_COUNT " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " rag.file.max_count " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        int ( os . environ . get ( " RAG_FILE_MAX_COUNT " ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  os . environ . get ( " RAG_FILE_MAX_COUNT " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        else  None 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) , 
							 
						 
					
						
							
								
									
										
										
										
											2024-08-02 21:36:17 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-08-27 21:30:57 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								RAG_FILE_MAX_SIZE  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " RAG_FILE_MAX_SIZE " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " rag.file.max_size " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        int ( os . environ . get ( " RAG_FILE_MAX_SIZE " ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  os . environ . get ( " RAG_FILE_MAX_SIZE " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        else  None 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) , 
							 
						 
					
						
							
								
									
										
										
										
											2024-08-02 21:36:17 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-05-14 05:32:21 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								ENABLE_RAG_WEB_LOADER_SSL_VERIFICATION  =  PersistentConfig (  
						 
					
						
							
								
									
										
										
										
											2024-05-10 13:36:10 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    " ENABLE_RAG_WEB_LOADER_SSL_VERIFICATION " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " rag.enable_web_loader_ssl_verification " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " ENABLE_RAG_WEB_LOADER_SSL_VERIFICATION " ,  " True " ) . lower ( )  ==  " true " , 
							 
						 
					
						
							
								
									
										
										
										
											2024-05-07 04:12:08 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-05-14 05:32:21 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								RAG_EMBEDDING_ENGINE  =  PersistentConfig (  
						 
					
						
							
								
									
										
										
										
											2024-05-10 13:36:10 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    " RAG_EMBEDDING_ENGINE " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " rag.embedding_engine " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " RAG_EMBEDDING_ENGINE " ,  " " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
									
										
										
										
											2024-04-15 05:55:00 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-05-14 05:32:21 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								PDF_EXTRACT_IMAGES  =  PersistentConfig (  
						 
					
						
							
								
									
										
										
										
											2024-05-10 13:36:10 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    " PDF_EXTRACT_IMAGES " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " rag.pdf_extract_images " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " PDF_EXTRACT_IMAGES " ,  " False " ) . lower ( )  ==  " true " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
									
										
										
										
											2024-04-28 06:54:26 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-05-14 05:32:21 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								RAG_EMBEDDING_MODEL  =  PersistentConfig (  
						 
					
						
							
								
									
										
										
										
											2024-05-10 13:36:10 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    " RAG_EMBEDDING_MODEL " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " rag.embedding_model " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " RAG_EMBEDDING_MODEL " ,  " sentence-transformers/all-MiniLM-L6-v2 " ) , 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-23 02:27:43 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
									
										
										
										
											2024-08-14 20:38:19 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								log . info ( f " Embedding model set:  { RAG_EMBEDDING_MODEL . value } " )  
						 
					
						
							
								
									
										
										
										
											2024-04-10 14:54:20 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-04-25 20:49:59 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								RAG_EMBEDDING_MODEL_AUTO_UPDATE  =  (  
						 
					
						
							
								
									
										
										
										
											2024-12-18 05:51:29 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    not  OFFLINE_MODE 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    and  os . environ . get ( " RAG_EMBEDDING_MODEL_AUTO_UPDATE " ,  " True " ) . lower ( )  ==  " true " 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-25 20:49:59 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-04-23 02:27:43 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								RAG_EMBEDDING_MODEL_TRUST_REMOTE_CODE  =  (  
						 
					
						
							
								
									
										
										
										
											2024-11-13 12:44:14 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    os . environ . get ( " RAG_EMBEDDING_MODEL_TRUST_REMOTE_CODE " ,  " True " ) . lower ( )  ==  " true " 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-23 04:49:58 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-09-27 06:28:47 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								RAG_EMBEDDING_BATCH_SIZE  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " RAG_EMBEDDING_BATCH_SIZE " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " rag.embedding_batch_size " , 
							 
						 
					
						
							
								
									
										
										
										
											2024-10-07 06:09:07 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    int ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        os . environ . get ( " RAG_EMBEDDING_BATCH_SIZE " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        or  os . environ . get ( " RAG_EMBEDDING_OPENAI_BATCH_SIZE " ,  " 1 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) , 
							 
						 
					
						
							
								
									
										
										
										
											2024-06-02 22:34:31 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-05-14 05:32:21 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								RAG_RERANKING_MODEL  =  PersistentConfig (  
						 
					
						
							
								
									
										
										
										
											2024-05-10 13:36:10 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    " RAG_RERANKING_MODEL " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " rag.reranking_model " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " RAG_RERANKING_MODEL " ,  " " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  RAG_RERANKING_MODEL . value  !=  " " :  
						 
					
						
							
								
									
										
										
										
											2024-08-14 20:38:19 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    log . info ( f " Reranking model set:  { RAG_RERANKING_MODEL . value } " ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-23 04:49:58 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-04-25 20:49:59 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								RAG_RERANKING_MODEL_AUTO_UPDATE  =  (  
						 
					
						
							
								
									
										
										
										
											2024-12-18 05:51:29 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    not  OFFLINE_MODE 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    and  os . environ . get ( " RAG_RERANKING_MODEL_AUTO_UPDATE " ,  " True " ) . lower ( )  ==  " true " 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-25 20:49:59 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-04-23 04:49:58 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								RAG_RERANKING_MODEL_TRUST_REMOTE_CODE  =  (  
						 
					
						
							
								
									
										
										
										
											2024-11-13 12:44:14 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    os . environ . get ( " RAG_RERANKING_MODEL_TRUST_REMOTE_CODE " ,  " True " ) . lower ( )  ==  " true " 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-10 14:54:20 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
									
										
										
										
											2024-04-09 04:57:54 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-10-13 17:07:50 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								RAG_TEXT_SPLITTER  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " RAG_TEXT_SPLITTER " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " rag.text_splitter " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " RAG_TEXT_SPLITTER " ,  " " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								TIKTOKEN_CACHE_DIR  =  os . environ . get ( " TIKTOKEN_CACHE_DIR " ,  f " { CACHE_DIR } /tiktoken " )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								TIKTOKEN_ENCODING_NAME  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " TIKTOKEN_ENCODING_NAME " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " rag.tiktoken_encoding_name " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " TIKTOKEN_ENCODING_NAME " ,  " cl100k_base " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-05-14 05:32:21 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								CHUNK_SIZE  =  PersistentConfig (  
						 
					
						
							
								
									
										
										
										
											2024-09-19 22:44:33 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    " CHUNK_SIZE " ,  " rag.chunk_size " ,  int ( os . environ . get ( " CHUNK_SIZE " ,  " 1000 " ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-05-10 13:36:10 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
									
										
										
										
											2024-05-14 05:32:21 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								CHUNK_OVERLAP  =  PersistentConfig (  
						 
					
						
							
								
									
										
										
										
											2024-05-10 13:36:10 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    " CHUNK_OVERLAP " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " rag.chunk_overlap " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int ( os . environ . get ( " CHUNK_OVERLAP " ,  " 100 " ) ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
									
										
										
										
											2024-02-18 14:41:03 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-11-22 09:58:29 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								DEFAULT_RAG_TEMPLATE  =  """ ### Task: 
  
						 
					
						
							
								
									
										
										
										
											2024-11-22 10:26:38 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Respond  to  the  user  query  using  the  provided  context ,  incorporating  inline  citations  in  the  format  [ source_id ]  * * only  when  the  < source_id >  tag  is  explicitly  provided * *  in  the  context .  
						 
					
						
							
								
									
										
										
										
											2024-11-22 09:58:29 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								### Guidelines:  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  If  you  don ' t know the answer, clearly state that.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  If  uncertain ,  ask  the  user  for  clarification .  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  Respond  in  the  same  language  as  the  user ' s query.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  If  the  context  is  unreadable  or  of  poor  quality ,  inform  the  user  and  provide  the  best  possible  answer .  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  If  the  answer  isn ' t present in the context but you possess the knowledge, explain this to the user and provide the answer using your own understanding.  
						 
					
						
							
								
									
										
										
										
											2025-02-21 03:02:45 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								-  * * Only  include  inline  citations  using  [ source_id ]  ( e . g . ,  [ 1 ] ,  [ 2 ] )  when  a  ` < source_id > `  tag  is  explicitly  provided  in  the  context . * *  
						 
					
						
							
								
									
										
										
										
											2024-11-22 10:26:38 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								-  Do  not  cite  if  the  < source_id >  tag  is  not  provided  in  the  context .    
						 
					
						
							
								
									
										
										
										
											2024-11-22 09:58:29 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								-  Do  not  use  XML  tags  in  your  response .  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  Ensure  citations  are  concise  and  directly  related  to  the  information  provided .  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								### Example of Citation:  
						 
					
						
							
								
									
										
										
										
											2024-11-22 10:26:38 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								If  the  user  asks  about  a  specific  topic  and  the  information  is  found  in  " whitepaper.pdf "  with  a  provided  < source_id > ,  the  response  should  include  the  citation  like  so :    
						 
					
						
							
								
									
										
										
										
											2024-11-22 09:58:29 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								*  " According to the study, the proposed method increases efficiency by 20 %  [whitepaper.pdf]. "  
						 
					
						
							
								
									
										
										
										
											2024-11-22 10:26:38 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								If  no  < source_id >  is  present ,  the  response  should  omit  the  citation .  
						 
					
						
							
								
									
										
										
										
											2024-11-22 09:58:29 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								### Output:  
						 
					
						
							
								
									
										
										
										
											2024-11-22 10:26:38 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Provide  a  clear  and  direct  response  to  the  user ' s query, including inline citations in the format [source_id] only when the <source_id> tag is present in the context.  
						 
					
						
							
								
									
										
										
										
											2024-09-12 21:31:49 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-18 14:41:03 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								< context >  
						 
					
						
							
								
									
										
										
										
											2024-10-15 09:47:41 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{ { CONTEXT } }  
						 
					
						
							
								
									
										
										
										
											2024-02-18 14:41:03 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								< / context >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-09-12 21:31:49 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< user_query >  
						 
					
						
							
								
									
										
										
										
											2024-10-15 09:47:41 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{ { QUERY } }  
						 
					
						
							
								
									
										
										
										
											2024-09-12 21:31:49 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< / user_query >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								""" 
  
						 
					
						
							
								
									
										
										
										
											2024-02-18 14:41:03 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-05-14 05:32:21 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								RAG_TEMPLATE  =  PersistentConfig (  
						 
					
						
							
								
									
										
										
										
											2024-05-10 13:36:10 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    " RAG_TEMPLATE " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " rag.template " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " RAG_TEMPLATE " ,  DEFAULT_RAG_TEMPLATE ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
									
										
										
										
											2024-04-23 07:36:46 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-05-14 05:32:21 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								RAG_OPENAI_API_BASE_URL  =  PersistentConfig (  
						 
					
						
							
								
									
										
										
										
											2024-05-10 13:36:10 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    " RAG_OPENAI_API_BASE_URL " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " rag.openai_api_base_url " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . getenv ( " RAG_OPENAI_API_BASE_URL " ,  OPENAI_API_BASE_URL ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
									
										
										
										
											2024-05-14 05:32:21 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								RAG_OPENAI_API_KEY  =  PersistentConfig (  
						 
					
						
							
								
									
										
										
										
											2024-05-10 13:36:10 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    " RAG_OPENAI_API_KEY " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " rag.openai_api_key " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . getenv ( " RAG_OPENAI_API_KEY " ,  OPENAI_API_KEY ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
									
										
										
										
											2024-04-21 04:15:59 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-11-19 06:25:36 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								RAG_OLLAMA_BASE_URL  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " RAG_OLLAMA_BASE_URL " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " rag.ollama.url " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . getenv ( " RAG_OLLAMA_BASE_URL " ,  OLLAMA_BASE_URL ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								RAG_OLLAMA_API_KEY  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " RAG_OLLAMA_API_KEY " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " rag.ollama.key " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . getenv ( " RAG_OLLAMA_API_KEY " ,  " " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-05-07 04:12:08 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								ENABLE_RAG_LOCAL_WEB_FETCH  =  (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . getenv ( " ENABLE_RAG_LOCAL_WEB_FETCH " ,  " False " ) . lower ( )  ==  " true " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
									
										
										
										
											2024-04-30 03:55:17 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-05-14 05:32:21 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								YOUTUBE_LOADER_LANGUAGE  =  PersistentConfig (  
						 
					
						
							
								
									
										
										
										
											2024-05-10 13:36:10 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    " YOUTUBE_LOADER_LANGUAGE " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " rag.youtube_loader_language " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . getenv ( " YOUTUBE_LOADER_LANGUAGE " ,  " en " ) . split ( " , " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
									
										
										
										
											2024-05-09 01:51:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-11-27 22:09:33 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								YOUTUBE_LOADER_PROXY_URL  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " YOUTUBE_LOADER_PROXY_URL " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " rag.youtube_loader_proxy_url " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . getenv ( " YOUTUBE_LOADER_PROXY_URL " ,  " " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-05-28 03:48:08 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-06-02 10:03:56 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								ENABLE_RAG_WEB_SEARCH  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " ENABLE_RAG_WEB_SEARCH " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " rag.web.search.enable " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . getenv ( " ENABLE_RAG_WEB_SEARCH " ,  " False " ) . lower ( )  ==  " true " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-06-02 10:40:48 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								RAG_WEB_SEARCH_ENGINE  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " RAG_WEB_SEARCH_ENGINE " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " rag.web.search.engine " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . getenv ( " RAG_WEB_SEARCH_ENGINE " ,  " " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
									
										
										
										
											2024-06-02 10:03:56 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-02-27 07:42:19 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								BYPASS_WEB_SEARCH_EMBEDDING_AND_RETRIEVAL  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " BYPASS_WEB_SEARCH_EMBEDDING_AND_RETRIEVAL " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " rag.web.search.bypass_embedding_and_retrieval " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . getenv ( " BYPASS_WEB_SEARCH_EMBEDDING_AND_RETRIEVAL " ,  " False " ) . lower ( )  ==  " true " , 
							 
						 
					
						
							
								
									
										
										
										
											2025-02-18 10:14:26 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-06-18 05:32:23 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# You can provide a list of your own websites to filter after performing a web search.  
						 
					
						
							
								
									
										
										
										
											2024-06-17 15:33:23 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# This ensures the highest level of safety and reliability of the information sources.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								RAG_WEB_SEARCH_DOMAIN_FILTER_LIST  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " RAG_WEB_SEARCH_DOMAIN_FILTER_LIST " , 
							 
						 
					
						
							
								
									
										
										
										
											2025-02-08 03:23:04 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    " rag.web.search.domain.filter_list " , 
							 
						 
					
						
							
								
									
										
										
										
											2024-06-13 08:14:48 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    [ 
							 
						 
					
						
							
								
									
										
										
										
											2024-06-18 05:32:23 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        # "wikipedia.com", 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        # "wikimedia.org", 
							 
						 
					
						
							
								
									
										
										
										
											2024-06-17 15:33:23 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        # "wikidata.org", 
							 
						 
					
						
							
								
									
										
										
										
											2024-06-13 08:14:48 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-12-19 02:25:57 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-06-02 10:03:56 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								SEARXNG_QUERY_URL  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " SEARXNG_QUERY_URL " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " rag.web.search.searxng_query_url " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . getenv ( " SEARXNG_QUERY_URL " ,  " " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								GOOGLE_PSE_API_KEY  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " GOOGLE_PSE_API_KEY " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " rag.web.search.google_pse_api_key " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . getenv ( " GOOGLE_PSE_API_KEY " ,  " " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								GOOGLE_PSE_ENGINE_ID  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " GOOGLE_PSE_ENGINE_ID " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " rag.web.search.google_pse_engine_id " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . getenv ( " GOOGLE_PSE_ENGINE_ID " ,  " " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								BRAVE_SEARCH_API_KEY  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " BRAVE_SEARCH_API_KEY " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " rag.web.search.brave_search_api_key " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . getenv ( " BRAVE_SEARCH_API_KEY " ,  " " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-12-08 13:21:10 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								KAGI_SEARCH_API_KEY  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " KAGI_SEARCH_API_KEY " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " rag.web.search.kagi_search_api_key " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . getenv ( " KAGI_SEARCH_API_KEY " ,  " " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-10-29 22:45:38 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								MOJEEK_SEARCH_API_KEY  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " MOJEEK_SEARCH_API_KEY " , 
							 
						 
					
						
							
								
									
										
										
										
											2024-11-22 00:10:05 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    " rag.web.search.mojeek_search_api_key " , 
							 
						 
					
						
							
								
									
										
										
										
											2024-10-29 22:45:38 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    os . getenv ( " MOJEEK_SEARCH_API_KEY " ,  " " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-02-10 16:44:47 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								BOCHA_SEARCH_API_KEY  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " BOCHA_SEARCH_API_KEY " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " rag.web.search.bocha_search_api_key " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . getenv ( " BOCHA_SEARCH_API_KEY " ,  " " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-06-02 10:03:56 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								SERPSTACK_API_KEY  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " SERPSTACK_API_KEY " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " rag.web.search.serpstack_api_key " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . getenv ( " SERPSTACK_API_KEY " ,  " " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
									
										
										
										
											2024-05-28 03:48:08 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-06-02 10:03:56 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								SERPSTACK_HTTPS  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " SERPSTACK_HTTPS " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " rag.web.search.serpstack_https " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . getenv ( " SERPSTACK_HTTPS " ,  " True " ) . lower ( )  ==  " true " , 
							 
						 
					
						
							
								
									
										
										
										
											2024-05-12 15:19:52 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
									
										
										
										
											2024-05-28 03:48:08 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-06-02 10:03:56 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								SERPER_API_KEY  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " SERPER_API_KEY " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " rag.web.search.serper_api_key " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . getenv ( " SERPER_API_KEY " ,  " " ) , 
							 
						 
					
						
							
								
									
										
										
										
											2024-05-11 23:12:52 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
									
										
										
										
											2024-05-06 12:27:46 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-06-10 09:39:46 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								SERPLY_API_KEY  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " SERPLY_API_KEY " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " rag.web.search.serply_api_key " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . getenv ( " SERPLY_API_KEY " ,  " " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-06-14 23:14:11 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								TAVILY_API_KEY  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " TAVILY_API_KEY " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " rag.web.search.tavily_api_key " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . getenv ( " TAVILY_API_KEY " ,  " " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
									
										
										
										
											2024-06-02 10:03:56 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-03-08 13:43:02 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								TAVILY_EXTRACT_DEPTH  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " TAVILY_EXTRACT_DEPTH " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " rag.web.search.tavily_extract_depth " , 
							 
						 
					
						
							
								
									
										
										
										
											2025-03-08 14:07:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    os . getenv ( " TAVILY_EXTRACT_DEPTH " ,  " basic " ) , 
							 
						 
					
						
							
								
									
										
										
										
											2025-03-08 13:43:02 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-11-04 09:07:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								JINA_API_KEY  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " JINA_API_KEY " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " rag.web.search.jina_api_key " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . getenv ( " JINA_API_KEY " ,  " " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-08-27 15:45:17 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								SEARCHAPI_API_KEY  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " SEARCHAPI_API_KEY " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " rag.web.search.searchapi_api_key " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . getenv ( " SEARCHAPI_API_KEY " ,  " " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								SEARCHAPI_ENGINE  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " SEARCHAPI_ENGINE " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " rag.web.search.searchapi_engine " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . getenv ( " SEARCHAPI_ENGINE " ,  " " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-02-14 12:24:58 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								SERPAPI_API_KEY  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " SERPAPI_API_KEY " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " rag.web.search.serpapi_api_key " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . getenv ( " SERPAPI_API_KEY " ,  " " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								SERPAPI_ENGINE  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " SERPAPI_ENGINE " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " rag.web.search.serpapi_engine " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . getenv ( " SERPAPI_ENGINE " ,  " " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-11-04 09:07:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								BING_SEARCH_V7_ENDPOINT  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " BING_SEARCH_V7_ENDPOINT " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " rag.web.search.bing_search_v7_endpoint " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " BING_SEARCH_V7_ENDPOINT " ,  " https://api.bing.microsoft.com/v7.0/search " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								BING_SEARCH_V7_SUBSCRIPTION_KEY  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " BING_SEARCH_V7_SUBSCRIPTION_KEY " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " rag.web.search.bing_search_v7_subscription_key " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " BING_SEARCH_V7_SUBSCRIPTION_KEY " ,  " " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-02-05 02:13:05 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								EXA_API_KEY  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " EXA_API_KEY " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " rag.web.search.exa_api_key " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . getenv ( " EXA_API_KEY " ,  " " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
									
										
										
										
											2024-11-04 09:07:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-02-27 16:12:41 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								PERPLEXITY_API_KEY  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " PERPLEXITY_API_KEY " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " rag.web.search.perplexity_api_key " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . getenv ( " PERPLEXITY_API_KEY " ,  " " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-06-02 10:03:56 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								RAG_WEB_SEARCH_RESULT_COUNT  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " RAG_WEB_SEARCH_RESULT_COUNT " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " rag.web.search.result_count " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int ( os . getenv ( " RAG_WEB_SEARCH_RESULT_COUNT " ,  " 3 " ) ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								RAG_WEB_SEARCH_CONCURRENT_REQUESTS  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " RAG_WEB_SEARCH_CONCURRENT_REQUESTS " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " rag.web.search.concurrent_requests " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int ( os . getenv ( " RAG_WEB_SEARCH_CONCURRENT_REQUESTS " ,  " 10 " ) ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-02-18 11:43:32 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								RAG_WEB_LOADER_ENGINE  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " RAG_WEB_LOADER_ENGINE " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " rag.web.loader.engine " , 
							 
						 
					
						
							
								
									
										
										
										
											2025-02-19 13:14:58 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    os . environ . get ( " RAG_WEB_LOADER_ENGINE " ,  " safe_web " ) , 
							 
						 
					
						
							
								
									
										
										
										
											2025-01-29 13:03:15 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
									
										
										
										
											2024-06-02 10:03:56 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-02-14 15:15:09 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								RAG_WEB_SEARCH_TRUST_ENV  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " RAG_WEB_SEARCH_TRUST_ENV " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " rag.web.search.trust_env " , 
							 
						 
					
						
							
								
									
										
										
										
											2025-02-21 01:46:17 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    os . getenv ( " RAG_WEB_SEARCH_TRUST_ENV " ,  " False " ) . lower ( )  ==  " true " , 
							 
						 
					
						
							
								
									
										
										
										
											2025-02-14 15:15:09 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
									
										
										
										
											2024-06-02 10:03:56 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-02-03 07:58:09 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								PLAYWRIGHT_WS_URI  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " PLAYWRIGHT_WS_URI " , 
							 
						 
					
						
							
								
									
										
										
										
											2025-02-18 11:43:32 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    " rag.web.loader.engine.playwright.ws.uri " , 
							 
						 
					
						
							
								
									
										
										
										
											2025-02-19 13:14:58 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    os . environ . get ( " PLAYWRIGHT_WS_URI " ,  None ) , 
							 
						 
					
						
							
								
									
										
										
										
											2025-02-03 07:58:09 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-03-21 05:01:47 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								PLAYWRIGHT_TIMEOUT  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " PLAYWRIGHT_TIMEOUT " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " rag.web.loader.engine.playwright.timeout " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int ( os . environ . get ( " PLAYWRIGHT_TIMEOUT " ,  " 10 " ) ) , 
							 
						 
					
						
							
								
									
										
										
										
											2025-03-20 14:58:38 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-02-19 16:54:44 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								FIRECRAWL_API_KEY  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " FIRECRAWL_API_KEY " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " firecrawl.api_key " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " FIRECRAWL_API_KEY " ,  " " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								FIRECRAWL_API_BASE_URL  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " FIRECRAWL_API_BASE_URL " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " firecrawl.api_url " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " FIRECRAWL_API_BASE_URL " ,  " https://api.firecrawl.dev " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-22 10:12:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								####################################  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# Images  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								####################################  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-05-14 05:32:21 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								IMAGE_GENERATION_ENGINE  =  PersistentConfig (  
						 
					
						
							
								
									
										
										
										
											2024-05-10 13:36:10 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    " IMAGE_GENERATION_ENGINE " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " image_generation.engine " , 
							 
						 
					
						
							
								
									
										
										
										
											2024-08-22 00:29:52 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    os . getenv ( " IMAGE_GENERATION_ENGINE " ,  " openai " ) , 
							 
						 
					
						
							
								
									
										
										
										
											2024-05-10 13:36:10 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
									
										
										
										
											2024-04-28 06:54:26 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-05-14 05:32:21 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								ENABLE_IMAGE_GENERATION  =  PersistentConfig (  
						 
					
						
							
								
									
										
										
										
											2024-05-10 13:36:10 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    " ENABLE_IMAGE_GENERATION " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " image_generation.enable " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " ENABLE_IMAGE_GENERATION " ,  " " ) . lower ( )  ==  " true " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
									
										
										
										
											2025-01-16 16:13:02 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								ENABLE_IMAGE_PROMPT_GENERATION  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " ENABLE_IMAGE_PROMPT_GENERATION " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " image_generation.prompt.enable " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " ENABLE_IMAGE_PROMPT_GENERATION " ,  " true " ) . lower ( )  ==  " true " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-05-14 05:32:21 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								AUTOMATIC1111_BASE_URL  =  PersistentConfig (  
						 
					
						
							
								
									
										
										
										
											2024-05-10 13:36:10 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    " AUTOMATIC1111_BASE_URL " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " image_generation.automatic1111.base_url " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . getenv ( " AUTOMATIC1111_BASE_URL " ,  " " ) , 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 13:21:12 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
									
										
										
										
											2024-06-20 14:15:49 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								AUTOMATIC1111_API_AUTH  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " AUTOMATIC1111_API_AUTH " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " image_generation.automatic1111.api_auth " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . getenv ( " AUTOMATIC1111_API_AUTH " ,  " " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
									
										
										
										
											2024-04-21 05:04:16 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-09-07 23:21:17 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								AUTOMATIC1111_CFG_SCALE  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " AUTOMATIC1111_CFG_SCALE " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " image_generation.automatic1111.cfg_scale " , 
							 
						 
					
						
							
								
									
										
										
										
											2024-09-12 20:00:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        float ( os . environ . get ( " AUTOMATIC1111_CFG_SCALE " ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  os . environ . get ( " AUTOMATIC1111_CFG_SCALE " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        else  None 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) , 
							 
						 
					
						
							
								
									
										
										
										
											2024-09-07 23:21:17 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-09-12 20:00:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-09-07 23:21:17 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								AUTOMATIC1111_SAMPLER  =  PersistentConfig (  
						 
					
						
							
								
									
										
										
										
											2024-10-29 05:02:18 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    " AUTOMATIC1111_SAMPLER " , 
							 
						 
					
						
							
								
									
										
										
										
											2024-09-07 23:21:17 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    " image_generation.automatic1111.sampler " , 
							 
						 
					
						
							
								
									
										
										
										
											2024-09-12 20:00:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        os . environ . get ( " AUTOMATIC1111_SAMPLER " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  os . environ . get ( " AUTOMATIC1111_SAMPLER " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        else  None 
							 
						 
					
						
							
								
									
										
										
										
											2024-09-13 12:49:23 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ) , 
							 
						 
					
						
							
								
									
										
										
										
											2024-09-07 23:21:17 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								AUTOMATIC1111_SCHEDULER  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " AUTOMATIC1111_SCHEDULER " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " image_generation.automatic1111.scheduler " , 
							 
						 
					
						
							
								
									
										
										
										
											2024-09-12 20:00:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        os . environ . get ( " AUTOMATIC1111_SCHEDULER " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  os . environ . get ( " AUTOMATIC1111_SCHEDULER " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        else  None 
							 
						 
					
						
							
								
									
										
										
										
											2024-09-13 12:49:23 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ) , 
							 
						 
					
						
							
								
									
										
										
										
											2024-09-07 23:21:17 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-05-14 05:32:21 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								COMFYUI_BASE_URL  =  PersistentConfig (  
						 
					
						
							
								
									
										
										
										
											2024-05-10 13:36:10 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    " COMFYUI_BASE_URL " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " image_generation.comfyui.base_url " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . getenv ( " COMFYUI_BASE_URL " ,  " " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
									
										
										
										
											2024-04-21 05:04:16 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-12-17 15:29:00 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								COMFYUI_API_KEY  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " COMFYUI_API_KEY " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " image_generation.comfyui.api_key " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . getenv ( " COMFYUI_API_KEY " ,  " " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-08-21 06:35:42 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								COMFYUI_DEFAULT_WORKFLOW  =  """ 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " 3 " :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " inputs " :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      " seed " :  0 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      " steps " :  20 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      " cfg " :  8 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      " sampler_name " :  " euler " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      " scheduler " :  " normal " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      " denoise " :  1 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      " model " :  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " 4 " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      " positive " :  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " 6 " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      " negative " :  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " 7 " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      " latent_image " :  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " 5 " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " class_type " :  " KSampler " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " _meta " :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      " title " :  " KSampler " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " 4 " :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " inputs " :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      " ckpt_name " :  " model.safetensors " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " class_type " :  " CheckpointLoaderSimple " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " _meta " :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      " title " :  " Load Checkpoint " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " 5 " :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " inputs " :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      " width " :  512 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      " height " :  512 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      " batch_size " :  1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " class_type " :  " EmptyLatentImage " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " _meta " :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      " title " :  " Empty Latent Image " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " 6 " :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " inputs " :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      " text " :  " Prompt " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      " clip " :  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " 4 " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " class_type " :  " CLIPTextEncode " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " _meta " :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      " title " :  " CLIP Text Encode (Prompt) " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " 7 " :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " inputs " :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      " text " :  " " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      " clip " :  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " 4 " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " class_type " :  " CLIPTextEncode " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " _meta " :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      " title " :  " CLIP Text Encode (Prompt) " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " 8 " :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " inputs " :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      " samples " :  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " 3 " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      " vae " :  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " 4 " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        2 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " class_type " :  " VAEDecode " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " _meta " :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      " title " :  " VAE Decode " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " 9 " :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " inputs " :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      " filename_prefix " :  " ComfyUI " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      " images " :  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " 8 " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " class_type " :  " SaveImage " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " _meta " :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      " title " :  " Save Image " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								""" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-08-21 00:17:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								COMFYUI_WORKFLOW  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " COMFYUI_WORKFLOW " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " image_generation.comfyui.workflow " , 
							 
						 
					
						
							
								
									
										
										
										
											2024-08-21 06:35:42 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    os . getenv ( " COMFYUI_WORKFLOW " ,  COMFYUI_DEFAULT_WORKFLOW ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								COMFYUI_WORKFLOW_NODES  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " COMFYUI_WORKFLOW " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " image_generation.comfyui.nodes " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    [ ] , 
							 
						 
					
						
							
								
									
										
										
										
											2024-08-02 11:01:21 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-05-14 05:32:21 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								IMAGES_OPENAI_API_BASE_URL  =  PersistentConfig (  
						 
					
						
							
								
									
										
										
										
											2024-05-10 13:36:10 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    " IMAGES_OPENAI_API_BASE_URL " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " image_generation.openai.api_base_url " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . getenv ( " IMAGES_OPENAI_API_BASE_URL " ,  OPENAI_API_BASE_URL ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
									
										
										
										
											2024-05-14 05:32:21 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								IMAGES_OPENAI_API_KEY  =  PersistentConfig (  
						 
					
						
							
								
									
										
										
										
											2024-05-10 13:36:10 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    " IMAGES_OPENAI_API_KEY " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " image_generation.openai.api_key " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . getenv ( " IMAGES_OPENAI_API_KEY " ,  OPENAI_API_KEY ) , 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-23 18:58:57 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
									
										
										
										
											2024-04-23 18:53:04 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-02-19 06:39:32 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								IMAGES_GEMINI_API_BASE_URL  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " IMAGES_GEMINI_API_BASE_URL " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " image_generation.gemini.api_base_url " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . getenv ( " IMAGES_GEMINI_API_BASE_URL " ,  GEMINI_API_BASE_URL ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								IMAGES_GEMINI_API_KEY  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " IMAGES_GEMINI_API_KEY " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " image_generation.gemini.api_key " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . getenv ( " IMAGES_GEMINI_API_KEY " ,  GEMINI_API_KEY ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-05-14 05:32:21 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								IMAGE_SIZE  =  PersistentConfig (  
						 
					
						
							
								
									
										
										
										
											2024-05-10 13:36:10 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    " IMAGE_SIZE " ,  " image_generation.size " ,  os . getenv ( " IMAGE_SIZE " ,  " 512x512 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
									
										
										
										
											2024-04-28 06:54:26 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-05-14 05:32:21 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								IMAGE_STEPS  =  PersistentConfig (  
						 
					
						
							
								
									
										
										
										
											2024-05-10 13:36:10 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    " IMAGE_STEPS " ,  " image_generation.steps " ,  int ( os . getenv ( " IMAGE_STEPS " ,  50 ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
									
										
										
										
											2024-04-28 06:54:26 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-05-14 05:32:21 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								IMAGE_GENERATION_MODEL  =  PersistentConfig (  
						 
					
						
							
								
									
										
										
										
											2024-05-10 13:36:10 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    " IMAGE_GENERATION_MODEL " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " image_generation.model " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . getenv ( " IMAGE_GENERATION_MODEL " ,  " " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
									
										
										
										
											2024-04-23 18:53:04 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-04-21 05:04:16 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								####################################  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# Audio  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								####################################  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-10-21 12:34:36 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# Transcription  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								WHISPER_MODEL  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " WHISPER_MODEL " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " audio.stt.whisper_model " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . getenv ( " WHISPER_MODEL " ,  " base " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								WHISPER_MODEL_DIR  =  os . getenv ( " WHISPER_MODEL_DIR " ,  f " { CACHE_DIR } /whisper/models " )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								WHISPER_MODEL_AUTO_UPDATE  =  (  
						 
					
						
							
								
									
										
										
										
											2024-12-18 05:51:29 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    not  OFFLINE_MODE 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    and  os . environ . get ( " WHISPER_MODEL_AUTO_UPDATE " ,  " " ) . lower ( )  ==  " true " 
							 
						 
					
						
							
								
									
										
										
										
											2024-10-21 12:34:36 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-02-02 21:58:59 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# Add Deepgram configuration  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								DEEPGRAM_API_KEY  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " DEEPGRAM_API_KEY " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " audio.stt.deepgram.api_key " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . getenv ( " DEEPGRAM_API_KEY " ,  " " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
									
										
										
										
											2024-10-21 12:34:36 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-06-08 11:18:48 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								AUDIO_STT_OPENAI_API_BASE_URL  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " AUDIO_STT_OPENAI_API_BASE_URL " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " audio.stt.openai.api_base_url " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . getenv ( " AUDIO_STT_OPENAI_API_BASE_URL " ,  OPENAI_API_BASE_URL ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								AUDIO_STT_OPENAI_API_KEY  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " AUDIO_STT_OPENAI_API_KEY " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " audio.stt.openai.api_key " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . getenv ( " AUDIO_STT_OPENAI_API_KEY " ,  OPENAI_API_KEY ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								AUDIO_STT_ENGINE  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " AUDIO_STT_ENGINE " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " audio.stt.engine " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . getenv ( " AUDIO_STT_ENGINE " ,  " " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								AUDIO_STT_MODEL  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " AUDIO_STT_MODEL " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " audio.stt.model " , 
							 
						 
					
						
							
								
									
										
										
										
											2024-10-21 12:34:36 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    os . getenv ( " AUDIO_STT_MODEL " ,  " " ) , 
							 
						 
					
						
							
								
									
										
										
										
											2024-06-08 11:18:48 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								AUDIO_TTS_OPENAI_API_BASE_URL  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " AUDIO_TTS_OPENAI_API_BASE_URL " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " audio.tts.openai.api_base_url " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . getenv ( " AUDIO_TTS_OPENAI_API_BASE_URL " ,  OPENAI_API_BASE_URL ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								AUDIO_TTS_OPENAI_API_KEY  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " AUDIO_TTS_OPENAI_API_KEY " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " audio.tts.openai.api_key " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . getenv ( " AUDIO_TTS_OPENAI_API_KEY " ,  OPENAI_API_KEY ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-07-19 16:35:05 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								AUDIO_TTS_API_KEY  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " AUDIO_TTS_API_KEY " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " audio.tts.api_key " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . getenv ( " AUDIO_TTS_API_KEY " ,  " " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
									
										
										
										
											2024-06-08 11:18:48 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								AUDIO_TTS_ENGINE  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " AUDIO_TTS_ENGINE " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " audio.tts.engine " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . getenv ( " AUDIO_TTS_ENGINE " ,  " " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								AUDIO_TTS_MODEL  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " AUDIO_TTS_MODEL " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " audio.tts.model " , 
							 
						 
					
						
							
								
									
										
										
										
											2024-08-17 06:42:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    os . getenv ( " AUDIO_TTS_MODEL " ,  " tts-1 " ) ,   # OpenAI default model 
							 
						 
					
						
							
								
									
										
										
										
											2024-06-08 11:18:48 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								AUDIO_TTS_VOICE  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " AUDIO_TTS_VOICE " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " audio.tts.voice " , 
							 
						 
					
						
							
								
									
										
										
										
											2024-08-17 06:42:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    os . getenv ( " AUDIO_TTS_VOICE " ,  " alloy " ) ,   # OpenAI default voice 
							 
						 
					
						
							
								
									
										
										
										
											2024-05-10 13:36:10 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
									
										
										
										
											2024-08-25 08:35:42 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								AUDIO_TTS_SPLIT_ON  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " AUDIO_TTS_SPLIT_ON " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " audio.tts.split_on " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . getenv ( " AUDIO_TTS_SPLIT_ON " ,  " punctuation " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
									
										
										
										
											2024-09-18 21:13:42 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								AUDIO_TTS_AZURE_SPEECH_REGION  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " AUDIO_TTS_AZURE_SPEECH_REGION " , 
							 
						 
					
						
							
								
									
										
										
										
											2024-09-19 08:42:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    " audio.tts.azure.speech_region " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . getenv ( " AUDIO_TTS_AZURE_SPEECH_REGION " ,  " eastus " ) , 
							 
						 
					
						
							
								
									
										
										
										
											2024-09-18 21:13:42 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								AUDIO_TTS_AZURE_SPEECH_OUTPUT_FORMAT  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " AUDIO_TTS_AZURE_SPEECH_OUTPUT_FORMAT " , 
							 
						 
					
						
							
								
									
										
										
										
											2024-09-19 08:42:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    " audio.tts.azure.speech_output_format " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . getenv ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " AUDIO_TTS_AZURE_SPEECH_OUTPUT_FORMAT " ,  " audio-24khz-160kbitrate-mono-mp3 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) , 
							 
						 
					
						
							
								
									
										
										
										
											2024-09-18 21:13:42 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
									
										
										
										
											2024-11-06 06:20:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								####################################  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# LDAP  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								####################################  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								ENABLE_LDAP  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " ENABLE_LDAP " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " ldap.enable " , 
							 
						 
					
						
							
								
									
										
										
										
											2024-11-06 11:58:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    os . environ . get ( " ENABLE_LDAP " ,  " false " ) . lower ( )  ==  " true " , 
							 
						 
					
						
							
								
									
										
										
										
											2024-11-06 06:20:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								LDAP_SERVER_LABEL  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " LDAP_SERVER_LABEL " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " ldap.server.label " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " LDAP_SERVER_LABEL " ,  " LDAP Server " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								LDAP_SERVER_HOST  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " LDAP_SERVER_HOST " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " ldap.server.host " , 
							 
						 
					
						
							
								
									
										
										
										
											2024-11-06 07:15:32 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    os . environ . get ( " LDAP_SERVER_HOST " ,  " localhost " ) , 
							 
						 
					
						
							
								
									
										
										
										
											2024-11-06 06:20:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								LDAP_SERVER_PORT  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " LDAP_SERVER_PORT " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " ldap.server.port " , 
							 
						 
					
						
							
								
									
										
										
										
											2024-11-06 07:15:32 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    int ( os . environ . get ( " LDAP_SERVER_PORT " ,  " 389 " ) ) , 
							 
						 
					
						
							
								
									
										
										
										
											2024-11-06 06:20:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-01-10 08:53:03 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								LDAP_ATTRIBUTE_FOR_MAIL  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " LDAP_ATTRIBUTE_FOR_MAIL " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " ldap.server.attribute_for_mail " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    os . environ . get ( " LDAP_ATTRIBUTE_FOR_MAIL " ,  " mail " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-11-06 06:20:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								LDAP_ATTRIBUTE_FOR_USERNAME  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " LDAP_ATTRIBUTE_FOR_USERNAME " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " ldap.server.attribute_for_username " , 
							 
						 
					
						
							
								
									
										
										
										
											2024-11-06 07:15:32 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    os . environ . get ( " LDAP_ATTRIBUTE_FOR_USERNAME " ,  " uid " ) , 
							 
						 
					
						
							
								
									
										
										
										
											2024-11-06 06:20:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								LDAP_APP_DN  =  PersistentConfig (  
						 
					
						
							
								
									
										
										
										
											2024-11-06 07:15:32 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    " LDAP_APP_DN " ,  " ldap.server.app_dn " ,  os . environ . get ( " LDAP_APP_DN " ,  " " ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-11-06 06:20:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								LDAP_APP_PASSWORD  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " LDAP_APP_PASSWORD " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " ldap.server.app_password " , 
							 
						 
					
						
							
								
									
										
										
										
											2024-11-06 07:15:32 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    os . environ . get ( " LDAP_APP_PASSWORD " ,  " " ) , 
							 
						 
					
						
							
								
									
										
										
										
											2024-11-06 06:20:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								LDAP_SEARCH_BASE  =  PersistentConfig (  
						 
					
						
							
								
									
										
										
										
											2024-11-06 07:15:32 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    " LDAP_SEARCH_BASE " ,  " ldap.server.users_dn " ,  os . environ . get ( " LDAP_SEARCH_BASE " ,  " " ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-11-06 06:20:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								LDAP_SEARCH_FILTERS  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " LDAP_SEARCH_FILTER " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " ldap.server.search_filter " , 
							 
						 
					
						
							
								
									
										
										
										
											2025-02-28 03:45:25 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    os . environ . get ( " LDAP_SEARCH_FILTER " ,  os . environ . get ( " LDAP_SEARCH_FILTERS " ,  " " ) ) , 
							 
						 
					
						
							
								
									
										
										
										
											2024-11-06 06:20:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								LDAP_USE_TLS  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " LDAP_USE_TLS " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " ldap.server.use_tls " , 
							 
						 
					
						
							
								
									
										
										
										
											2024-11-06 07:15:32 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    os . environ . get ( " LDAP_USE_TLS " ,  " True " ) . lower ( )  ==  " true " , 
							 
						 
					
						
							
								
									
										
										
										
											2024-11-06 06:20:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								LDAP_CA_CERT_FILE  =  PersistentConfig (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " LDAP_CA_CERT_FILE " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " ldap.server.ca_cert_file " , 
							 
						 
					
						
							
								
									
										
										
										
											2024-11-06 07:15:32 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    os . environ . get ( " LDAP_CA_CERT_FILE " ,  " " ) , 
							 
						 
					
						
							
								
									
										
										
										
											2024-11-06 06:20:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								LDAP_CIPHERS  =  PersistentConfig (  
						 
					
						
							
								
									
										
										
										
											2024-11-06 07:15:32 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    " LDAP_CIPHERS " ,  " ldap.server.ciphers " ,  os . environ . get ( " LDAP_CIPHERS " ,  " ALL " ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-11-06 06:20:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								)