| | from flask import Flask, request, jsonify |
| | from typing import Dict, Optional |
| | import uuid |
| | import os |
| | from app import initialize_llm, setup_database_connection, create_agent, gr |
| |
|
| | 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 |
| |
|
| | |
| | def mount_in_app(gradio_app): |
| | """Monta la API Flask en la aplicaci贸n Gradio.""" |
| | return gradio_app |
| |
|
| | if __name__ == '__main__': |
| | |
| | port = int(os.environ.get('PORT', 5000)) |
| | app.run(host='0.0.0.0', port=port) |
| | else: |
| | |
| | |
| | gradio_app = gr.mount_gradio_app( |
| | app, |
| | "/api", |
| | lambda: True |
| | ) |