File size: 4,906 Bytes
55800d6
82c8697
 
 
 
3d524a7
82c8697
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3d524a7
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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
from fastapi import FastAPI
import sqlite3
from hashlib import sha256
import streamlit as st
from openai import OpenAI
app  =FastAPI()
client = OpenAI()
# Step 1: Initialize the SQLite database
def init_db():
    conn = sqlite3.connect('user_data.db')  # Connect to SQLite database
    c = conn.cursor()
    
    # Create the users table if it doesn't exist
    c.execute('''CREATE TABLE IF NOT EXISTS users (
                 id INTEGER PRIMARY KEY AUTOINCREMENT, 
                 username TEXT NOT NULL, 
                 password TEXT NOT NULL)''')
    
    # Create a table for storing user inputs
    c.execute('''CREATE TABLE IF NOT EXISTS user_inputs (
                 id INTEGER PRIMARY KEY AUTOINCREMENT, 
                 username TEXT NOT NULL, 
                 input1 TEXT NOT NULL, 
                 input2 TEXT NOT NULL, 
                 input3 TEXT NOT NULL)''')
    
    conn.commit()
    return conn, c

# Step 2: Hash passwords for secure storage
def hash_password(password):
    return sha256(password.encode()).hexdigest()

# Step 3: Verify if the username and password match any record in the database
def verify_login(username, password, c):
    hashed_pw = hash_password(password)
    c.execute('SELECT * FROM users WHERE username=? AND password=?', (username, hashed_pw))
    return c.fetchone()

# Step 4: Create a new user (for initial setup)
def create_user(username, password, conn, c):
    hashed_pw = hash_password(password)
    c.execute('INSERT INTO users (username, password) VALUES (?, ?)', (username, hashed_pw))
    conn.commit()

# Step 5: Insert the user inputs into the database
def insert_user_inputs(username, input1, input2, input3, conn, c):
    c.execute('INSERT INTO user_inputs (username, input1, input2, input3) VALUES (?, ?, ?, ?)', 
              (username, input1, input2, input3))
    conn.commit()
def generate(input1,input2,input3):
    prompt = f"Using these three inputs: '{input1}' and '{input2}' and {input3}, first input we received from customner 2nd input we have to send also consider input 3 for morte accurate message write a mail which is more empathy based, formalized for business use, should address the issue well, positive tonality and dont make any assumption just write the mail"
    completion = client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[
        {"role": "system", "content": "You are a helpful assistant who writes mail formally, and grammatically corrected."},
        {
            "role": "user",
            "content": prompt
        }
            ]
                )
    return completion.choices[0].message.content   
# Initialize the database and cursor
conn, c = init_db()

# Create a session state to store login status
if 'logged_in' not in st.session_state:
    st.session_state['logged_in'] = False
if 'username' not in st.session_state:
    st.session_state['username'] = None

# Streamlit UI: Login Page
if not st.session_state['logged_in']:
    st.title("User Login")

    # Username and password inputs
    username = st.text_input("Username")
    password = st.text_input("Password", type="password")

    # Login button
    if st.button("Login"):
        if username and password:
            user = verify_login(username, password, c)
            if user:
                st.session_state['logged_in'] = True
                st.session_state['username'] = username
                st.success(f"Welcome, {username}! You have successfully logged in.")
            else:
                st.error("Invalid username or password. Please try again.")
        else:
            st.error("Please enter both username and password.")
else:
    # When the user is logged in, display the new section
    st.title(f"Welcome {st.session_state['username']}! Writing AI at your assitance")
    
    # Input fields
    input1 = st.text_input("Mail received from Customer")
    input2 = st.text_input("Mail EARC send to customer")
    input3 = st.text_input("Any input")
    
    # Submit inputs button
    if st.button("Submit Inputs"):
        if input1 and input2 and input3:
            insert_user_inputs(st.session_state['username'], input1, input2, input3, conn, c)
            output = generate(input1, input2, input3)
            
            st.success(output)
        else:
            st.error("Please fill in all the fields.")

# (Optional) Add a section for creating new users, useful for testing
st.subheader("Create a new account (for testing)")
new_username = st.text_input("New Username")
new_password = st.text_input("New Password", type="password")

if st.button("Create Account"):
    if new_username and new_password:
        create_user(new_username, new_password, conn, c)
        st.success(f"Account created successfully for {new_username}!")
    else:
        st.error("Please enter both a username and a password.")

# Close the database connection when done
conn.close()