Added chat name suggestion function
This commit is contained in:
parent
c1983d23d9
commit
eddfd99636
|
@ -30,22 +30,10 @@
|
|||
breaks: true,
|
||||
};
|
||||
|
||||
const send = async () => {
|
||||
// Compose the input message
|
||||
const inputMessage: Message = { role: "user", content: input.value };
|
||||
addMessage(chatId, inputMessage);
|
||||
|
||||
// Clear the input value
|
||||
input.value = "";
|
||||
|
||||
// Resize back to auto
|
||||
input.style.height = "auto";
|
||||
|
||||
// Show updating bar
|
||||
updating = true;
|
||||
|
||||
const sendRequest = async (messages: Message[]): Promise<Response> => {
|
||||
// Send API request
|
||||
/*
|
||||
// Not working yet: a way to get the response as a stream
|
||||
await fetchEventSource("https://api.openai.com/v1/chat/completions", {
|
||||
method: "POST",
|
||||
headers: {
|
||||
|
@ -71,6 +59,8 @@
|
|||
},
|
||||
});
|
||||
*/
|
||||
// Show updating bar
|
||||
updating = true;
|
||||
|
||||
const response: Response = await (
|
||||
await fetch("https://api.openai.com/v1/chat/completions", {
|
||||
|
@ -82,7 +72,7 @@
|
|||
body: JSON.stringify({
|
||||
model: "gpt-3.5-turbo",
|
||||
// Submit only the role and content of the messages, provide the previous messages as well for context
|
||||
messages: chat.messages.map((message): Message => {
|
||||
messages: messages.map((message): Message => {
|
||||
const { role, content } = message;
|
||||
return { role, content };
|
||||
}),
|
||||
|
@ -96,11 +86,25 @@
|
|||
})
|
||||
).json();
|
||||
|
||||
console.log(response);
|
||||
|
||||
// Hide updating bar
|
||||
updating = false;
|
||||
|
||||
return response;
|
||||
};
|
||||
|
||||
const submitForm = async (): Promise<void> => {
|
||||
// Compose the input message
|
||||
const inputMessage: Message = { role: "user", content: input.value };
|
||||
addMessage(chatId, inputMessage);
|
||||
|
||||
// Clear the input value
|
||||
input.value = "";
|
||||
|
||||
// Resize back to single line height
|
||||
input.style.height = "auto";
|
||||
|
||||
const response = await sendRequest(chat.messages);
|
||||
|
||||
if (response.error) {
|
||||
addMessage(chatId, {
|
||||
role: "system",
|
||||
|
@ -113,6 +117,29 @@
|
|||
});
|
||||
}
|
||||
};
|
||||
|
||||
const suggestName = async (): Promise<void> => {
|
||||
const suggestMessage: Message = {
|
||||
role: "user",
|
||||
content: "Can you give me a 5 word summary of this conversation's topic?",
|
||||
};
|
||||
addMessage(chatId, suggestMessage);
|
||||
|
||||
const response = await sendRequest(chat.messages);
|
||||
|
||||
if (response.error) {
|
||||
addMessage(chatId, {
|
||||
role: "system",
|
||||
content: `Error: ${response.error.message}`,
|
||||
});
|
||||
} else {
|
||||
response.choices.map((choice) => {
|
||||
choice.message.usage = response.usage;
|
||||
addMessage(chatId, choice.message);
|
||||
chat.name = choice.message.content;
|
||||
});
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<nav class="level is-mobile chat-header">
|
||||
|
@ -123,6 +150,7 @@
|
|||
<a
|
||||
href={"#"}
|
||||
class="greyscale ml-2 is-hidden editbutton"
|
||||
title="Rename chat"
|
||||
on:click|preventDefault={() => {
|
||||
let newChatName = prompt("Enter a new name for this chat", chat.name);
|
||||
if (newChatName) {
|
||||
|
@ -133,6 +161,14 @@
|
|||
>
|
||||
✏️
|
||||
</a>
|
||||
<a
|
||||
href={"#"}
|
||||
class="greyscale ml-2 is-hidden editbutton"
|
||||
title="Suggest a chat name"
|
||||
on:click|preventDefault={suggestName}
|
||||
>
|
||||
💡
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -211,7 +247,7 @@
|
|||
<progress class="progress is-small is-dark" max="100" />
|
||||
{/if}
|
||||
|
||||
<form class="field has-addons has-addons-right" on:submit|preventDefault={send}>
|
||||
<form class="field has-addons has-addons-right" on:submit|preventDefault={submitForm}>
|
||||
<p class="control is-expanded">
|
||||
<textarea
|
||||
class="input is-info is-medium is-focused chat-input"
|
||||
|
@ -220,7 +256,7 @@
|
|||
on:keydown={(e) => {
|
||||
// Only send if Enter is pressed, not Shift+Enter
|
||||
if (e.key === "Enter" && !e.shiftKey) {
|
||||
send();
|
||||
submitForm();
|
||||
e.preventDefault();
|
||||
}
|
||||
}}
|
||||
|
|
Loading…
Reference in New Issue