From 32dd7054981ea69f7da694905ea613f6a653bb4a Mon Sep 17 00:00:00 2001 From: Wroclaw Date: Sun, 20 Aug 2023 15:12:26 +0200 Subject: [PATCH] Use Iterable when converting to OpenAI messages --- src/execution.ts | 4 +++- src/toOpenAIMessages.ts | 13 +++++++------ 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/execution.ts b/src/execution.ts index 57a5463..9573796 100644 --- a/src/execution.ts +++ b/src/execution.ts @@ -274,7 +274,9 @@ async function executeFromQueue(channel: string) { await message.deferReply(); } - OpenAImessages = toOpenAIMessages(messages); + messages.sort((a, b) => b.createdTimestamp - a.createdTimestamp); + + OpenAImessages = toOpenAIMessages(messages.values()); let generatedMessage: ChatCompletionResponseMessage | undefined = undefined; let answer: Awaited>; diff --git a/src/toOpenAIMessages.ts b/src/toOpenAIMessages.ts index 598238d..e868b45 100644 --- a/src/toOpenAIMessages.ts +++ b/src/toOpenAIMessages.ts @@ -92,17 +92,18 @@ function getAuthorUsername(message: DiscordMessage): string | undefined { } /** - * Converts the Collection of Discord Messages to array of OpenAI Messages to send - * @param messages the collection to convert + * Converts the Iterable of Discord Messages to array of OpenAI Messages to send + * first message in the interable will be the last of the returned array (reverse order) + * @param messages the iterable to convert * @returns the converted messages */ -export default function toOpenAIMessages(messages: Collection): OpenAIMessage[] { +export default function toOpenAIMessages( + messages: Iterable, +): OpenAIMessage[] { const rvalue: OpenAIMessage[] = []; let tokenCount = 0; - messages.sort((a, b) => b.createdTimestamp - a.createdTimestamp); - - for (const message of messages.values()) { + for (const message of messages) { const content = formatMessage(message); // FIXME: tokens are not being counted properly (it's lower than it is) but it's enough for me for now. tokenCount += countTokens(content);