:recycle: [Refactor] Clean llm_requester with imports from chat_operator
Browse files
apps/llm_mixer/index.html
CHANGED
|
@@ -12,7 +12,7 @@
|
|
| 12 |
</head>
|
| 13 |
<body>
|
| 14 |
<div class="container">
|
| 15 |
-
<div id="
|
| 16 |
<div class="fixed-bottom m-3">
|
| 17 |
<div class="container-fluid">
|
| 18 |
<div class="row no-gutters">
|
|
|
|
| 12 |
</head>
|
| 13 |
<body>
|
| 14 |
<div class="container">
|
| 15 |
+
<div id="messagers-container" class="mt-3"></div>
|
| 16 |
<div class="fixed-bottom m-3">
|
| 17 |
<div class="container-fluid">
|
| 18 |
<div class="row no-gutters">
|
apps/llm_mixer/js/buttons_binder.js
CHANGED
|
@@ -51,9 +51,9 @@ export class ButtonsBinder {
|
|
| 51 |
}
|
| 52 |
}
|
| 53 |
async post_user_input() {
|
| 54 |
-
let
|
| 55 |
-
console.log(
|
| 56 |
-
this.requester = new ChatCompletionsRequester(
|
| 57 |
await this.requester.post();
|
| 58 |
}
|
| 59 |
bind() {
|
|
|
|
| 51 |
}
|
| 52 |
}
|
| 53 |
async post_user_input() {
|
| 54 |
+
let user_input_content = $("#user-input").val();
|
| 55 |
+
console.log(user_input_content);
|
| 56 |
+
this.requester = new ChatCompletionsRequester(user_input_content);
|
| 57 |
await this.requester.post();
|
| 58 |
}
|
| 59 |
bind() {
|
apps/llm_mixer/js/llm_requester.js
CHANGED
|
@@ -3,31 +3,16 @@ import {
|
|
| 3 |
stringify_stream_bytes,
|
| 4 |
} from "./stream_jsonizer.js";
|
| 5 |
import * as secrets from "./secrets.js";
|
| 6 |
-
import {
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
this.messages = messages;
|
| 12 |
-
}
|
| 13 |
-
add_message(message) {
|
| 14 |
-
this.messages.push(message);
|
| 15 |
-
}
|
| 16 |
-
pop_messages(n = 1) {
|
| 17 |
-
return this.messages.splice(-n, n);
|
| 18 |
-
}
|
| 19 |
-
extend_messages(messages) {
|
| 20 |
-
this.messages = this.messages.concat(messages);
|
| 21 |
-
}
|
| 22 |
-
clear() {
|
| 23 |
-
this.messages = [];
|
| 24 |
-
}
|
| 25 |
-
}
|
| 26 |
|
| 27 |
export class ChatCompletionsRequester {
|
| 28 |
constructor(
|
| 29 |
prompt,
|
| 30 |
-
model = "
|
| 31 |
temperature = 0,
|
| 32 |
messages = [],
|
| 33 |
endpoint,
|
|
@@ -41,20 +26,9 @@ export class ChatCompletionsRequester {
|
|
| 41 |
this.cors_proxy = cors_proxy || secrets.cors_proxy;
|
| 42 |
this.request_endpoint = this.cors_proxy + this.endpoint;
|
| 43 |
this.controller = new AbortController();
|
| 44 |
-
this.construct_request_params();
|
| 45 |
}
|
| 46 |
construct_request_messages() {
|
| 47 |
-
|
| 48 |
-
role: "user",
|
| 49 |
-
content: this.prompt,
|
| 50 |
-
model: this.model,
|
| 51 |
-
temperature: this.temperature,
|
| 52 |
-
};
|
| 53 |
-
this.messages = this.messages.concat(message);
|
| 54 |
-
this.request_messages = this.messages.map(({ role, content }) => ({
|
| 55 |
-
role,
|
| 56 |
-
content,
|
| 57 |
-
}));
|
| 58 |
}
|
| 59 |
construct_request_headers() {
|
| 60 |
this.request_headers = {
|
|
@@ -63,6 +37,7 @@ export class ChatCompletionsRequester {
|
|
| 63 |
};
|
| 64 |
}
|
| 65 |
construct_request_body() {
|
|
|
|
| 66 |
this.request_body = {
|
| 67 |
model: this.model,
|
| 68 |
messages: this.request_messages,
|
|
@@ -71,7 +46,6 @@ export class ChatCompletionsRequester {
|
|
| 71 |
};
|
| 72 |
}
|
| 73 |
construct_request_params() {
|
| 74 |
-
this.construct_request_messages();
|
| 75 |
this.construct_request_headers();
|
| 76 |
this.construct_request_body();
|
| 77 |
this.request_params = {
|
|
@@ -82,8 +56,9 @@ export class ChatCompletionsRequester {
|
|
| 82 |
};
|
| 83 |
}
|
| 84 |
post() {
|
| 85 |
-
|
| 86 |
-
|
|
|
|
| 87 |
return fetch(this.request_endpoint, this.request_params)
|
| 88 |
.then((response) => response.body)
|
| 89 |
.then((rb) => {
|
|
@@ -95,7 +70,7 @@ export class ChatCompletionsRequester {
|
|
| 95 |
let json_chunks = jsonize_stream_data(
|
| 96 |
stringify_stream_bytes(value)
|
| 97 |
);
|
| 98 |
-
|
| 99 |
return reader.read().then(process);
|
| 100 |
});
|
| 101 |
})
|
|
|
|
| 3 |
stringify_stream_bytes,
|
| 4 |
} from "./stream_jsonizer.js";
|
| 5 |
import * as secrets from "./secrets.js";
|
| 6 |
+
import {
|
| 7 |
+
update_message,
|
| 8 |
+
create_messager,
|
| 9 |
+
get_request_messages,
|
| 10 |
+
} from "./chat_operator.js";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 11 |
|
| 12 |
export class ChatCompletionsRequester {
|
| 13 |
constructor(
|
| 14 |
prompt,
|
| 15 |
+
model = "gpt-3.5-turbo",
|
| 16 |
temperature = 0,
|
| 17 |
messages = [],
|
| 18 |
endpoint,
|
|
|
|
| 26 |
this.cors_proxy = cors_proxy || secrets.cors_proxy;
|
| 27 |
this.request_endpoint = this.cors_proxy + this.endpoint;
|
| 28 |
this.controller = new AbortController();
|
|
|
|
| 29 |
}
|
| 30 |
construct_request_messages() {
|
| 31 |
+
this.request_messages = get_request_messages();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 32 |
}
|
| 33 |
construct_request_headers() {
|
| 34 |
this.request_headers = {
|
|
|
|
| 37 |
};
|
| 38 |
}
|
| 39 |
construct_request_body() {
|
| 40 |
+
this.construct_request_messages();
|
| 41 |
this.request_body = {
|
| 42 |
model: this.model,
|
| 43 |
messages: this.request_messages,
|
|
|
|
| 46 |
};
|
| 47 |
}
|
| 48 |
construct_request_params() {
|
|
|
|
| 49 |
this.construct_request_headers();
|
| 50 |
this.construct_request_body();
|
| 51 |
this.request_params = {
|
|
|
|
| 56 |
};
|
| 57 |
}
|
| 58 |
post() {
|
| 59 |
+
create_messager("user", this.prompt);
|
| 60 |
+
create_messager("assistant", "", this.model, this.temperature);
|
| 61 |
+
this.construct_request_params();
|
| 62 |
return fetch(this.request_endpoint, this.request_params)
|
| 63 |
.then((response) => response.body)
|
| 64 |
.then((rb) => {
|
|
|
|
| 70 |
let json_chunks = jsonize_stream_data(
|
| 71 |
stringify_stream_bytes(value)
|
| 72 |
);
|
| 73 |
+
update_message(json_chunks);
|
| 74 |
return reader.read().then(process);
|
| 75 |
});
|
| 76 |
})
|