EnigmaOfTheWorld commited on
Commit
cf6272b
β€’
1 Parent(s): d7fefd7

Added Knowledge Graph

Browse files
Files changed (1) hide show
  1. app.py +57 -0
app.py CHANGED
@@ -471,6 +471,51 @@ for i in range(len(t)//3):
471
  r.append(t[3*i:3*i+3])
472
  r
473
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
474
 
475
  #####################
476
  disp_url = "https://i.ibb.co/TP4ddc6/sherlock.png"
@@ -606,4 +651,16 @@ home</p>""")
606
  # video_name = gr.Text(label="Video Upload")
607
  hbtn = gr.Button("Video")
608
  hbtn.click(video, inputs=fil1, outputs=vid2)
 
 
 
 
 
 
 
 
 
 
 
 
609
  demo.launch(debug=True)
 
471
  r.append(t[3*i:3*i+3])
472
  r
473
 
474
+ def knowledge_graph(prompt):
475
+
476
+ response = openai.Completion.create(
477
+ model="text-davinci-003",
478
+ prompt=f"""Given a prompt, extrapolate as many relationships as possible from it and provide a list of updates.\n\nIf an update is a relationship, provide
479
+ [ENTITY 1, RELATIONSHIP, ENTITY 2]. The relationship is directed, so the order matters.\n\nIf an update is related to deleting an entity, provide [\"DELETE\", ENTITY].\n\nExample:\nprompt: Alice is Bob's roommate. Alice likes music. Her roommate likes sports\nupdates:\n[[\"Alice\", \"roommate\", \"Bob\"],[\"Alice\",\"likes\",\"music\"],
480
+ [\"Bob\",\"likes\",\"sports\"]]\n\nprompt: {prompt}\nupdates:""",
481
+ temperature=0,
482
+ max_tokens=256,
483
+ top_p=1,
484
+ frequency_penalty=0,
485
+ presence_penalty=0
486
+ )
487
+ r = response["choices"][0]["text"]
488
+ r = r[2:]
489
+ r = r.replace("[",'').replace("]","")
490
+ r = r.split(",")
491
+ t = []
492
+ for i in range(len(r)//3):
493
+ t.append(r[3*i:3*i+3])
494
+ # t = [['"Ankit"', '"went_to"', '"market"'], ['"Ankit"', '"called"', '"Raj"']]
495
+ import networkx as nx
496
+ print(t)
497
+ G = nx.Graph()
498
+ for i in t:
499
+ G.add_node(i[0])
500
+ G.add_node(i[2])
501
+ G.add_edge(i[0],i[2])
502
+ pos = nx.spring_layout(G)
503
+ nx.draw(G,pos,labels={node: node for node in G.nodes()})
504
+ print('Drew')
505
+ x = nx.draw_networkx_edge_labels(
506
+ G, pos,
507
+ edge_labels={(t[0][0], t[0][2]): t[0][1],
508
+ (t[1][0], t[1][2]): t[1][1]
509
+ },
510
+ font_color='red'
511
+ )
512
+ # print(x)
513
+ plt.savefig("/tmp/generate_graph.png")
514
+ img = Image.open("/tmp/generate_graph.png")
515
+ os.remove("/tmp/generate_graph.png")
516
+ return img
517
+
518
+
519
 
520
  #####################
521
  disp_url = "https://i.ibb.co/TP4ddc6/sherlock.png"
 
651
  # video_name = gr.Text(label="Video Upload")
652
  hbtn = gr.Button("Video")
653
  hbtn.click(video, inputs=fil1, outputs=vid2)
654
+
655
+ with gr.Accordion("Generate Knowledge Graph",open=False):
656
+ gr.Markdown("**Genrate KNowledge Graph**")
657
+ with gr.Row():
658
+ with gr.Column():
659
+ prompt_to_generate_graph = gr.Text()
660
+ with gr.Column():
661
+ generated_graph_pic = gr.Image()
662
+
663
+ generate_knowledge_graph = gr.Button("Generate Knowledge Graph")
664
+ generate_knowledge_graph.click(knowledge_graph, inputs=prompt_to_generate_graph, outputs=generated_graph_pic)
665
+
666
  demo.launch(debug=True)