24Arys11's picture
added architecture diagram - red nodes are not yet implemented (TODOs)
fb0045e
raw
history blame
3.67 kB
@startuml Architecture Diagram
' Define color variables
!define CANVAS_COLOR #FAEBD7
!define DEFAULT_NODE_COLOR #Gold
!define TODO_COLOR #FireBrick
!define ARROW_COLOR #666666
!define BORDER_COLOR #999999
!define TOOLBOX_MATH_COLOR #LightBlue
!define TOOLBOX_WEBSEARCH_COLOR #LightGreen
!define TOOLBOX_ENCRYPTION_COLOR #PaleVioletRed
!define POWERS_ARROW_COLOR #4285F4
!define TRIGGER_ARROW_COLOR #OrangeRed
!define FINAL_ANSWER_COLOR #Orange
' Style settings
skinparam handwritten true
skinparam backgroundColor white
skinparam componentStyle uml2
skinparam defaultFontName Arial
skinparam arrowColor ARROW_COLOR
skinparam componentBorderColor BORDER_COLOR
skinparam component {
BackgroundColor DEFAULT_NODE_COLOR
}
' Custom style for toolbox functions
skinparam label {
FontSize 10
FontColor black
}
' Components
package "app.py" {
[UI] as UI
[Application] as Application
}
package "alfred.py" {
[Alfred] as Alfred
[GraphBuilder] as GraphBuilder
}
package "management.py" {
[Assistant] as Assistant
[Manager] as Manager
}
' Relationships
UI -d-> Application
Application -d-> Alfred
Alfred -d-> GraphBuilder
GraphBuilder -d-> Assistant
GraphBuilder -d-> Manager
' LangGraph Flow and LlamaIndex Flow positioning
component "LangGraph Flow" as LangGraphFlow CANVAS_COLOR {
[Query] as Query
[Assistant Node] as AssistantNode
[Manager Node] as ManagerNode
[<b>Final Answer</b>] as FinalAnswer FINAL_ANSWER_COLOR
Query -r-> AssistantNode
AssistantNode -r-> ManagerNode : requests
ManagerNode -l-> AssistantNode : solution
ManagerNode -d-> break_up_recursion
break_up_recursion -u-> ManagerNode
AssistantNode -d-> FinalAnswer : problem solved
}
' Position LlamaIndex Flow with solver.py and toolbox.py - more compact
component "LlamaIndex Flow" as LlamaIndexFlow CANVAS_COLOR {
package "solver.py" {
[Solver] as Solver TODO_COLOR
[Summarizer] as Summarizer
[Researcher] as Researcher TODO_COLOR
[EncryptionExpert] as EncryptionExpert TODO_COLOR
[MathExpert] as MathExpert TODO_COLOR
[Reasoner] as Reasoner TODO_COLOR
[ImageHandler] as ImageHandler TODO_COLOR
[VideoHandler] as VideoHandler TODO_COLOR
}
package "toolbox.py" {
node Math TOOLBOX_MATH_COLOR [
<b>Math</b>
----
symbolic_calc
____
unit_converter
]
node WebSearch TOOLBOX_WEBSEARCH_COLOR [
<b>WebSearch</b>
----
duck_duck_go_tools
]
node Encryption TOOLBOX_ENCRYPTION_COLOR [
<b>Encryption</b>
----
<font color=FireBrick><b>ascii_encode/decode</b></font>
____
<font color=FireBrick><b>chr_to_int/int_to_chr</b></font>
____
base64_encode/decode
____
caesar_cipher_encode/decode/<font color=FireBrick><b>brute_force</b></font>
____
reverse_string
]
}
Solver -r-> Summarizer
Solver -d-> Researcher
Solver -d-> EncryptionExpert
Solver -d-> MathExpert
Solver -d-> Reasoner
Solver -d-> ImageHandler
Solver -d-> VideoHandler
Researcher -d-> WebSearch
MathExpert -d-> Math
EncryptionExpert -d-> Encryption
}
' Adjust the label position to avoid overlap
GraphBuilder -d-> LangGraphFlow : builds
' Curved connections from Manager to Solver/Summarizer
Manager -d-> Solver
Manager -d-> Summarizer
' Bidirectional connection between ManagerNode and Solver
ManagerNode -r-> Solver : requests
Solver -l-> ManagerNode : provides solution
' Agents powering the Nodes (dashed, blue color)
Assistant -[POWERS_ARROW_COLOR,dashed]d-> AssistantNode : powers
Manager -[POWERS_ARROW_COLOR,dashed]d-> ManagerNode : powers
' Adding a direct connection from Alfred to Query
Alfred -[TRIGGER_ARROW_COLOR]d..> Query
@enduml