|
import gradio as gr |
|
from scrape_3gpp import * |
|
from excel_chat import * |
|
from classification import * |
|
from chart_generation import * |
|
from charts_advanced import * |
|
|
|
|
|
|
|
|
|
|
|
categories = [ |
|
{ |
|
"topic": "Confidentiality and Privacy Protection", |
|
"description": "This topic covers the protection of confidentiality, privacy, and integrity in security systems. It also includes authentication and authorization processes.", |
|
"experts": ["Mireille"] |
|
}, |
|
{ |
|
"topic": "Distributed Trust and End-User Trust Models", |
|
"description": "This topic focuses on distributed trust models and how end-users establish trust in secure systems.", |
|
"experts": ["Mireille", "Khawla"] |
|
}, |
|
{ |
|
"topic": "Secure Element and Key Provisioning", |
|
"description": "This topic involves the secure element in systems and the process of key provisioning.", |
|
"experts": ["Mireille"] |
|
}, |
|
{ |
|
"topic": "Residential Gateway Security", |
|
"description": "This topic covers the security aspects of Residential Gateways.", |
|
"experts": ["Mireille"] |
|
}, |
|
{ |
|
"topic": "Standalone Non-Public Network (SNPN) Inter-Connection and Cybersecurity", |
|
"description": "This topic focuses on the inter-connection of Standalone Non-Public Networks and related cyber-security topics.", |
|
"experts": ["Khawla"] |
|
}, |
|
{ |
|
"topic": "Distributed Ledger and Blockchain in SNPN", |
|
"description": "This topic covers the use of distributed ledger technology and blockchain in securing Standalone Non-Public Networks.", |
|
"experts": ["Khawla"] |
|
}, |
|
{ |
|
"topic": "Distributed Networks and Communication", |
|
"description": "This topic involves distributed networks such as mesh networks, ad-hoc networks, and multi-hop networks, and their cyber-security aspects.", |
|
"experts": ["Guillaume"] |
|
}, |
|
{ |
|
"topic": "Swarm of Drones and Unmanned Aerial Vehicles Network Infrastructure", |
|
"description": "This topic covers the network infrastructure deployed by Swarm of Drones and Unmanned Aerial Vehicles.", |
|
"experts": ["Guillaume"] |
|
}, |
|
{ |
|
"topic": "USIM and Over-the-Air Services", |
|
"description": "This topic involves USIM and related over-the-air services such as Steering of Roaming, roaming services, network selection, and UE configuration.", |
|
"experts": ["Vincent"] |
|
}, |
|
{ |
|
"topic": "Eco-Design and Societal Impact of Technology", |
|
"description": "This topic covers eco-design concepts, including energy saving, energy efficiency, carbon emissions, and the societal impact of technology.", |
|
"experts": ["Pierre"] |
|
}, |
|
{ |
|
"topic": "Service Requirements of New Services", |
|
"description": "This topic involves defining service requirements for new services, detecting low signals of new trends and technologies, and assessing their impact on USIM services or over-the-air services.", |
|
"experts": ["Ly-Thanh"] |
|
}, |
|
{ |
|
"topic": "Satellite and Non Terrestrial Networks", |
|
"description": "This topic covers satellite networks, Non Terrestrial Networks, Private Networks, IoT, Inter Satellite communication, and Radio Access Network.", |
|
"experts": ["Nicolas"] |
|
}, |
|
{ |
|
"topic": "Public Safety and Emergency Communication", |
|
"description": "This topic involves Public Safety Communication, Military Communication, Emergency Calls, Emergency Services, Disaster Communication Access, and other related areas.", |
|
"experts": ["Dorin"] |
|
} |
|
] |
|
|
|
df_cate = pd.DataFrame(categories) |
|
|
|
|
|
|
|
|
|
|
|
with gr.Blocks() as demo: |
|
gr.Markdown("## Extaction, Classification and AI tool") |
|
with gr.Tab("File extraction"): |
|
gr.Markdown(" Put either just a link, or a link and an excel file with an 'Actions' column") |
|
with gr.Row(): |
|
dd_url = gr.Dropdown(label="(e.g. https://www.3gpp.org/ftp/TSG_SA/WG1_Serv/TSGS1_105_Athens/Docs)", multiselect=False, value="https://www.3gpp.org/ftp/", allow_custom_value=True, scale=9) |
|
btn_search = gr.Button("Search") |
|
btn_extract = gr.Button("Extract excel from URL") |
|
tb_message = gr.Textbox(label="Status") |
|
|
|
with gr.Tab("Query on columns with mistral"): |
|
dd_source_ask = gr.Dropdown(label="Source Column(s)", multiselect=True) |
|
tb_destcol = gr.Textbox(label="Destination column label (e.g. Summary, ELI5, PAB)") |
|
tb_prompt = gr.Textbox(label="Prompt") |
|
with gr.Accordion("Filters", open=False): |
|
with gr.Row(): |
|
dd_searchcol = gr.Dropdown(label="Column to look into (Optional)", multiselect=False, scale=4) |
|
dd_keywords = gr.Dropdown(label="Words to look for (Optional)", multiselect=True, allow_custom_value=True, scale=5) |
|
sl_client = gr.Slider(label="Mistral API", maximum=1, step=1, interactive=True, scale=1) |
|
tb_filename = gr.Textbox(label="Specific File Name (Optional)") |
|
mist_button = gr.Button("Ask AI") |
|
|
|
with gr.Tab("Classification by topic"): |
|
dd_source_class = gr.Dropdown(label="Source Column", multiselect=False) |
|
gr.Markdown("### The predefined categories can be modified at any time") |
|
df_category = gr.DataFrame(label='categories', value=df_cate, interactive=True) |
|
btn_classif = gr.Button("Categorize") |
|
|
|
with gr.Tab("Charts Generation"): |
|
with gr.Row(): |
|
dd_label1 = gr.Dropdown(label="Label 1", multiselect=False) |
|
dd_label2 = gr.Dropdown(label="Label 2", multiselect=False, value="") |
|
btn_chart = gr.Button("Generate Bar Plot") |
|
plt_figure = gr.Plot() |
|
|
|
with gr.Tab("Chart Generation"): |
|
gr.Markdown("## 🚧 Actuellement en maintenance 🚧") |
|
with gr.Tab("Overall"): |
|
btn_overall = gr.Button("Overall Review") |
|
with gr.Tab("By Expert"): |
|
rd_exp=gr.Radio(["Satellite Networks / Nicolas", "Emergency Communication / Dorin", "Trend Analysis / Ly-Thanh", "Security Trust / Mireille", "Distributed Networks / Guillaume", "Network Security / Khawla", "USIM Management / Vincent", "Eco-Design / Pierre"], label="Expert Name") |
|
btn_expert = gr.Button("Top 10 by expert") |
|
with gr.Tab("By Company"): |
|
tb_com=gr.Textbox(label="Company Name",info="You can write 1, 2 or 3 company names at the same time") |
|
btn_type = gr.Button("Company info") |
|
with gr.Row(): |
|
plt_chart = gr.Plot(label="Graphique") |
|
plt_chart2 = gr.Plot(label="Graphique") |
|
plt_chart3 = gr.Plot(label="Graphique") |
|
with gr.Accordion("Excel Preview", open=False): |
|
df_output = gr.DataFrame() |
|
fi_excel = gr.File(label="Excel File") |
|
|
|
|
|
btn_search.click(browse_folder, inputs=dd_url, outputs=dd_url) |
|
dd_url.change(browse_folder, inputs=dd_url, outputs=dd_url) |
|
fi_excel.change(get_columns, inputs=[fi_excel], outputs=[dd_source_ask, dd_source_class, dd_label1, dd_label2, dd_searchcol, df_output]) |
|
|
|
btn_extract.click(extractionPrincipale, inputs=[dd_url, fi_excel], outputs=[fi_excel, tb_message]) |
|
|
|
mist_button.click(chat_with_mistral, inputs=[dd_source_ask, tb_destcol, tb_prompt, fi_excel, tb_url, dd_searchcol, dd_keywords, sl_client], outputs=[fi_excel, df_output]) |
|
|
|
btn_classif.click(classification, inputs=[dd_source_class, fi_excel, df_category], outputs=[fi_excel, df_output]) |
|
|
|
btn_chart.click(create_bar_plot, inputs=[fi_excel, dd_label1, dd_label2], outputs=[plt_figure]) |
|
|
|
btn_overall.click(generate_company_chart,inputs=[fi_excel], outputs=[plt_chart]) |
|
btn_overall.click(status_chart,inputs=[fi_excel], outputs=[plt_chart2]) |
|
btn_overall.click(category_chart,inputs=[fi_excel], outputs=[plt_chart3]) |
|
btn_expert.click(chart_by_expert,inputs=[fi_excel,rd_exp], outputs=[plt_chart]) |
|
btn_type.click(company_document_type,inputs=[fi_excel,tb_com], outputs=[plt_chart]) |
|
|
|
|
|
|
|
demo.launch(debug=True) |