Project

General

Profile

SendRequest() method » History » Version 14

Tomislav Pleše, 09/21/2025 01:37 PM

1 1 Tomislav Pleše
# SendRequest() method
2 2 Tomislav Pleše
3 4 Tomislav Pleše
Context is created from message with following roles: 
4
* system (content: instructions to AI model), 
5
* assistant (content: AI model responses), 
6
* user (content: user prompts)
7 1 Tomislav Pleše
8 5 Tomislav Pleše
Context is created as a messageList where:
9
* first element is the assistant role/content if it exists
10
* following elements are an ascending list of user prompts and assistant responses in ascending order
11
* last element is the newest user prompt
12
13 10 Tomislav Pleše
Sub-prompt 
14
15
Sub-prompt is a prompt that is created from the contents of the Response of the currently selected Point (node - prompt + response). Flow:
16
1. FE - User selects a portion of the current Point's response
17
2. FE - And from this selected text, the new Prompt is started (user can add more text to the selected text)
18
3. FE - User then sends this new Prompt to the AI model 
19
4. FE - From this new Prompt is created a new Point
20
5. FE - The current Point (from which the selected text comes from) now becomes a Shard Point (Shard is added to that Point). This Shard has an Anchor (containing among other: the start and end positions of the selected text)
21
6. FE - The new Point is added to the shardPointChildren list inside the Shard
22
7. FE - On the phone's screen, the node's Response message part (in the tree view) is split into two (sharding): first part (shard) is the text before the end position of the selected text (in the Anchor), and the second part (shard) is the text after that and till the end of the Response.
23
8. FE - The new node (with the new prompt) is placed indented under the first part (first shard) in the tree view 
24 11 Tomislav Pleše
9. FE - Create Context as the messageList. This is how the context for the Shard is created:
25
26 12 Tomislav Pleše
|- T-001: Shard-01   <-- 12. added to context (the text from the endPosition up to the start of the Response message - dissregarding any text that comes after the endPosition)
27
|  |- T-004: Point
28
|  |- T-015: Point
29
|- T-001: Shard-02  <-- 11. added to context  (the text from the endPosition up to the start of the Response message - dissregarding any text that comes after the endPosition - this includes point "<-- 12.")
30
|  |- T-016: Point  <-- 10. added to context
31
|  |- T-017: Point  <-- 9. added to context
32
|  |- T-005: Shard-01  <-- 8. added to context (the text from the endPosition up to the start of the Response message - dissregarding any text that comes after the endPosition)
33
|  |  |- T-006: Point  <-- 7. added to context
34
|  |  |- T-014: Point  <-- 6. added to context
35
|  |  |- T-007: Shard-01  <-- 5. added to context 
36
|  |  |  |- T-010: Point
37
|  |  |  |- T-013: Point 
38
|  |  |- T-007: Shard-02  <-- 3. added to context (the text from the endPosition up to the start of the Response message - dissregarding any text that comes after the endPosition - this includes point "<-- 4.")
39
|  |  |  |- T-011: Point  <-- 2. added to context
40
|  |  |  |- T-012: Point  <-- 1. starting point
41
|  |  |- T-007: Shard-03 
42
|  |  |- T-008: Point
43
|  |- T-005: Shard-02 
44
|  |  |- T-018: Point
45
|  |- T-005: Shard-03 
46
|  |- T-009: Point
47
|- T-001: Shard-03 
48
|- T-002: Point
49
|- T-003: Point 
50
51 14 Tomislav Pleše
So this is the Context: 
52
* first element is the assistant role/content if it exists
53
* following elements are an ascending list of user prompts and assistant responses in ascending order: [012, 011, 007(S01+S02), 014, 006, 005(S01), 017, 016, 001(S01+S02) ]
54
* last element is the newest user prompt
55 10 Tomislav Pleše
56 14 Tomislav Pleše
    10. FE - Send new Point, the current Point (which has become Shard) and the messageList to BE
57
    11. BE - Save new Point to DB
58
    12. BE - Update the current Point (the one that bacame Shard)
59
    13. BE - Send messageList to OpenAI. The JSON should comprise of: model, messages, max_tokens
60
    14. BE - Receive the Response from OpenAI
61
    15. BE - Save Response to DB (into the previously saved new Point document)
62
    16. BE - Send the new Point (with updated Response and other elements like Metadata) to FE
63
    17. FE - Show updated new Point on Screen - node consisting of both Prompt message content and Response message content 
64 6 Tomislav Pleše
65
1. Root Point - First Prompt
66
    1. FE - Create new Point
67
    2. FE - Show new Point on Screen - only the Prompt
68
    3. FE - Create Context as the messageList.
69
    4. FE - Send new Point and the messageList to BE
70
    5. BE - Save new Point to DB
71
    6. BE - Send messageList to OpenAI. The JSON should comprise of: model, messages, max_tokens
72
    7. BE - Receive the Response from OpenAI
73
    8. BE - Save Response to DB (into the previously saved new Point document)
74 1 Tomislav Pleše
    9. BE - Send the new Point (with updated Response and other elements like Metadata) to FE
75 2 Tomislav Pleše
    10. FE - Show updated new Point on Screen - node consisting of both Prompt message content and Response message content 
76 6 Tomislav Pleše
77
2. Existing Point - Second prompt
78
    1. FE - Create new Point
79
    2. FE - Show new Point on Screen - the Prompt, under the previous Point
80
    3. FE - Create Context as the messageList.
81
    4. FE - Send new Point and the messageList to BE
82
    5. BE - Save new Point to DB
83
    6. BE - Send messageList to OpenAI. The JSON should comprise of: model, messages, max_tokens
84
    7. BE - Receive the Response from OpenAI
85 7 Tomislav Pleše
    8. BE - Save Response to DB (into the previously saved new Point document)
86 1 Tomislav Pleše
    9. BE - Send the new Point (with updated Response and other elements like Metadata) to FE
87 8 Tomislav Pleše
    10. FE - Show updated new Point on Screen - node consisting of both Prompt message content and Response message content 
88 1 Tomislav Pleše
89 8 Tomislav Pleše
3. New shard -   
90
    1. FE - Create new Point
91
    2. FE - Create a Shard in the current Prompt 
92 7 Tomislav Pleše
3. FE - 
93
    3. FE - Show new Point on Screen - the Prompt, under the previous Point
94
    3. FE - Create Context as the messageList.
95
    4. FE - Send new Point and the messageList to BE
96
    5. BE - Save new Point to DB
97
    6. BE - Send messageList to OpenAI. The JSON should comprise of: model, messages, max_tokens
98
    7. BE - Receive the Response from OpenAI
99
    8. BE - Save Response to DB (into the previously saved new Point document)
100 6 Tomislav Pleše
    9. BE - Send the new Point (with updated Response and other elements like Metadata) to FE
101 7 Tomislav Pleše
    10. FE - Show updated new Point on Screen - node consisting of both Prompt message content and Response message content 
102 1 Tomislav Pleše
103
4. Existing Shard - sub-prompt under a Point that has already been a Shard