mirror of
https://github.com/kennethreitz/instructor.git
synced 2026-06-05 22:50:18 +00:00
improve documentation
This commit is contained in:
Binary file not shown.
|
After Width: | Height: | Size: 241 KiB |
@@ -0,0 +1,57 @@
|
||||
from graphviz import Digraph
|
||||
from pydantic import BaseModel, Field
|
||||
from typing import List
|
||||
import openai
|
||||
import instructor
|
||||
|
||||
instructor.patch()
|
||||
|
||||
|
||||
class Node(BaseModel):
|
||||
id: int
|
||||
label: str
|
||||
color: str
|
||||
|
||||
|
||||
class Edge(BaseModel):
|
||||
source: int
|
||||
target: int
|
||||
label: str
|
||||
color: str = "black"
|
||||
|
||||
|
||||
class KnowledgeGraph(BaseModel):
|
||||
nodes: List[Node] = Field(..., default_factory=list)
|
||||
edges: List[Edge] = Field(..., default_factory=list)
|
||||
|
||||
|
||||
def generate_graph(input) -> KnowledgeGraph:
|
||||
return openai.ChatCompletion.create(
|
||||
model="gpt-3.5-turbo-16k",
|
||||
messages=[
|
||||
{
|
||||
"role": "user",
|
||||
"content": f"Help me understand following by describing as a detailed knowledge graph: {input}",
|
||||
}
|
||||
],
|
||||
response_model=KnowledgeGraph,
|
||||
) # type: ignore
|
||||
|
||||
|
||||
def visualize_knowledge_graph(kg: KnowledgeGraph):
|
||||
dot = Digraph(comment="Knowledge Graph")
|
||||
|
||||
# Add nodes
|
||||
for node in kg.nodes:
|
||||
dot.node(str(node.id), node.label, color=node.color)
|
||||
|
||||
# Add edges
|
||||
for edge in kg.edges:
|
||||
dot.edge(str(edge.source), str(edge.target), label=edge.label, color=edge.color)
|
||||
|
||||
# Render the graph
|
||||
dot.render("knowledge_graph.gv", view=True)
|
||||
|
||||
|
||||
graph: KnowledgeGraph = generate_graph("Teach me about quantum mechanics")
|
||||
visualize_knowledge_graph(graph)
|
||||
Reference in New Issue
Block a user