Spaces:
Paused
Paused
| import type { EndpointParameters } from "./server/endpoints/endpoints"; | |
| import type { BackendModel } from "./server/models"; | |
| type buildPromptOptions = Pick<EndpointParameters, "messages" | "preprompt" | "continueMessage"> & { | |
| model: BackendModel; | |
| }; | |
| export async function buildPrompt({ | |
| messages, | |
| model, | |
| preprompt, | |
| continueMessage, | |
| }: buildPromptOptions): Promise<string> { | |
| const filteredMessages = messages.filter((m) => m.from !== "system"); | |
| let prompt = model | |
| .chatPromptRender({ messages: filteredMessages, preprompt }) | |
| // Not super precise, but it's truncated in the model's backend anyway | |
| .split(" ") | |
| .slice(-(model.parameters?.truncate ?? 0)) | |
| .join(" "); | |
| if (continueMessage && model.parameters?.stop) { | |
| prompt = model.parameters.stop.reduce((acc: string, curr: string) => { | |
| if (acc.endsWith(curr)) { | |
| return acc.slice(0, acc.length - curr.length); | |
| } | |
| return acc; | |
| }, prompt.trimEnd()); | |
| } | |
| return prompt; | |
| } | |