Skip to content

Commit

Permalink
fix title suggestions
Browse files Browse the repository at this point in the history
  • Loading branch information
Shackless committed Apr 11, 2023
1 parent 11bdb7f commit c2ddc60
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 12 deletions.
11 changes: 7 additions & 4 deletions src/lib/Modals/SuggestTitleModal.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -7,19 +7,22 @@
let slug = $modalStore[0].meta?.slug || '';
let isLoading = false;
let title = $chatStore[slug].title;
$: showAiSuggestOptions = $settingsStore.openAiApiKey && canSuggestTitle($chatStore[slug]);
async function handleSuggestTitle() {
if (!$settingsStore.openAiApiKey) {
return;
}
isLoading = true;
const title = await suggestChatTitle($chatStore[slug], $settingsStore.openAiApiKey);
chatStore.updateChat(slug, { title });
title = await suggestChatTitle($chatStore[slug], $settingsStore.openAiApiKey);
isLoading = false;
}
function handleSave() {
chatStore.updateChat(slug, { title });
if ($modalStore[0].response) {
$modalStore[0].response(true);
}
Expand All @@ -33,7 +36,7 @@
<form class="flex flex-col space-y-4">
<label class="label">
<span class="inline-block w-40">Set chat title</span>
<input type="text" class="input" bind:value={$chatStore[slug].title} />
<input type="text" class="input" bind:value={title} />
</label>

{#if showAiSuggestOptions}
Expand All @@ -42,6 +45,7 @@
<button
class="btn variant variant-filled-secondary"
disabled={isLoading}
use:confettiAction={{ type: 'school-pride' }}
on:click={handleSuggestTitle}
>
{#if !isLoading}
Expand All @@ -68,7 +72,6 @@
class="checkbox"
type="checkbox"
bind:checked={$settingsStore.useTitleSuggestions}
use:confettiAction={{ type: 'school-pride' }}
/>
<p>Always set titles automagically</p>
</label>
Expand Down
22 changes: 17 additions & 5 deletions src/misc/shared.ts
Original file line number Diff line number Diff line change
Expand Up @@ -76,22 +76,34 @@ export function createNewChat(template?: {
}

export function canSuggestTitle(chat: Chat) {
return chat.contextMessage?.content || chat.messages?.length > 1;
return chat.contextMessage?.content || chat.messages?.length > 0;
}

export async function suggestChatTitle(chat: Chat, openAiApiKey: string): Promise<string> {
if (!canSuggestTitle(chat)) {
return Promise.resolve(chat.title);
}

const messages = chat.contextMessage.content // omit context if empty to save some tokens
? [chat.contextMessage, ...chat.messages]
: [...chat.messages];
const messages =
chat.messages.length === 1
? chatStore.getCurrentMessageBranch(chat)
: chat.contextMessage?.content
? [chat.contextMessage, ...chat.messages]
: chat.messages;

const filteredMessages = messages?.slice(0, chat.contextMessage?.content ? 3 : 2).map(
(m) =>
({
role: m.role,
content: m.content,
name: m.name
} as ChatCompletionRequestMessage)
);

const response = await fetch('/api/suggest-title', {
method: 'POST',
body: JSON.stringify({
messages,
messages: filteredMessages,
openAiKey: openAiApiKey
})
});
Expand Down
6 changes: 3 additions & 3 deletions src/misc/stores.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ export interface ChatStore extends Writable<{ [key: string]: Chat }> {
isFlat(chat: Chat): boolean;
findParent(messageId: string, chat: Chat): { parent: ChatMessage; index: number } | null;
getMessageById(messageId: string, chat: Chat): ChatMessage | null;
getCurrentMessageBranch(chat: Chat): ChatMessage[] | null;
getCurrentMessageBranch(chat: Chat, includeContext?: boolean): ChatMessage[] | null;
selectSibling(slug: string, id: string): void;
}

Expand Down Expand Up @@ -71,8 +71,8 @@ const addMessageToChat = (slug: string, message: ChatMessage, parent?: ChatMessa
});
};

const getCurrentMessageBranch = (chat: Chat): ChatMessage[] | null => {
return ChatStorekeeper.getCurrentMessageBranch(chat);
const getCurrentMessageBranch = (chat: Chat, includeContext = true): ChatMessage[] | null => {
return ChatStorekeeper.getCurrentMessageBranch(chat, includeContext);
};

const addAsSibling = (slug: string, originalMessageId: string, message: ChatMessage): void => {
Expand Down

0 comments on commit c2ddc60

Please sign in to comment.