diff --git a/src/execution.ts b/src/execution.ts index 1f4b282..3b8e2fd 100644 --- a/src/execution.ts +++ b/src/execution.ts @@ -212,7 +212,6 @@ async function executeFromQueue(channel: string) { const message = channelQueue.at(0) as RequestMessage; let functionRanCounter = 0; let OpenAImessages: ChatCompletionMessageParam[] = []; - let modelUsernameMap: Map; // ignore if we can't even send anything to reply if (!canReplyToRequest(message)) return; @@ -238,7 +237,7 @@ async function executeFromQueue(channel: string) { return b.createdTimestamp - a.createdTimestamp; }); - [OpenAImessages, modelUsernameMap] = toOpenAIMessages(messages.values()); + OpenAImessages = toOpenAIMessages(messages.values()); let generatedMessage: ChatCompletionMessage | undefined = undefined; let answer: Awaited>; @@ -260,7 +259,7 @@ async function executeFromQueue(channel: string) { OpenAImessages.push(generatedMessage); // FIXME: don't use new instance of FunctionManager OpenAImessages.push( - new FunctionManager().handleFunction(generatedMessage.function_call, modelUsernameMap) + new FunctionManager().handleFunction(generatedMessage.function_call) ); } } while (generatedMessage.function_call); diff --git a/src/funcitonManager.ts b/src/funcitonManager.ts index 9af00d5..9bcb0ec 100644 --- a/src/funcitonManager.ts +++ b/src/funcitonManager.ts @@ -43,10 +43,7 @@ export abstract class OpenAIFunction { }; } - abstract execute( - data: OpenAIFunctionRequestData, - modelUsernameMap: Map, - ): string; + abstract execute(data: OpenAIFunctionRequestData): string; } /* @@ -67,10 +64,7 @@ export default class FunctionManager { return rvalue; } - public handleFunction( - request: ChatCompletionFunctionCall, - modelUsernameMap: Map = new Map(), - ): ChatCompletionMessageParam { + public handleFunction(request: ChatCompletionFunctionCall): ChatCompletionMessageParam { // eslint-disable-next-line @typescript-eslint/no-explicit-any let parsedArguments: any; @@ -97,7 +91,7 @@ export default class FunctionManager { role: "function", name: request.name, // eslint-disable-next-line @typescript-eslint/no-unsafe-argument - content: functionToRun.execute(parsedArguments, modelUsernameMap), + content: functionToRun.execute(parsedArguments), }; } } diff --git a/src/toOpenAIMessages.ts b/src/toOpenAIMessages.ts index ccb8421..f93d235 100644 --- a/src/toOpenAIMessages.ts +++ b/src/toOpenAIMessages.ts @@ -95,34 +95,28 @@ function getAuthorUsername(message: DiscordMessage): string | undefined { /** * 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) - * (first should be newest) * @param messages the iterable to convert - * @returns [0] the converted messages - * @returns [1] username mappings to id + * @returns the converted messages */ export default function toOpenAIMessages( messages: Iterable, -): [OpenAIMessage[], Map] { - const rmessages: OpenAIMessage[] = []; - const rUserMap = new Map(); +): OpenAIMessage[] { + const rvalue: OpenAIMessage[] = []; let tokenCount = 0; for (const message of messages) { - // FIXME: multiple users could have the same name here. 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); if (tokenCount > config.readLimits.tokens) break; - const name = getAuthorUsername(message); - rmessages.push({ + rvalue.push({ role: message.author.id === message.client.user.id ? "assistant" : "user", content: content, - name: name, + name: getAuthorUsername(message), }); - if (name && rUserMap.has(name)) rUserMap.set(name, message.author.id); } - rmessages.push(...config.systemPrompt([...messages][0]).reverse()); + rvalue.push(...config.systemPrompt([...messages][0]).reverse()); - return [rmessages.reverse(), rUserMap]; + return rvalue.reverse(); }