from GPT4KG import KnowledgeGraph import gradio as gr from PIL import Image def generate_graph(input_text,api_key,graph): if graph == []: kg = KnowledgeGraph(api_key) graph.append(kg) else: kg = graph[0] kg.learn(str(input_text)) img = kg.display_graph() graph[0] = kg return img,graph def answer_question(question,api_key,graph): if graph == []: kg = KnowledgeGraph(api_key) graph.append(kg) else: kg = graph[0] return kg.chat_qa(question) def clear_graph(api_key,graph): graph = [] kg = KnowledgeGraph(api_key) graph.append(kg) return graph,None#Image.new('RGB', (400, 100),(255, 255, 255)) title = "Associative Memory with GPT4KG" description = "Enter text to generate a semantically searchable knowledge graph:" with gr.Blocks() as demo: gr.Markdown(f"

{title}

") gr.Markdown(f"

{description}

") output_image = gr.Image(label="Knowledge Graph", type="pil") api_key = gr.Textbox(lines=1, label="OpenAI API Key") graph = gr.State([]) input_text = gr.Textbox(lines=5, label="Information to be added to graph") submit_btn = gr.Button("Add info to graph") submit_btn.click(fn=generate_graph, inputs=[input_text,api_key,graph], outputs=[output_image,graph]) question = gr.Textbox(lines=1, label="Question about the info in this graph") answer = gr.Textbox(lines=1, label="Answer") qa_btn = gr.Button("Ask question") qa_btn.click(fn=answer_question, inputs=[question,api_key,graph], outputs=[answer]) clear_btn = gr.Button("Clear graph") clear_btn.click(fn=clear_graph, inputs=[api_key,graph], outputs=[graph,output_image],api_name="clear") demo.launch()