o
    Ղi                     @   s   d dl mZ d dlmZmZ d dlmZmZ d dlm	Z	 e	e
 jd Zed Zed Zed ZG d	d
 d
eZe	e
 jd Zeeed dZdS )    )BaseSettings)field_validatorField)OptionalLiteral)Path   llm_servicebase_modelstrained_modelsc                   @   st  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d dZee ed< edd dZee ed< edd dZee ed< ed	ededefd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e ed#< ed!ededefd$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d0< d*Z&eed1< d,Z'eed2< d3Z(eed4< d(Z)eed5< dZ*eed6< d"Z+ee ed7< d"Z,ee ed8< d9Z-eed:< d;Z.eed<< d=Z/eed>< d(Z0eed?< d@Z1eedA< dBZ2eedC< dBZ3eedD< dEZ4eedF< dGZ5eedH< dIZ6eedJ< dKZ7eedL< dMZ8eedN< dMZ9eedO< dMZ:eedP< dZ;eedQ< dRZ<eedS< d(Z=eedT< dUZ>eedV< dWZ?eedX< dYZ@eedZ< dWZAeed[< edZededefd\d]ZBdZCeed^< dZDeed_< d`ZEeeda< dbZFeedc< ddZGeHede< dfZIeedg< dZJeedh< diZKeedj< dkZLeHedl< dmZMeedn< dZNeedo< dpZOeedq< drZPeeds< dtZQeedu< d"ZRee edv< d;ZSeedw< dxZTeedy< dzZUeed{< d"ZVee ed|< d"ZWee ed}< d"ZXee ed~< dZYeed< dZZeed< dZ[eed< dZ\eed< dZ]eed< dZ^eed< dZ_eed< G dd 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                   C      g dS )N)http://localhost:8888zhttp://14.103.72.205:8888zhttp://ai.leshuiyun.comzhttp://training.leshuiyun.comzhttps://ai.leshuiyun.comzhttps://training.leshuiyun.com r   r   r   2/lsinfo/ai/hellotax_ai/base_platform/app/config.py<lambda>       zSettings.<lambda>)default_factoryCORS_ORIGINSc                   C   r   )N)GETPOSTPUTDELETEPATCHOPTIONSr   r   r   r   r   r      r   CORS_METHODSc                   C   s   dgS )N*r   r   r   r   r   r      s    CORS_HEADERSvreturnc                 C   s8   |j ddkr|dv rtdt|dk rtd|S )Nr   r   )r    z;SECRET_KEY must be changed from default value in production    z)SECRET_KEY must be at least 32 characters)dataget
ValueErrorlenclsr)   infor   r   r   validate_secret_key   s   zSettings.validate_secret_keyT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                 C   s@   |j ddkrd|v sd|dd dd v rtd	|S )
Nr   r   passpassword@r   :z<DATABASE_URL must not contain default password in production)r-   r.   splitr/   r1   r   r   r   validate_database_url3   s   $zSettings.validate_database_url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_PORTr+   	SMTP_USERSMTP_PASSWORD	SMTP_FROMSMTP_FROM_NAMEr   FRONTEND_URLDEV_MODEzbolt://localhost:7687	NEO4J_URIneo4j
NEO4J_USERr<   NEO4J_PASSWORDNEO4J_DATABASEc                 C   s$   |j ddkr|dkrtd|S )Nr   r   r<   z9NEO4J_PASSWORD must be changed from default in production)r-   r.   r/   r1   r   r   r   validate_neo4j_password   s   z Settings.validate_neo4j_password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_TOKENz9/lsinfo/ai/hellotax_ai/llm_service/scripts/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                   @   s    e Zd ZdZdZdZdZdZdS )zSettings.Config.envTignoreN)__name__
__module____qualname__env_filecase_sensitivevalidate_assignmentextrar   r   r   r   Config   s    r   )ar   r   r   r   r   __annotations__r   strr   r   r   r   intr   r   listr&   r(   r   classmethodr4   r5   boolr7   r8   r9   r:   r   rA   DEFAULT_BASE_MODELS_DIRrB   DEFAULT_TRAINED_MODELS_DIRrC   rD   rF   rH   rI   rJ   rK   rL   rN   rO   rP   rQ   rR   rT   rV   rX   rY   rZ   r\   r]   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rk   rl   rm   rn   ro   rp   rr   rs   rt   floatru   rv   rx   ry   rz   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   
 
r   rq   r   )	_env_fileN)pydantic_settingsr   pydanticr   r   typingr   r   pathlibr   __file__resolveparentsPROJECT_ROOTLLM_SERVICE_DIRr   r   r   BASE_PLATFORM_ROOTr   settingsr   r   r   r   <module>   s     3