:gem: [Feature] MessageViewer: Messager with role and modle name, and button
Browse files
apps/llm_mixer/js/chat_operator.js
CHANGED
@@ -25,8 +25,11 @@ export function get_selected_llm_model() {
|
|
25 |
return available_models_select.val();
|
26 |
}
|
27 |
|
28 |
-
export function
|
29 |
-
return messagers_container
|
|
|
|
|
|
|
30 |
}
|
31 |
export function get_request_messages() {
|
32 |
return messager_list.get_request_messages();
|
@@ -36,9 +39,9 @@ export function pop_messager(n = 2) {
|
|
36 |
return messager_list.pop(n);
|
37 |
}
|
38 |
|
39 |
-
export function update_message(json_chunks,
|
40 |
-
if (
|
41 |
-
|
42 |
}
|
43 |
json_chunks.forEach(function (item) {
|
44 |
let choice = item.choices[0];
|
@@ -55,7 +58,7 @@ export function update_message(json_chunks, message_viewer = null) {
|
|
55 |
console.log("[STOP]");
|
56 |
}
|
57 |
console.log(item);
|
58 |
-
|
59 |
});
|
60 |
return json_chunks;
|
61 |
}
|
|
|
25 |
return available_models_select.val();
|
26 |
}
|
27 |
|
28 |
+
export function get_latest_message_content_displayer() {
|
29 |
+
return messager_list.messagers_container
|
30 |
+
.children()
|
31 |
+
.last()
|
32 |
+
.find(".content-displayer");
|
33 |
}
|
34 |
export function get_request_messages() {
|
35 |
return messager_list.get_request_messages();
|
|
|
39 |
return messager_list.pop(n);
|
40 |
}
|
41 |
|
42 |
+
export function update_message(json_chunks, content_displayer = null) {
|
43 |
+
if (content_displayer === null) {
|
44 |
+
content_displayer = get_latest_message_content_displayer();
|
45 |
}
|
46 |
json_chunks.forEach(function (item) {
|
47 |
let choice = item.choices[0];
|
|
|
58 |
console.log("[STOP]");
|
59 |
}
|
60 |
console.log(item);
|
61 |
+
content_displayer.append(content);
|
62 |
});
|
63 |
return json_chunks;
|
64 |
}
|
apps/llm_mixer/js/messager.js
CHANGED
@@ -1,4 +1,36 @@
|
|
1 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
3 |
export class Messager {
|
4 |
constructor(message) {
|
@@ -13,8 +45,8 @@ export class Messager {
|
|
13 |
};
|
14 |
}
|
15 |
create_viewer() {
|
16 |
-
|
17 |
-
this.viewer.
|
18 |
}
|
19 |
}
|
20 |
|
|
|
1 |
+
export class MessagerViewer {
|
2 |
+
constructor(message) {
|
3 |
+
this.message = message;
|
4 |
+
this.create_elements();
|
5 |
+
}
|
6 |
+
create_elements() {
|
7 |
+
this.container = $("<div>").addClass("row no-gutters message-viewer");
|
8 |
+
this.role_displayer = $("<div>").addClass("col-auto role-displayer");
|
9 |
+
if (this.message.role === "user") {
|
10 |
+
this.role_displayer.append("You");
|
11 |
+
} else {
|
12 |
+
this.role_displayer.append(this.message.model);
|
13 |
+
}
|
14 |
+
this.role_displayer.append(this.message.model);
|
15 |
+
this.content_displayer = $("<div>")
|
16 |
+
.addClass(
|
17 |
+
`col mb-2 p-2 content-displayer chat-${this.message.role}`
|
18 |
+
)
|
19 |
+
.append(this.message.content);
|
20 |
+
this.button = $("<button>").addClass(
|
21 |
+
"col-auto btn btn-primary regenerate-button"
|
22 |
+
);
|
23 |
+
if (this.message.role === "user") {
|
24 |
+
this.button.append("Edit");
|
25 |
+
} else {
|
26 |
+
this.button.append("Regenerate");
|
27 |
+
}
|
28 |
+
this.container
|
29 |
+
.append(this.role_displayer)
|
30 |
+
.append(this.content_displayer)
|
31 |
+
.append(this.button);
|
32 |
+
}
|
33 |
+
}
|
34 |
|
35 |
export class Messager {
|
36 |
constructor(message) {
|
|
|
45 |
};
|
46 |
}
|
47 |
create_viewer() {
|
48 |
+
let messager_viewer = new MessagerViewer(this.message);
|
49 |
+
this.viewer = messager_viewer.container;
|
50 |
}
|
51 |
}
|
52 |
|