advantages / app.py
trashchenkov's picture
Create app.py
cd9ea1c verified
raw
history blame
1.82 kB
import gradio as gr
from pyvis.network import Network
import base64
def create_knowledge_graph():
# Создаем граф с pyvis
net = Network(
height="600px",
width="100%",
bgcolor="#222222",
font_color="white",
cdn_resources="in_line" # Все необходимые JS/CSS будут встроены в HTML
)
# Добавляем узлы (концепции)
nodes = ["Python", "Gradio", "Pyvis", "Data Science", "Machine Learning"]
for node in nodes:
net.add_node(node, label=node)
# Добавляем ребра (связи между концепциями)
edges = [
("Python", "Gradio"),
("Python", "Pyvis"),
("Python", "Data Science"),
("Data Science", "Machine Learning"),
("Gradio", "Machine Learning"),
("Pyvis", "Data Science")
]
for source, target in edges:
net.add_edge(source, target)
# Генерируем HTML-код графа
html_content = net.generate_html(notebook=False)
# Кодируем HTML в base64 и формируем data URL
html_bytes = html_content.encode("utf-8")
b64_html = base64.b64encode(html_bytes).decode("utf-8")
data_uri = f"data:text/html;base64,{b64_html}"
# Возвращаем ссылку, которая откроется в новой вкладке
return f'<a href="{data_uri}" target="_blank">Открыть граф в новой вкладке</a>'
with gr.Blocks() as demo:
gr.Markdown("# Открытие графа в новой вкладке")
generate_button = gr.Button("Создать граф")
html_out = gr.HTML()
generate_button.click(fn=create_knowledge_graph, inputs=[], outputs=html_out)
demo.launch(inline=True)