Spaces:
Sleeping
Sleeping
added architecture diagram - red nodes are not yet implemented (TODOs)
Browse files- diagrams/architecture.puml +143 -0
diagrams/architecture.puml
ADDED
@@ -0,0 +1,143 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
@startuml Architecture Diagram
|
2 |
+
|
3 |
+
' Define color variables
|
4 |
+
!define CANVAS_COLOR #FAEBD7
|
5 |
+
!define DEFAULT_NODE_COLOR #Gold
|
6 |
+
!define TODO_COLOR #FireBrick
|
7 |
+
!define ARROW_COLOR #666666
|
8 |
+
!define BORDER_COLOR #999999
|
9 |
+
!define TOOLBOX_MATH_COLOR #LightBlue
|
10 |
+
!define TOOLBOX_WEBSEARCH_COLOR #LightGreen
|
11 |
+
!define TOOLBOX_ENCRYPTION_COLOR #PaleVioletRed
|
12 |
+
!define POWERS_ARROW_COLOR #4285F4
|
13 |
+
!define TRIGGER_ARROW_COLOR #OrangeRed
|
14 |
+
!define FINAL_ANSWER_COLOR #Orange
|
15 |
+
|
16 |
+
' Style settings
|
17 |
+
skinparam handwritten true
|
18 |
+
skinparam backgroundColor white
|
19 |
+
skinparam componentStyle uml2
|
20 |
+
skinparam defaultFontName Arial
|
21 |
+
skinparam arrowColor ARROW_COLOR
|
22 |
+
skinparam componentBorderColor BORDER_COLOR
|
23 |
+
skinparam component {
|
24 |
+
BackgroundColor DEFAULT_NODE_COLOR
|
25 |
+
}
|
26 |
+
|
27 |
+
' Custom style for toolbox functions
|
28 |
+
skinparam label {
|
29 |
+
FontSize 10
|
30 |
+
FontColor black
|
31 |
+
}
|
32 |
+
|
33 |
+
' Components
|
34 |
+
package "app.py" {
|
35 |
+
[UI] as UI
|
36 |
+
[Application] as Application
|
37 |
+
}
|
38 |
+
|
39 |
+
package "alfred.py" {
|
40 |
+
[Alfred] as Alfred
|
41 |
+
[GraphBuilder] as GraphBuilder
|
42 |
+
}
|
43 |
+
|
44 |
+
package "management.py" {
|
45 |
+
[Assistant] as Assistant
|
46 |
+
[Manager] as Manager
|
47 |
+
}
|
48 |
+
|
49 |
+
' Relationships
|
50 |
+
UI -d-> Application
|
51 |
+
Application -d-> Alfred
|
52 |
+
Alfred -d-> GraphBuilder
|
53 |
+
GraphBuilder -d-> Assistant
|
54 |
+
GraphBuilder -d-> Manager
|
55 |
+
|
56 |
+
' LangGraph Flow and LlamaIndex Flow positioning
|
57 |
+
component "LangGraph Flow" as LangGraphFlow CANVAS_COLOR {
|
58 |
+
[Query] as Query
|
59 |
+
[Assistant Node] as AssistantNode
|
60 |
+
[Manager Node] as ManagerNode
|
61 |
+
[<b>Final Answer</b>] as FinalAnswer FINAL_ANSWER_COLOR
|
62 |
+
|
63 |
+
Query -r-> AssistantNode
|
64 |
+
AssistantNode -r-> ManagerNode : requests
|
65 |
+
ManagerNode -l-> AssistantNode : solution
|
66 |
+
ManagerNode -d-> break_up_recursion
|
67 |
+
break_up_recursion -u-> ManagerNode
|
68 |
+
AssistantNode -d-> FinalAnswer : problem solved
|
69 |
+
}
|
70 |
+
|
71 |
+
' Position LlamaIndex Flow with solver.py and toolbox.py - more compact
|
72 |
+
component "LlamaIndex Flow" as LlamaIndexFlow CANVAS_COLOR {
|
73 |
+
package "solver.py" {
|
74 |
+
[Solver] as Solver TODO_COLOR
|
75 |
+
[Summarizer] as Summarizer
|
76 |
+
[Researcher] as Researcher TODO_COLOR
|
77 |
+
[EncryptionExpert] as EncryptionExpert TODO_COLOR
|
78 |
+
[MathExpert] as MathExpert TODO_COLOR
|
79 |
+
[Reasoner] as Reasoner TODO_COLOR
|
80 |
+
[ImageHandler] as ImageHandler TODO_COLOR
|
81 |
+
[VideoHandler] as VideoHandler TODO_COLOR
|
82 |
+
}
|
83 |
+
|
84 |
+
package "toolbox.py" {
|
85 |
+
node Math TOOLBOX_MATH_COLOR [
|
86 |
+
<b>Math</b>
|
87 |
+
----
|
88 |
+
symbolic_calc
|
89 |
+
____
|
90 |
+
unit_converter
|
91 |
+
]
|
92 |
+
node WebSearch TOOLBOX_WEBSEARCH_COLOR [
|
93 |
+
<b>WebSearch</b>
|
94 |
+
----
|
95 |
+
duck_duck_go_tools
|
96 |
+
]
|
97 |
+
node Encryption TOOLBOX_ENCRYPTION_COLOR [
|
98 |
+
<b>Encryption</b>
|
99 |
+
----
|
100 |
+
<font color=FireBrick><b>ascii_encode/decode</b></font>
|
101 |
+
____
|
102 |
+
<font color=FireBrick><b>chr_to_int/int_to_chr</b></font>
|
103 |
+
____
|
104 |
+
base64_encode/decode
|
105 |
+
____
|
106 |
+
caesar_cipher_encode/decode/<font color=FireBrick><b>brute_force</b></font>
|
107 |
+
____
|
108 |
+
reverse_string
|
109 |
+
]
|
110 |
+
}
|
111 |
+
|
112 |
+
Solver -r-> Summarizer
|
113 |
+
Solver -d-> Researcher
|
114 |
+
Solver -d-> EncryptionExpert
|
115 |
+
Solver -d-> MathExpert
|
116 |
+
Solver -d-> Reasoner
|
117 |
+
Solver -d-> ImageHandler
|
118 |
+
Solver -d-> VideoHandler
|
119 |
+
|
120 |
+
Researcher -d-> WebSearch
|
121 |
+
MathExpert -d-> Math
|
122 |
+
EncryptionExpert -d-> Encryption
|
123 |
+
}
|
124 |
+
|
125 |
+
' Adjust the label position to avoid overlap
|
126 |
+
GraphBuilder -d-> LangGraphFlow : builds
|
127 |
+
|
128 |
+
' Curved connections from Manager to Solver/Summarizer
|
129 |
+
Manager -d-> Solver
|
130 |
+
Manager -d-> Summarizer
|
131 |
+
|
132 |
+
' Bidirectional connection between ManagerNode and Solver
|
133 |
+
ManagerNode -r-> Solver : requests
|
134 |
+
Solver -l-> ManagerNode : provides solution
|
135 |
+
|
136 |
+
' Agents powering the Nodes (dashed, blue color)
|
137 |
+
Assistant -[POWERS_ARROW_COLOR,dashed]d-> AssistantNode : powers
|
138 |
+
Manager -[POWERS_ARROW_COLOR,dashed]d-> ManagerNode : powers
|
139 |
+
|
140 |
+
' Adding a direct connection from Alfred to Query
|
141 |
+
Alfred -[TRIGGER_ARROW_COLOR]d..> Query
|
142 |
+
|
143 |
+
@enduml
|