Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| import openai | |
| import os | |
| # OpenRouter API Key | |
| OPENROUTER_API_KEY = "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" | |
| OPENROUTER_MODEL = "sophosympatheia/rogue-rose-103b-v0.2:free" | |
| # Initialize OpenAI client with OpenRouter base URL | |
| print(f"Using API Key: {OPENROUTER_API_KEY}") | |
| openai_client = openai.OpenAI( | |
| api_key=OPENROUTER_API_KEY, | |
| base_url="https://openrouter.ai/api/v1" # OpenRouter API endpoint | |
| ) | |
| # Few-shot examples for text-to-SQL conversion | |
| few_shot_examples = [ | |
| { | |
| "input": "Show all customers from the USA.", | |
| "output": "SELECT * FROM customers WHERE country = 'USA';" | |
| }, | |
| { | |
| "input": "Find the total sales for each product category.", | |
| "output": "SELECT product_category, SUM(sales) AS total_sales FROM sales GROUP BY product_category;" | |
| }, | |
| { | |
| "input": "List all orders placed in 2023.", | |
| "output": "SELECT * FROM orders WHERE YEAR(order_date) = 2023;" | |
| } | |
| ] | |
| def text_to_sql(query): | |
| # Construct the prompt with few-shot examples | |
| prompt = "Convert the following natural language queries to SQL:\n\n" | |
| for example in few_shot_examples: | |
| prompt += f"Input: {example['input']}\nOutput: {example['output']}\n\n" | |
| prompt += f"Input: {query}\nOutput:" | |
| print("Sending query to OpenRouter API...") | |
| try: | |
| response = openai_client.chat.completions.create( | |
| model=OPENROUTER_MODEL, | |
| messages=[ | |
| { | |
| "role": "system", | |
| "content": "You are a helpful assistant. Your task is to convert natural language queries into SQL queries. " | |
| "Use the provided examples as a guide. If the query cannot be converted into SQL, say 'I cannot convert this query into SQL.'" | |
| }, | |
| { | |
| "role": "user", | |
| "content": prompt | |
| } | |
| ] | |
| ) | |
| print("Received response from OpenRouter API.") | |
| return response.choices[0].message.content | |
| except Exception as e: | |
| print(f"Error calling OpenRouter API: {e}") | |
| return f"Error: {e}" | |
| # Gradio UI | |
| def gradio_ui(): | |
| with gr.Blocks() as demo: | |
| gr.Markdown("## Text-to-SQL Converter. Enter a natural language query and get the corresponding SQL query!") | |
| query_input = gr.Textbox(label="Enter your query") | |
| submit_btn = gr.Button("Convert to SQL") | |
| output = gr.Textbox(label="SQL Query") | |
| submit_btn.click(text_to_sql, inputs=[query_input], outputs=[output]) | |
| return demo | |
| demo = gradio_ui() | |
| print("Launching Gradio UI...") | |
| demo.launch() |