File size: 1,471 Bytes
32a7233
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import os
from typing import TypedDict, List, Dict, Any, Optional
from enum import Enum

# 1) Core Tasks
class Available_Tasks(Enum):
    LAPTOP_CHOOSE = "LAPTOP_CHOOSE"
    QUESTION = "QUESTION" # EAG of well known
    ROADMAP = "ROADMAP"
    PROGRAMMING = "PROGRAMMING"
    GENERAL = "GENERAL" # last option with notice
    HELLO = "HELLO" # this is to generally detect hello , but in use update_context prompt control to not classify it as core type

# 2) Task Steps
task_steps = {
    Available_Tasks.GENERAL.value : [],
    Available_Tasks.LAPTOP_CHOOSE.value : ["price","usage","other_concern"],
    Available_Tasks.QUESTION.value : [],
    Available_Tasks.PROGRAMMING.value : [],
    Available_Tasks.ROADMAP.value : ["career","level","experience","skills"],
    Available_Tasks.HELLO.value : []
}

# 3) Tasks State
class ProblemState(TypedDict):
    # main
    question: str
    answer: Optional[str]
    node_output_article : Optional[str]
    memory: List[Dict[str, Any]] # filled by list of Human/Sytem messages ... as in gui

    # to do lists
    # same as defined in task_Steps
    question_type : Optional[str] # --> must be of Available_Tasks values
    price : Optional[str]
    usage : Optional[str]
    other_concern : Optional[str]
    career : Optional[str]
    level : Optional[str]
    experience : Optional[List[str]]
    skills : Optional[List[str]]
    all_ok : Optional[bool]

    # Models
    llm: Optional[Any]
    rag_model: Optional[Any]