Convert natural language query to SQL
()
| 10 | |
| 11 | @bp.route('/text_to_sql', methods=['POST']) |
| 12 | def text_to_sql(): |
| 13 | """ |
| 14 | Convert natural language query to SQL |
| 15 | """ |
| 16 | request_body = request.get_json() |
| 17 | natural_language_query = request_body.get("natural_language_query") |
| 18 | table_names = request_body.get("table_names") |
| 19 | |
| 20 | if not natural_language_query: |
| 21 | error_msg = "`natural_language_query` is missing from request body" |
| 22 | return make_response(jsonify({"error": error_msg}), 400) |
| 23 | |
| 24 | try: |
| 25 | if not table_names: |
| 26 | if PINECONE_ENV and PINECONE_KEY: |
| 27 | table_names = get_relevant_tables_from_pinecone(natural_language_query) |
| 28 | else: |
| 29 | table_names = get_relevant_tables_from_lm(natural_language_query) |
| 30 | result, sql_query = text_to_sql_with_retry(natural_language_query, table_names) |
| 31 | except Exception as e: |
| 32 | error_msg = f"Error processing request: {str(e)}" |
| 33 | return make_response(jsonify({"error": error_msg}), 500) |
| 34 | |
| 35 | return make_response(jsonify({"result": result, "sql_query": sql_query}), 200) |
nothing calls this directly
no test coverage detected