| from flask import Flask, request, jsonify |
| from typing import Dict, Optional |
| import uuid |
| import os |
| from shared import initialize_llm, setup_database_connection, create_agent |
|
|
| app = Flask(__name__) |
|
|
| |
| message_store: Dict[str, str] = {} |
|
|
| @app.route('/user_message', methods=['POST']) |
| def handle_user_message(): |
| try: |
| data = request.get_json() |
| if not data or 'message' not in data: |
| return jsonify({'error': 'Se requiere el campo message'}), 400 |
| |
| user_message = data['message'] |
| |
| |
| message_id = str(uuid.uuid4()) |
| |
| |
| message_store[message_id] = user_message |
| |
| return jsonify({ |
| 'message_id': message_id, |
| 'status': 'success' |
| }) |
| |
| except Exception as e: |
| return jsonify({'error': str(e)}), 500 |
|
|
| @app.route('/ask', methods=['POST']) |
| def handle_ask(): |
| try: |
| data = request.get_json() |
| if not data or 'message_id' not in data: |
| return jsonify({'error': 'Se requiere el campo message_id'}), 400 |
| |
| message_id = data['message_id'] |
| |
| |
| if message_id not in message_store: |
| return jsonify({'error': 'ID de mensaje no encontrado'}), 404 |
| |
| user_message = message_store[message_id] |
| |
| |
| llm, llm_error = initialize_llm() |
| if llm_error: |
| return jsonify({'error': f'Error al inicializar LLM: {llm_error}'}), 500 |
| |
| db_connection, db_error = setup_database_connection() |
| if db_error: |
| return jsonify({'error': f'Error de conexión a la base de datos: {db_error}'}), 500 |
| |
| agent, agent_error = create_agent(llm, db_connection) |
| if agent_error: |
| return jsonify({'error': f'Error al crear el agente: {agent_error}'}), 500 |
| |
| |
| response = agent.invoke({"input": user_message}) |
| |
| |
| if hasattr(response, 'output') and response.output: |
| response_text = response.output |
| elif isinstance(response, str): |
| response_text = response |
| elif hasattr(response, 'get') and callable(response.get) and 'output' in response: |
| response_text = response['output'] |
| else: |
| response_text = str(response) |
| |
| |
| del message_store[message_id] |
| |
| return jsonify({ |
| 'response': response_text, |
| 'status': 'success' |
| }) |
| |
| except Exception as e: |
| return jsonify({'error': str(e)}), 500 |
|
|
| if __name__ == '__main__': |
| |
| port = int(os.environ.get('PORT', 5000)) |
| app.run(host='0.0.0.0', port=port) |