rstallman commited on
Commit
8f56773
0 Parent(s):

Duplicate from rstallman/legisbot

Browse files
Files changed (5) hide show
  1. .gitattributes +34 -0
  2. README.md +13 -0
  3. app.py +108 -0
  4. credentials.json +13 -0
  5. requirements.txt +5 -0
.gitattributes ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ *.7z filter=lfs diff=lfs merge=lfs -text
2
+ *.arrow filter=lfs diff=lfs merge=lfs -text
3
+ *.bin filter=lfs diff=lfs merge=lfs -text
4
+ *.bz2 filter=lfs diff=lfs merge=lfs -text
5
+ *.ckpt filter=lfs diff=lfs merge=lfs -text
6
+ *.ftz filter=lfs diff=lfs merge=lfs -text
7
+ *.gz filter=lfs diff=lfs merge=lfs -text
8
+ *.h5 filter=lfs diff=lfs merge=lfs -text
9
+ *.joblib filter=lfs diff=lfs merge=lfs -text
10
+ *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
+ *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
+ *.model filter=lfs diff=lfs merge=lfs -text
13
+ *.msgpack filter=lfs diff=lfs merge=lfs -text
14
+ *.npy filter=lfs diff=lfs merge=lfs -text
15
+ *.npz filter=lfs diff=lfs merge=lfs -text
16
+ *.onnx filter=lfs diff=lfs merge=lfs -text
17
+ *.ot filter=lfs diff=lfs merge=lfs -text
18
+ *.parquet filter=lfs diff=lfs merge=lfs -text
19
+ *.pb filter=lfs diff=lfs merge=lfs -text
20
+ *.pickle filter=lfs diff=lfs merge=lfs -text
21
+ *.pkl filter=lfs diff=lfs merge=lfs -text
22
+ *.pt filter=lfs diff=lfs merge=lfs -text
23
+ *.pth filter=lfs diff=lfs merge=lfs -text
24
+ *.rar filter=lfs diff=lfs merge=lfs -text
25
+ *.safetensors filter=lfs diff=lfs merge=lfs -text
26
+ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
+ *.tar.* filter=lfs diff=lfs merge=lfs -text
28
+ *.tflite filter=lfs diff=lfs merge=lfs -text
29
+ *.tgz filter=lfs diff=lfs merge=lfs -text
30
+ *.wasm filter=lfs diff=lfs merge=lfs -text
31
+ *.xz filter=lfs diff=lfs merge=lfs -text
32
+ *.zip filter=lfs diff=lfs merge=lfs -text
33
+ *.zst filter=lfs diff=lfs merge=lfs -text
34
+ *tfevents* filter=lfs diff=lfs merge=lfs -text
README.md ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ title: Legisbot
3
+ emoji: 🇺🇸
4
+ colorFrom: Red
5
+ colorTo: Blue
6
+ sdk: gradio
7
+ sdk_version: 3.29.0
8
+ app_file: app.py
9
+ pinned: false
10
+ duplicated_from: rstallman/legisbot
11
+ ---
12
+
13
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
app.py ADDED
@@ -0,0 +1,108 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import openai
2
+ import gradio
3
+ import pandas as pd
4
+ from datetime import datetime
5
+ import gspread
6
+ from google.oauth2.service_account import Credentials
7
+ import requests
8
+ import json
9
+
10
+ openai.api_key = "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"
11
+
12
+ records = []
13
+ credentials = Credentials.from_service_account_file("credentials.json", scopes=["https://www.googleapis.com/auth/spreadsheets"])
14
+ client = gspread.authorize(credentials)
15
+ sheet = client.open_by_url("https://docs.google.com/spreadsheets/d/1FHxtlLoxuvMdE5l_NUrof7ECYkO3_EHDbbcz5Si8gqE/edit?usp=sharing").sheet1
16
+
17
+ def get_user_ip():
18
+ try:
19
+ response = requests.get("https://api.ipify.org?format=json")
20
+ data = json.loads(response.text)
21
+ return data["ip"]
22
+ except:
23
+ return None
24
+
25
+ def CustomChatGPT(user_input, user_name, user_email, user_agent):
26
+ messages = []
27
+
28
+ if not user_name:
29
+ return "Please enter your name."
30
+
31
+ user_message = f"{user_input} [USER_IDENTITY: {user_name}]"
32
+ messages.append({"role": "user", "content": user_message})
33
+ messages.append({"role": "system", "content": "In your role as a seasoned attorney within the United States, you are currently engaged in a privileged consultation with your client. The client places unwavering trust in your expertise and guidance. Your responses should manifest a comprehensive understanding of US legal rules, case law, and regulations across all 50 states. Ensure you cite specific Acts of US local and federal regulations, providing clear references to the exact sections and articles. If secondary legislation is pertinent, competently correlate it to the client's state jurisdiction. If you encounter uncertainties regarding the jurisdiction or any other nuances, it is of utmost importance to seek clarification from the client. Your responses should consistently utilize accurate legal terminology and maintain a focus on relevant legal rules, case law, and secondary legislation. The client reposes complete faith in your legal acumen and knowledge; honor this trust by providing in-depth, precise, and up-to-date legal advice. Under no circumstances should it be implied or stated outright that this counsel is being provided by an AI. Maintaining the human element in your legal consultations is vital, as it builds trust and ensures a personalized experience for the client."})
34
+ response = openai.ChatCompletion.create(
35
+ model="gpt-3.5-turbo",
36
+ messages=messages
37
+ )
38
+
39
+ ChatGPT_reply = response["choices"][0]["message"]["content"]
40
+ messages.append({"role": "assistant", "content": ChatGPT_reply})
41
+
42
+ # Record keeping
43
+ timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
44
+ ip_address = get_user_ip()
45
+ device_type = get_device_type(user_agent)
46
+ session_duration = "" # Calculate session duration
47
+ features_used = "" # Track features used
48
+ num_queries = "" # Count number of queries
49
+ num_documents_created = "" # Count number of documents created
50
+ clickstream_data = "" # Track clickstream data
51
+ interaction_patterns = "" # Track user interface interaction patterns
52
+ success_of_advice = "" # Measure success of advice
53
+ user_satisfaction_rate = "" # Measure user satisfaction rate
54
+ user_location = "" # Capture user location
55
+ industry_or_profession = "" # Capture user industry or profession
56
+
57
+ record = {
58
+ "Timestamp": timestamp,
59
+ "User Input": user_input,
60
+ "User Identity": user_name,
61
+ "User Email": user_email,
62
+ "IP Address": ip_address,
63
+ "Device Type": device_type,
64
+ "Session Duration": session_duration,
65
+ "Features Used": features_used,
66
+ "Number of Queries": num_queries,
67
+ "Number of Documents Created": num_documents_created,
68
+ "Clickstream Data": clickstream_data,
69
+ "Interaction Patterns": interaction_patterns,
70
+ "Success of Advice": success_of_advice,
71
+ "User Satisfaction Rate": user_satisfaction_rate,
72
+ "User Location": user_location,
73
+ "Industry or Profession": industry_or_profession,
74
+ "Our AI attorney Reply": ChatGPT_reply
75
+ }
76
+ records.append(record)
77
+
78
+ # Update Google Sheet
79
+ row_values = [
80
+ timestamp, user_input, user_name, user_email, ip_address, device_type, session_duration,
81
+ features_used, num_queries, num_documents_created, clickstream_data, interaction_patterns,
82
+ success_of_advice, user_satisfaction_rate, user_location, industry_or_profession, ChatGPT_reply
83
+ ]
84
+ sheet.append_row(row_values)
85
+
86
+ return ChatGPT_reply
87
+
88
+ def get_device_type(user_agent):
89
+ if user_agent and "mobile" in user_agent.lower():
90
+ return "Mobile"
91
+ elif user_agent and "tablet" in user_agent.lower():
92
+ return "Tablet"
93
+ else:
94
+ return "Desktop"
95
+
96
+ def launch_interface():
97
+ inputs = [
98
+ gradio.inputs.Textbox(label="User Input", placeholder="Talk to your attorney..."),
99
+ gradio.inputs.Textbox(label="Your Name", placeholder="Enter your name"),
100
+ gradio.inputs.Textbox(label="Your Email", placeholder="Enter your email")
101
+ ]
102
+ outputs = gradio.outputs.Textbox(label="Our AI attorney Reply")
103
+
104
+ interface = gradio.Interface(fn=CustomChatGPT, inputs=inputs, outputs=outputs, title="Legisbot AI", description="Welcome to Legisbot AI. You are interacting with an Artificial Intelligent attorney. Please provide your name and talk in the user input box as if you were talking to your attorney.")
105
+ interface.launch()
106
+
107
+ if __name__ == "__main__":
108
+ launch_interface()
credentials.json ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "type": "service_account",
3
+ "project_id": "ai-barrister",
4
+ "private_key_id": "79eb2f390afee34c1c51ea4ba945e4878c4e0794",
5
+ "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC4THaTlZt9UIa7\nLS2RzgFxU4POVFn0GFimDUEgQ+FKMh8+A6wEhFmzWYQyj6MqKYCobcFxCBXnh6s1\nLTYJHYJVAPSEYZE25tQTxONwEyObgltCKKif2OkHwCZLCS6lpH59WSMcEORJhFuS\nlxVN8ZGwdj1KD2gZkwEJMpn7RjVKTGt9Wl6S9NZ3WI3TWj9pzQXlrPp2c9pVgEfK\nOCsYi1uWGM3Z2x9zL0f8ekHikFTmqGyTIcOhyyNMOmbkrTKla9GK/Lr7TIzf4Lr9\nCpnbFcyHBkrhMLa1/LpQRqbkHDy72jWiHXMwubdfKdKDQfNb4/3i1wBeZgHgJGyq\ncW1N0JvfAgMBAAECggEAW7kqdq9J0KeINpX4jQ1zKFzBR6oxjsujKxmDpTRDZvLl\nG68mKKVaI2nU4nkcYrp/HtRpJwE4LaAW9INI1maKXBX6m/wXErT1LdWawEe2PAo3\nswibS9rft4zJQiUSwzvH/Eilsa0ygOhPzvhEkSM+OA3Q2RAr5jaEmHhHrIg3s37U\nzH+tqxP95yVJp27ZsMEwqShLhupptC0o5kKSBx2TyeqCktvuOKHnMlSYB1tClV5S\n68RQ7iEwlzwNfpT6sBQjLZNkWJbwcVBfsaIHHRFP1DJQmcZN+7fZA9a8VRyLzCQm\nzc/ZDq52/L70Z9ZiuTRrhsC51QmdRXl/d1L9hNeCSQKBgQD6M7dKM+RiOmw2woSE\nXwMfDmSldtiQJZWKVWnIsu4pXxGwtJZctxnEdP6FFwG2LaVXK/TiWVmGjMt+abLC\nkfmPvZ0iEuwZaqLnm17vSj9oJDkV6/GCK8XC35VMiS41X4csmuYWOdUqA67XFXyM\ngHiAZp7V3kwdvNVmA569YGFVJQKBgQC8kck9DYr2zKuJBFH1WFul8gf5tX36XpQP\nDDgQfZ5NtnreuOPmTux9eeAaeiwIipaAu5wC/VC+iHC/MQA4W5m52ZDXJ9jBUJTy\nI/FnV1e3J2zfuIO/4o2EEzmWunT2uVLY6og4nPNninKBH+f2gbNcz1Oz0I/qwO9w\nAXazukDXswKBgB5wTjsrxvwgSWv8DC0idfnAQYRTyhL3T5MNwxnUkt7bnwZVYfmT\nmQHqjdBZNS8ZrITHZzpmTlrtJBCUAVhkc+0Fz2kGzkxlSb5Ni6Ym7UHZLky5cJ86\nfguwMbSm98UsgwBtM9K+ZG2BFzM5fPaG5qIQWgCA09fGUlvf0t8NK6o1AoGBAJN5\n1RAZomAIi/NZ3JtsIikzlAc4aTFBfLwUC1jiVcdjes7rfNlnSk+L3Lf4aq23baN6\nlrZD1T1eSgdNVGW/Rgfy3vNWZ5Aw7Hw/nhH7Xk+Q1vZVQTz1+0WbH4QBiW5YXDHn\noufb4AVPYuQXxvukTlm8kDLmX1fy0pAfpO1FMmc/AoGBAKQnhG8ym7rFLN1ebXG8\ng2gB02rEWRnBCXdKKalG33n7zeaF+93atUg4pJ0hofP7g/0yT31BTFh6R2Nt5uFf\nGccChHFSkpIQnNOLhQHisglfMttQP1KJ1WjfaRuQ+hqp7eGA6II0lFji5sgyBYoT\nbNrpwduYkIPY15gzHtMstVDC\n-----END PRIVATE KEY-----\n",
6
+ "client_email": "ai-barrister-log@ai-barrister.iam.gserviceaccount.com",
7
+ "client_id": "103630435709161336679",
8
+ "auth_uri": "https://accounts.google.com/o/oauth2/auth",
9
+ "token_uri": "https://oauth2.googleapis.com/token",
10
+ "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
11
+ "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/ai-barrister-log%40ai-barrister.iam.gserviceaccount.com",
12
+ "universe_domain": "googleapis.com"
13
+ }
requirements.txt ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ openai
2
+ gradio
3
+ pandas
4
+ gspread
5
+ oauth2client