
    Xj              
          d dl Z d dlmZ d dlmZ d dlmZmZ d dlm	Z	 d dl
mZ  ee          Z ee                                          j        d         Zedz  Zed	z  Zed
z  Z G d de	          Z ee                                          j        d         Z e eede j                            dd           z                      ZdS )    N)Path)Literal)Fieldfield_validator)BaseSettings)
get_logger   llm_servicebase_modelstrained_modelsc                       e Zd ZU dZed         ed<   dZeed<   dZeed<   dZ	eed	<   d
Z
eed<   dZeed<    ed           Zee         ed<    ed           Zee         ed<    ed           Zee         ed<    ed	          ededefd                        ZdZed         ed<   dZeed<   dZeed<   dZeed<   dZeed<   d Zed z  ed!<    ed          ededefd"                        Z ee          Zeed#<    ee          Zeed$<   d%Z eed&<   d'Z!eed(<   d)Z"eed*<   d+Z#eed,<   dZ$eed-<   d'Z%eed.<   d)Z&eed/<   d0Z'eed1<   d%Z(eed2<   dZ)eed3<   d Z*ed z  ed4<   d Z+ed z  ed5<   d6Z,eed7<   d8Z-eed9<   d:Z.eed;<   d%Z/eed<<   d=Z0eed><   d?Z1eed@<   d?Z2eedA<   dBZ3eedC<   dDZ4eedE<   dFZ5eedG<   dHZ6eedI<   dJZ7eedK<   dJZ8eedL<   dJZ9eedM<   dZ:eedN<   dOZ;eedP<   d%Z<eedQ<   dRZ=eedS<   dTZ>eedU<   dVZ?eedW<   dTZ@eedX<    edW          ededefdY                        ZAdZBeedZ<   dZCeed[<   d\ZDeed]<   d^ZEeed_<   d`ZFeGeda<   dbZHeedc<   dZIeedd<   deZJeedf<   dgZKeGedh<   diZLeedj<   dZMeedk<   dlZNeedm<   dnZOeedo<   dpZPeedq<   d ZQed z  edr<   d8ZReeds<   dtZSeedu<   dvZTeedw<   d ZUed z  edx<   d ZVed z  edy<   d ZWed z  edz<   d{ZXeed|<   dZYeed}<   d~ZZeed<   dZ[eed<   dZ\eed<   dZ]eed<   dZ^eed<    G d d          Z_d S )Settings
production)developmentstagingr   ENVIRONMENTzHelloTax AIPROJECT_NAMEz/api/v1
API_V1_STR)your-secret-key-change-this-in-production
SECRET_KEYHS256	ALGORITHMi  ACCESS_TOKEN_EXPIRE_MINUTESc                  
    g dS )N)zhttp://localhost:8500http://localhost:8888zhttp://ai.leshuiyun.comzhttp://training.leshuiyun.comzhttps://ai.leshuiyun.comzhttps://training.leshuiyun.com r       2/lsinfo/ai/hellotax_ai/base_platform/app/config.py<lambda>zSettings.<lambda>   s     !
 !
 !
 r   )default_factoryCORS_ORIGINSc                  
    g dS )N)GETPOSTPUTDELETEPATCHOPTIONSr   r   r   r   r   zSettings.<lambda>$   s     T T T r   CORS_METHODSc                      dgS )N*r   r   r   r   r   zSettings.<lambda>&   s    SE r   CORS_HEADERSvreturnc                 j   |j                             d          dk    r-|dv r)t                              d           t	          d          t          |          dk     r:t                              dt          |           d           t	          d	          t                              d
           |S )Nr   r   )r    z?SECRET_KEY validation failed: using default value in productionz;SECRET_KEY must be changed from default value in production    z%SECRET_KEY validation failed: length z < 32z)SECRET_KEY must be at least 32 characterszSECRET_KEY validation passed)datagetloggererror
ValueErrorleninfoclsr-   r8   s      r   validate_secret_keyzSettings.validate_secret_key(   s     9==''<77EEE^___ !^___q66B;;LLNQNNNOOOHIII2333r   TRATE_LIMIT_ENABLED<   RATE_LIMIT_PER_MINUTEi  RATE_LIMIT_PER_HOURz<postgresql+psycopg2://user:pass@localhost:5432/base_platformDATABASE_URLNDATA_CENTER_DATABASE_URLc                 <   |j                             d          dk    rcd|v s6d|                    d          d                             d          d         v r)t                              d	           t          d
          t                              d           |S )Nr   r   passpassword@r   :zDDATABASE_URL validation failed: using default password in productionz<DATABASE_URL must not contain default password in productionzDATABASE_URL validation passed)r2   r3   splitr4   r5   r6   r8   r9   s      r   validate_database_urlzSettings.validate_database_url<   s     9==''<77{{jAGGCLLO,A,A#,F,Fr,JJJcddd !_```4555r   BASE_MODELS_DIRTRAINED_MODELS_DIRFBASE_PLATFORM_UVICORN_RELOADcpuLOCAL_BGE_DEVICE   LOCAL_BGE_BATCH_SIZEi   LOCAL_BGE_MAX_LENGTHLOCAL_BGE_AUTO_UNLOADLOCAL_BGE_RERANKER_DEVICELOCAL_BGE_RERANKER_BATCH_SIZE   LOCAL_BGE_RERANKER_MAX_LENGTHLOCAL_BGE_RERANKER_AUTO_UNLOADLOCAL_CHAT_SINGLE_MODEL_CACHEOPENAI_API_KEYOPENAI_BASE_URLmilvusVECTOR_STORE_TYPE	localhostMILVUS_HOST19530MILVUS_PORTUSE_MILVUS_LITEzlocalhost:9000MINIO_ENDPOINT
minioadminMINIO_ACCESS_KEYMINIO_SECRET_KEYfalseMINIO_SECUREzknowledge-documentsMINIO_BUCKETzsmtp.gmail.com	SMTP_HOSTiK  	SMTP_PORTr0   	SMTP_USERSMTP_PASSWORD	SMTP_FROMSMTP_FROM_NAMEr   FRONTEND_URLDEV_MODEzbolt://localhost:7687	NEO4J_URIneo4j
NEO4J_USERrD   NEO4J_PASSWORDNEO4J_DATABASEc                     |j                             d          dk    r/|dk    r)t                              d           t	          d          t                              d           |S )Nr   r   rD   zFNEO4J_PASSWORD validation failed: using default password in productionz9NEO4J_PASSWORD must be changed from default in productionz NEO4J_PASSWORD validation passed)r2   r3   r4   r5   r6   r8   r9   s      r   validate_neo4j_passwordz Settings.validate_neo4j_passwordj   s`     9==''<77Jefff !\]]]6777r   ENABLE_KNOWLEDGE_GRAPHGRAPH_AUTO_BUILD   GRAPH_EXPAND_DEPTHzgpt-4GRAPH_ENTITY_EXTRACTION_MODELgffffff?GRAPH_MIN_ENTITY_CONFIDENCEi  GRAPH_CACHE_TTLENABLE_AGENTIC_RAG   AGENTIC_RAG_MAX_QUERIESg333333?AGENTIC_RAG_INTENT_TEMPERATUREi,  AGENTIC_RAG_INTENT_MAX_TOKENSENABLE_BGE_RERANKERzlocal-bge-rerankerBGE_RERANKER_MODEL   BGE_RERANKER_INITIAL_K   BGE_RERANKER_FINAL_K	REDIS_URL
REDIS_HOSTi  
REDIS_PORTr   REDIS_DBREDIS_PASSWORDENCRYPTION_KEYINTERNAL_API_TOKENz1/lsinfo/ai/hellotax_ai/scripts/llm/switch_mode.shSWITCH_MODE_SCRIPTTRAFFIC_MONITORING_ENABLED   TRAFFIC_STATS_RETENTION_HOURSztraffic:TRAFFIC_REDIS_KEY_PREFIXGZIP_COMPRESSION_ENABLEDGZIP_MINIMUM_SIZE
USE_ORJSONc                   Z    e Zd Zdej                            dd           ZdZdZdZ	dZ	dS )Settings.Config.env.APP_ENVr   TignoreN)
__name__
__module____qualname__osenvironr3   env_filecase_sensitivevalidate_assignmentextrar   r   r   Configr      s@        E2:>>)]CCEE"r   r   )`r   r   r   r   r   __annotations__r   strr   r   r   r   intr   r!   listr)   r,   r   classmethodr;   r<   boolr>   r?   r@   rA   rI   DEFAULT_BASE_MODELS_DIRrJ   DEFAULT_TRAINED_MODELS_DIRrK   rL   rN   rP   rQ   rR   rS   rT   rV   rW   rX   rY   rZ   r\   r^   r`   ra   rb   rd   re   rg   rh   ri   rj   rk   rl   rm   rn   ro   rp   rq   rs   rt   ru   rw   rx   ry   r{   r|   r}   floatr~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      s        COK?@OOO%L#%%%JAJAAAIs'****#e
 
	 	 	L$s) 	 	 	 $eTT  L$s)    $eMMBBBL$s)BBB_\""	C 	# 	 	 	 [ #"	 DPK?@OOO####!#3#######VL#VVV+/cDj///_^$$c C    [ %$ 3677OS777!c"<=====). $...!c!!! !#!!! $#$$$"&4&&&%*s***)*!3***),!3,,,+0"D000*.!4...!%NC$J%%%"&OS4Z&&&%s%%%"K"""K!OT!!!*NC***(c((((c(((L#-L#---%Is%%%IsIsM3Is'NC'''/L#///Hd,Is,,,J$NC$$$!NC!!!_%&& c    [ '& $(D'''!d!!!)0!3000),,,,OS#####$S$$$,/"E///),!3,,, $$$$2222"$C$$$ !#!!! IsTz   !J!!!JHc!%NC$J%%%!%NC$J%%%%)d
)))QQQQ'++++)+!3+++$.c...%)d)))!s!!!J         r   r   rz   r   r   r   )	_env_file)r   pathlibr   typingr   pydanticr   r   pydantic_settingsr   common_loggingr   r   r4   __file__resolveparentsPROJECT_ROOTLLM_SERVICE_DIRr   r   r   BASE_PLATFORM_ROOTr   r   r3   settingsr   r   r   <module>r      sV   				             + + + + + + + + * * * * * * % % % % % %	H		tH~~%%''/2.)M9 ,/?? D D D D D| D D DN T(^^++--5a8 8cc"47irz~~iYf?g?g7i7i"ijjkkkr   