|
import gradio as gr |
|
import requests |
|
import time |
|
import folium |
|
from folium import plugins |
|
import pandas as pd |
|
from groq import Groq |
|
|
|
|
|
client = Groq(api_key="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") |
|
|
|
|
|
def get_response(user_input): |
|
"""Get response from Groq AI model.""" |
|
if 'messages' not in gradio_state: |
|
gradio_state['messages'] = [] |
|
|
|
gradio_state['messages'].append({"role": "user", "content": user_input}) |
|
|
|
|
|
chat_completion = client.chat.completions.create( |
|
messages=gradio_state['messages'], |
|
model="llama3-8b-8192" |
|
) |
|
|
|
ai_message = chat_completion.choices[0].message.content |
|
gradio_state['messages'].append({"role": "assistant", "content": ai_message}) |
|
|
|
return ai_message |
|
|
|
|
|
def emergency_call(): |
|
time.sleep(2) |
|
return "Emergency services have been contacted. Help is on the way!" |
|
|
|
|
|
def dangerous_area_map(): |
|
data = { |
|
'latitude': [40.7128, 34.0522, 51.5074, 48.8566, 35.6762], |
|
'longitude': [-74.0060, -118.2437, -0.1278, 2.3522, 139.6503], |
|
'area': ['New York', 'Los Angeles', 'London', 'Paris', 'Tokyo'], |
|
'danger_level': ['High', 'Medium', 'Low', 'High', 'Medium'] |
|
} |
|
df = pd.DataFrame(data) |
|
map_center = [df['latitude'].mean(), df['longitude'].mean()] |
|
m = folium.Map(location=map_center, zoom_start=2) |
|
|
|
def get_color(danger_level): |
|
if danger_level == 'High': |
|
return 'red' |
|
elif danger_level == 'Medium': |
|
return 'orange' |
|
else: |
|
return 'green' |
|
|
|
for index, row in df.iterrows(): |
|
danger_color = get_color(row['danger_level']) |
|
folium.CircleMarker( |
|
location=[row['latitude'], row['longitude']], |
|
radius=10, |
|
color=danger_color, |
|
fill=True, |
|
fill_color=danger_color, |
|
fill_opacity=0.7, |
|
popup=f"Area: {row['area']}<br> Danger Level: {row['danger_level']}" |
|
).add_to(m) |
|
|
|
heat_data = [[row['latitude'], row['longitude']] for index, row in df.iterrows()] |
|
plugins.HeatMap(heat_data).add_to(m) |
|
|
|
map_html = m._repr_html_() |
|
return map_html |
|
|
|
|
|
def ors_route(start_lat, start_lon, end_lat, end_lon): |
|
api_key = '5b3ce3597851110001cf6248678e77a7fc474afbbb5ec203d721079c' |
|
start_point = f'{start_lon},{start_lat}' |
|
end_point = f'{end_lon},{end_lat}' |
|
|
|
|
|
url = f'https://api.openrouteservice.org/v2/directions/driving-car?api_key={api_key}&start={start_point}&end={end_point}' |
|
response = requests.get(url) |
|
|
|
if response.status_code == 200: |
|
data = response.json() |
|
|
|
route = data['features'][0]['geometry']['coordinates'] |
|
route_map = folium.Map( |
|
|