CoolFace
Apppublic

milanchndr/Supply-Chain-AI-Agent

sourceHugging Faceapache-2.0updated 1y agoView on Hugging Face
0likes
app.cpython-310.pyc48 linesDownload Raw Back to __pycache__
1o

2�$6h;!�@s�ddlmZmZmZmZddlmZmZddlm	Z	m3Z4mZmZm
Z
ddlZddlZddlmZddlmZmZmZddlmZdd	lmZdd5lmZee�Zeeddd
iid�eejd<e	e�Zdada da!da"dd�Z#e#�d*dd�Z$e�%d�dd��Z&e�%d�dd��Z'ej%ddgd�dd��Z(ej%ddgd�e6�d d!���Z)ed"kr�e�*d#�ej+�,d$�d%kr�	ej-d&d'd(d&d)�dSdS)+�)�Flask�request�jsonify�json)�
create_engine�text)�7JWTManager�jwt_required�get_jwt_identity�create_access_token�get_jwtN)�CORS�)�DATABASE_URL�ROLES_PERMISSIONS�JWT_SECRET_KEY)�setup_qa_chain)�logger)�"create_supply_chain_agent_executorz/*Zoriginszhttp://localhost:8080)Z	resourcesrc8Csxt�d�zt�d�t�atjjjat�d�Wnty5}ztj	d|��dd�WYd}~nd}~wwz/t�dt9�d�d	���tt10d11dd�a
t
���
}t�d
�Wd�n1s_wYWnty�}ztj	d|��dd�WYd}~nd}~wwtr�tr�t
r�ztttt
d�at�d�WdSty�}ztj	d|��dd�WYd}~dSd}~wwt�	d�dS)Nz!Initializing Flask application...z+Setting up QA chain (for DocumentQATool)...z9QA chain and Bedrock LLM instance for agent tools set up.z(Critical Error setting up QA chain/LLM: T��exc_infozSetting up database engine: �@�������12)Z	pool_sizeZmax_overflowz+Database connection to Supabase successful.z+Critical Error setting up database engine: )Zllm_instanceZqa_chain_instanceZdb_engine_instancez(Agent Executor initialized successfully.z(Critical Error creating Agent Executor: z9Cannot create Agent Executor due to missing dependencies.)r�infor�qa_chainZcombine_documents_chainZ	llm_chainZllm�bedrock_llm_instance�	Exception�errorr�splitr�	db_engine�connectr�agent_executor)�e�13connection�r&� D:\Codes\AI Agent\backend\app.py�initialize_appsD141516 ��17�� ���"��r(cCs�z,t���}|�td�||||||d��|��Wd�WdS1s%wYWdStyG}zt�d|���WYd}~dSd}~ww)Nz�18                    INSERT INTO audit_logs (user_id, role, region, query, success, error_message, timestamp)19                    VALUES (:user_id, :role, :region, :query, :success, :error_message, CURRENT_TIMESTAMP)20                )�user_id�role�region�query�success�
error_messagezFailed to log audit: )r!r"�executerZcommitrrr)r)r*r+r,r-r.r%r$r&r&r'�	log_audit?s$21��22&���r0�/cCsdS)Nz<AI Supply Chain Agent Backend (Multi-Tool Agent) is running.r&r&r&r&r'�homeWsr2z/healthcCs^tdutdutdutdud�}tdur%d|d<t�d|���t|�dfSd|d<t|�dfS)N)Zagent_executor_initializedZqa_chain_for_tool_initializedZdb_engine_for_tool_initializedZllm_for_agent_initializedZAGENT_NOT_INITIALIZED�statusz-Health check: Agent not initialized. Status: ��ZOK��)r#rr!rrZwarningr)r3r&r&r'�health_check[s�r6z/loginZPOST)�methodsc
23Cs|tj}|�d�}|�d�}|r|stddi�dfSz}t���n}|�td�d|i���}|s=tddi�dfWd�WS|\}}}}}	t	�24|�d	�|�d	��s`tddi�dfWd�WSd25||	d�d�}26tt
|�|27d
�}t�d|�d|�d��td|i�dfWd�WS1s�wYWdSty�}ztjd|�d|��dd�tddi�dfWYd}~Sd}~ww)N�username�passwordrz"Username and password are required�z[SELECT user_id, username, password_hash, role, region FROM users WHERE username = :usernamezInvalid username or passwordi�zutf-8Z
authenticated)r*r+)r*�app_metadata)Zidentity�additional_claimszUser z (user_id: z+) logged in. JWT created with app_metadata.�access_tokenr5z Error during login for username �: Trz"Login failed due to a server error��)rr�getrr!r"r/rZfetchone�bcryptZcheckpw�encoder�strrrrr)
�datar8r9r%�resultZuser_id_from_db�_Z
password_hashZrole_from_dbZregion_from_dbr<r=r$r&r&r'�loginisJ282930���	���	�(���rGz/querycCs�tst�d�tddi�dfSt�}t�}|�di��d�}|�di��d�}|r-|tvrDd|�d	�}t|||d31d|�td|i�dfSt	j32}|�d
d���}|sdd}t||||d|�td|i�dfSt�d|�d|�d|�d|���z#t�
|||t33�|�d��}|�dd�}t||||d�t|dd��WSty�}	zJdt|	���}dt|	�vs�dt|	���vr�dt|	���}d}34nd}35t||||d|�tjd |�d!|�d"t|	���dd#�td|i�|36fWYd}	~	Sd}	~	ww)$Nz5Agent executor not initialized. Cannot process query.rz8Agent services not fully initialized. Please check logs.r4r;r*r+zInvalid application role: z# or role not configured in backend.zN/AFi��question�zNo question providedr:zReceived agent query from user z (app_role: z, app_region: z): )�inputZ	user_roleZuser_regionZjwt_claims_for_db�outputz)Agent could not determine a final answer.TZagent_multi_tool)Zanswer�typezError processing query: zUnauthorized accesszpermission deniedzCYou are not authorized to perform this action or access this data. r?zError processing agent query 'z' for user r>r)r#rrrr37rr@rr0rr�striprZinvoke�dumpsrrC�lower)Zuser_identity_subZjwt_payloadZapp_roleZ38app_regionZ	error_msgrDrHZresponseZfinal_answerr$Zstatus_coder&r&r'�handle_agent_query�sN39"�$��rP�__main__z9Starting Flask development server for Multi-Tool Agent...ZWERKZEUG_RUN_MAIN�trueTz0.0.0.0i�)�debugZhostZportZuse_reloader)N).ZflaskrrrrZ40sqlalchemyrrZflask_jwt_extendedrr	r41rr�osrAZ42flask_corsr
ZconfigrrrZutils.langchain_setuprZ
logger_configrZutils.agent_handlerr�__name__ZappZjwtrr!rr#r(r0Zrouter2r6rGrPr�environr@�runr&r&r&r'�<module>sH43 444546
47,448�