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'Открыть граф в новой вкладке' 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)