Team Ai
Apppublic

Yelaman/Text2SQL

sourceHugging Facemitupdated 3y agoView on Hugging Face
0likes
app.py60 linesDownload Raw Back to root
1import os2from langchain.agents import create_sql_agent3from langchain.agents.agent_toolkits import SQLDatabaseToolkit4from langchain.sql_database import SQLDatabase5from langchain.llms.openai import OpenAI6from langchain.agents import AgentExecutor7from langchain.agents.agent_types import AgentType8from langchain.chat_models import ChatOpenAI9import clickhouse_sqlalchemy10import gradio as gr11from sqlalchemy import create_engine, inspect12import openai13from langchain import OpenAI, SQLDatabase, SQLDatabaseChain14from clickhouse_driver import Client15import clickhouse_driver16import datetime17 18os.environ['OPENAI_API_KEY'] = "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"19 20destination_user = "default"21destination_password = "oMdI2ED_lhe3V"22destination_port = 844323destination_host = "c0a85c19p6.us-central1.gcp.clickhouse.cloud"24destination_database = "Text2SQLdummydata"25 26destination_connection_url = f"clickhouse+http://{destination_user}:{destination_password}@{destination_host}:{destination_port}/{destination_database}?protocol=https"27 28destination_engine = create_engine(destination_connection_url)29 30db = SQLDatabase(engine=destination_engine)31 32llm = OpenAI(temperature=0)33toolkit = SQLDatabaseToolkit(db=db, llm=OpenAI(temperature=0))34 35 36agent_executor = create_sql_agent(37    llm=ChatOpenAI(temperature=0, model="gpt-3.5-turbo-0613"),38    toolkit=toolkit,39    verbose=True,40    agent_type=AgentType.OPENAI_FUNCTIONS41)42 43def text_to_sql(query):44    instruction = " Proceed until you answer the question or say that you don't know, don't ask my permission, explain your thought process. Please think carefully about your answer and analyse it a couple of times before responding. Also - Google Ads means ads on Google platform and Twitter Ads means ads on Twitter platform, etc."45    result = agent_executor.run(query + instruction)46    return result47 48title = "Text 2 SQL"49description = "Enter your question and click Run to execute the query."50 51input_text = gr.inputs.Textbox(label="Enter your question")52output_text = gr.outputs.Textbox()53 54def run_query(query):55    result = text_to_sql(query)56    return result57 58gr.Interface(fn=run_query, inputs=input_text, outputs=output_text, title=title, description=description).launch()59destination_engine.dispose()60