| | import type { EndpointParameters } from "./server/endpoints/endpoints"; |
| | import type { BackendModel } from "./server/models"; |
| |
|
| | type buildPromptOptions = Pick<EndpointParameters, "messages" | "preprompt"> & { |
| | model: BackendModel; |
| | }; |
| |
|
| | export async function buildPrompt({ |
| | messages, |
| | model, |
| | preprompt, |
| | }: buildPromptOptions): Promise<string> { |
| | const filteredMessages = messages; |
| |
|
| | if (filteredMessages[0].from === "system" && preprompt) { |
| | filteredMessages[0].content = preprompt; |
| | } |
| |
|
| | const prompt = model |
| | .chatPromptRender({ |
| | messages: filteredMessages.map((m) => ({ |
| | ...m, |
| | role: m.from, |
| | })), |
| | preprompt, |
| | }) |
| | |
| | .split(" ") |
| | .slice(-(model.parameters?.truncate ?? 0)) |
| | .join(" "); |
| |
|
| | return prompt; |
| | } |
| |
|