Class: HumanSQL::QueryBuilder
- Inherits:
-
Object
- Object
- HumanSQL::QueryBuilder
- Defined in:
- lib/human_sql.rb
Constant Summary collapse
- OPENAI_API_URL =
'https://api.openai.com/v1/chat/completions'
Class Method Summary collapse
Instance Method Summary collapse
- #generate_query ⇒ Object
- #get_results ⇒ Object
-
#initialize(user_input) ⇒ QueryBuilder
constructor
A new instance of QueryBuilder.
Constructor Details
#initialize(user_input) ⇒ QueryBuilder
Returns a new instance of QueryBuilder.
11 12 13 14 |
# File 'lib/human_sql.rb', line 11 def initialize(user_input) @user_input = user_input @schema_content = File.read(Rails.root.join('db', 'schema.rb')) end |
Class Method Details
.run(user_input) ⇒ Object
16 17 18 |
# File 'lib/human_sql.rb', line 16 def self.run(user_input) new(user_input).get_results end |
Instance Method Details
#generate_query ⇒ Object
20 21 22 23 24 25 26 27 |
# File 'lib/human_sql.rb', line 20 def generate_query prompt = build_query_prompt(@user_input, @schema_content) generated_query_response = call_openai_service(prompt)&.strip extracted_query = extract_active_record_query(generated_query_response) extracted_query end |
#get_results ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/human_sql.rb', line 29 def get_results generated_query = generate_query raise "Could not generate a valid query." if generated_query.blank? results = execute_query(generated_query) raise "No results found." if results.blank? formatted_results = format_results_for_openai(results) natural_language_response = generate_natural_language_response(formatted_results, @user_input) natural_language_response rescue StandardError => e process_error_in_natural_language(e.) end |