Spaces:
Sleeping
Sleeping
File size: 7,488 Bytes
28635a8 0edb63c b9a026e 0edb63c 171089e 0edb63c b9a026e 0edb63c 8a05c43 0edb63c b9a026e 0edb63c 28635a8 401487d 28635a8 171089e 28635a8 7918fa4 28635a8 401487d 28635a8 401487d 28635a8 def9f6b 171089e 28635a8 401487d 28635a8 d98e15a 28635a8 8557c27 28635a8 a0371ce 28635a8 1da4237 28635a8 3fe198b b7aaa32 8557c27 171089e 8557c27 3dcdff5 28635a8 743a64b 52ce9fa 4d3f91e 52ce9fa 171089e 52ce9fa 171089e 52ce9fa b9a026e 52ce9fa ba60745 |
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 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 |
import gradio as gr
# Define the theme with custom colors and styles, including larger text sizes
theme = gr.themes.Default(
primary_hue=gr.themes.Color(
c100="#ffedd5", c200="#fed7aa", c300="#ffe09e", c400="#c2814c",
c50="#fff8f0", c500="#f97316", c600="#ea580c", c700="#c2410c",
c800="#9a3412", c900="#7c2d12", c950="#611f00"
),
secondary_hue="red",
neutral_hue="slate",
font=[gr.themes.GoogleFont('jack armstrong'), 'ui-sans-serif', 'system-ui', 'sans-serif'],
font_mono=[gr.themes.GoogleFont('xkcd'), 'ui-monospace', 'Consolas', 'monospace'],
).set(
body_text_color='*primary_950',
body_text_color_dark='*secondary_50',
body_text_size='26px', # Increase body text size
body_text_color_subdued='*primary_400',
body_text_weight='500',
background_fill_primary='*primary_300',
background_fill_primary_dark='*primary_800',
background_fill_secondary='*primary_50',
background_fill_secondary_dark='*primary_600',
border_color_accent='*secondary_950',
border_color_accent_dark='*body_text_color',
border_color_accent_subdued='*border_color_accent',
link_text_color='*secondary_800',
code_background_fill='*neutral_200',
code_background_fill_dark='*neutral_100',
block_shadow='none',
block_shadow_dark='none',
form_gap_width='0px',
checkbox_label_background_fill='*button_secondary_background_fill',
checkbox_label_background_fill_dark='*button_secondary_background_fill',
checkbox_label_background_fill_hover='*button_secondary_background_fill_hover',
checkbox_label_background_fill_hover_dark='*button_secondary_background_fill_hover',
checkbox_label_shadow='none',
error_background_fill_dark='*background_fill_primary',
input_background_fill='*neutral_100',
input_background_fill_dark='*neutral_700',
input_border_width='0px',
input_border_width_dark='0px',
input_shadow='none',
input_shadow_dark='none',
input_shadow_focus='*input_shadow',
input_shadow_focus_dark='*input_shadow',
stat_background_fill='*primary_300',
stat_background_fill_dark='*primary_500',
button_shadow='none',
button_shadow_active='none',
button_shadow_hover='none',
button_transition='background-color 0.2s ease',
button_primary_background_fill='*primary_200',
button_primary_background_fill_dark='*primary_700',
button_primary_background_fill_hover='*button_primary_background_fill',
button_primary_background_fill_hover_dark='*button_primary_background_fill',
button_primary_border_color_dark='*primary_600',
button_secondary_background_fill='*neutral_200',
button_secondary_background_fill_dark='*neutral_600',
button_secondary_background_fill_hover='*button_secondary_background_fill',
button_secondary_background_fill_hover_dark='*button_secondary_background_fill',
button_cancel_background_fill='*button_secondary_background_fill',
button_cancel_background_fill_dark='*button_secondary_background_fill',
button_cancel_background_fill_hover='*button_cancel_background_fill',
button_cancel_background_fill_hover_dark='*button_cancel_background_fill',
button_cancel_border_color='*button_secondary_border_color',
button_cancel_border_color_dark='*button_secondary_border_color',
button_cancel_text_color='*button_secondary_text_color',
button_cancel_text_color_dark='*button_secondary_text_color'
)
from sentence_transformers import SentenceTransformer, util
import openai
import os
os.environ["TOKENIZERS_PARALLELISM"] = "false"
filename = "output_chess_details.txt"
retrieval_model_name = 'output/sentence-transformer-finetuned/'
openai.api_key = os.environ["OPENAI_API_KEY"]
try:
retrieval_model = SentenceTransformer(retrieval_model_name)
print("Models loaded successfully.")
except Exception as e:
print(f"Failed to load models: {e}")
def load_and_preprocess_text(filename):
try:
with open(filename, 'r', encoding='utf-8') as file:
segments = [line.strip() for line in file if line.strip()]
print("Text loaded and preprocessed successfully.")
return segments
except Exception as e:
print(f"Failed to load or preprocess text: {e}")
return []
segments = load_and_preprocess_text(filename)
def find_relevant_segment(user_query, segments):
try:
lower_query = user_query.lower()
query_embedding = retrieval_model.encode(lower_query)
segment_embeddings = retrieval_model.encode(segments)
similarities = util.pytorch_cos_sim(query_embedding, segment_embeddings)[0]
best_idx = similarities.argmax()
return segments[best_idx]
except Exception as e:
print(f"Error in finding relevant segment: {e}")
return ""
def generate_response(user_query, relevant_segment):
try:
system_message = "You are a chatbot specialized in providing information on local events, pro-Palestine movements, and community outreach, pride movements/events and community resources."
user_message = f"Here's the information on St. Louis local events, outreach programs, community resources and local activism and movements: {relevant_segment}"
messages = [
{"role": "system", "content": system_message},
{"role": "user", "content": user_message}
]
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=messages,
max_tokens=500,
temperature=0.2,
top_p=1,
frequency_penalty=0,
presence_penalty=0
)
return response['choices'][0]['message']['content'].strip()
except Exception as e:
print(f"Error in generating response: {e}")
return f"Error in generating response: {e}"
def query_model(question):
if question == "":
return "Welcome to GloBot! Ask me anything about the St. Louis Community!"
relevant_segment = find_relevant_segment(question, segments)
if not relevant_segment:
return "Could not find specific information. Please refine your question."
response = generate_response(question, relevant_segment)
return response
welcome_message = """
## Your AI-driven assistant for STL community outreach queries. Created by Honna, Davonne, and Maryam of the 2024 Kode With Klossy St.Louis Camp!
"""
topics = """
### Feel free to ask me anything from the topics below!
- Pro-Palestine Events
- Pride Events
- Social Justice Workshops
- Cultural Festivals
- Community Outreach Programs
- Environmental Activism
- Health & Wellness Events
- How to Support Local Businesses
"""
def display_image():
return "Globot_Logo3.jpg"
# Setup the Gradio Blocks interface with custom layout components
with gr.Blocks(theme=theme) as demo:
gr.Image(display_image(), width=2000, height=600)
gr.Markdown(welcome_message)
with gr.Row():
with gr.Column():
gr.Markdown(topics)
with gr.Row():
with gr.Column():
question = gr.Textbox(label="Your question", placeholder="What do you want to ask about?")
answer = gr.Textbox(label="GloBot Response", placeholder="GloBot will respond here...", interactive=False, lines=10)
submit_button = gr.Button("Submit")
submit_button.click(fn=query_model, inputs=question, outputs=answer)
# Launch the Gradio app to allow user interaction
demo.launch(share=True)
|