File size: 3,915 Bytes
85c0c49
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97

# from langchain import OpenAI, SQLDatabase, SQLDatabaseChain
from langchain.agents import create_sql_agent
from langchain.agents.agent_toolkits import SQLDatabaseToolkit
from langchain.sql_database import SQLDatabase
from langchain.llms.openai import OpenAI
# from langchain.agents import AgentExecutor
import openai
import json
import gradio as gr
import boto3 


from langchain import OpenAI, AgentExecutor, Tool, load_tools, initialize_agent
from langchain.agents import AgentType
from langchain.agents.tools import SQLAgent
from langchain.memory import ReadOnlySharedMemory


postgres_connection_str = os.environ['POSTGRES_CONNECTION_STR']
access_key = os.environ['AWS_ACCESS_KEY_ID']
secret_key = os.environ['AWS_SECRET_ACCESS_KEY']
openai_api_key = os.environ['OPENAI_API_KEY'] 
region= 'us-east-1'

db = SQLDatabase.from_uri(postgres_connection_str,schema='langchain_testing')
s3_client = boto3.client('s3', aws_access_key_id=access_key, aws_secret_access_key=secret_key,region_name=region)
llm = OpenAI(temperature=0, verbose=True, openai_api_key=openai_api_key)

# toolkit = SQLDatabaseToolkit(db=db, llm=llm)
# agent_executor = create_sql_agent(
#     llm=OpenAI(temperature=0),
#     toolkit=toolkit,
#     verbose=True
# )

# def generate_response(question):
#     prompt_template = """
#      Keep in mind that any site, building, or property related question should be routed to the real estate portal. 
#      Any Local or city or city-sector incentives programs are asking about the local incentives program table. 
#      Any State incentives programs are asking about the state incentives program table.
#      When the user asks about a state incentive, don't query the local_incentives_catalog table.
#      When the user asks about a local/city incentive, don't query the local_incentives_catalog table.
#      If you can't find the answer, make sure to look up the program field in the local and state incentives catalogs.
#      If your final answer is "I don't know", then respond with "Please adjust your question and try asking again."
     
#      """
#     chain_response = agent_executor.run(question + prompt_template)
#     # bucket_name = 'your-bucket-name'
#     # file_name = 'flagged_text.txt'
#     # s3_client.put_object(Body=input_text, Bucket=bucket_name, Key=file_name)
    
#     return chain_response

# iface = gr.Interface(
#     fn=generate_response,
#     inputs=gr.inputs.Textbox(label='Enter your question:', default='What is the Neighborhood Credit Fund in New York City?'),
#     outputs=gr.outputs.Textbox(label="EDai Analyst's Response:")
#     )

# iface.launch(share=True)

# Load the language model and tools
llm = OpenAI()
tools = load_tools(["llama_index"], llm=llm)

# Define the agent
agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION)

# Define the Gradio interface
def chatbot(user_name):
    # Define the initial message
    message = f"Hi {user_name}, how may I help you?"
    # Define the memory
    memory = ReadOnlySharedMemory()
    # Define the SQL agent
    sql_agent = SQLAgent(database="my_database.db", table="my_table")
    # Loop until the user ends the conversation
    
    while True:
        # Get the user's input
        user_input = gr.text_area(message, default_value="")
        
        # If the user ends the conversation, break the loop
        if user_input.lower() in ["bye", "goodbye", "exit"]:
            break
        # Get the answer from the SQL agent
        answer = sql_agent.run(user_input, memory=memory)
        # Ask if the user needs anything else
        message = f"{answer}\n\nDo you need anything else?"
    # Return the final message
    return "Goodbye!"

# Define the Gradio interface
iface = gr.Interface(fn=chatbot, inputs=["text"], outputs="text", title="LangChain Chatbot", description="A chatbot powered by LangChain and Gradio.")
# Launch the interface
iface.launch()