File size: 2,590 Bytes
e9462cd
 
3198c6f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
051ac24
3198c6f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
98481b8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
051ac24
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
from __future__ import annotations

from dataclasses import dataclass, field
from typing import Any, Dict, List, Optional

from pydantic import BaseModel


class ChatRequest(BaseModel):
    message: Optional[str] = None
    prompt: Optional[str] = None
    query: Optional[str] = None
    text: Optional[str] = None
    user_message: Optional[str] = None
    input: Optional[str] = None
    content: Optional[str] = None

    tone: Optional[float] = 0.5
    verbosity: Optional[float] = 0.5
    transparency: Optional[float] = 0.5

    help_mode: Optional[str] = None
    intent: Optional[str] = None
    category: Optional[str] = None
    chat_history: Optional[List[Dict[str, Any]]] = None
    history: Optional[List[Dict[str, Any]]] = None
    session_state: Optional[Dict[str, Any]] = None

    question_text: Optional[str] = None
    options_text: Optional[List[str]] = None
    question_id: Optional[str] = None
    session_id: Optional[str] = None
    user_id: Optional[str] = None


class SessionStartRequest(BaseModel):
    session_id: str
    user_id: Optional[str] = None
    condition: Optional[str] = None
    metadata: Optional[Dict[str, Any]] = None


class EventLogRequest(BaseModel):
    session_id: str
    event_type: str
    timestamp: Optional[str] = None
    payload: Optional[Dict[str, Any]] = None


class SessionFinalizeRequest(BaseModel):
    session_id: str
    summary: Optional[Dict[str, Any]] = None


@dataclass
class RetrievedChunk:
    text: str
    topic: str = "general"
    source: str = "local"
    score: float = 0.0


@dataclass
class SolverResult:
    reply: str = ""
    domain: str = "fallback"
    solved: bool = False
    help_mode: str = "answer"
    answer_letter: Optional[str] = None
    answer_value: Optional[str] = None
    topic: Optional[str] = None
    used_retrieval: bool = False
    used_generator: bool = False
    internal_answer: Optional[str] = None
    steps: List[str] = field(default_factory=list)
    teaching_chunks: List[RetrievedChunk] = field(default_factory=list)
    meta: Dict[str, Any] = field(default_factory=dict)


@dataclass
class ExplainerResult:
    understood: bool = False
    topic: Optional[str] = None

    asks_for: Optional[str] = None
    givens: List[str] = field(default_factory=list)
    constraints: List[str] = field(default_factory=list)

    relationships: List[str] = field(default_factory=list)
    needed_concepts: List[str] = field(default_factory=list)

    trap_notes: List[str] = field(default_factory=list)
    strategy_hint: Optional[str] = None

    plain_english: Optional[str] = None