Spaces:
Paused
Paused
feat: Add a model config option to disable system prompts (#1539)
Browse files* feat: added config option to disable system prompts
* chore: updated config option name
---------
Co-authored-by: Nathan Sarrazin <[email protected]>
- src/lib/server/models.ts +19 -3
src/lib/server/models.ts
CHANGED
|
@@ -67,6 +67,8 @@ const modelConfig = z.object({
|
|
| 67 |
tools: z.boolean().default(false),
|
| 68 |
unlisted: z.boolean().default(false),
|
| 69 |
embeddingModel: validateEmbeddingModelByName(embeddingModels).optional(),
|
|
|
|
|
|
|
| 70 |
});
|
| 71 |
|
| 72 |
const modelsRaw = z.array(modelConfig).parse(JSON5.parse(env.MODELS));
|
|
@@ -115,10 +117,24 @@ async function getChatPromptRender(
|
|
| 115 |
role: message.from,
|
| 116 |
}));
|
| 117 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 118 |
if (preprompt && formattedMessages[0].role !== "system") {
|
| 119 |
formattedMessages = [
|
| 120 |
{
|
| 121 |
-
role: "system",
|
| 122 |
content: preprompt,
|
| 123 |
},
|
| 124 |
...formattedMessages,
|
|
@@ -133,7 +149,7 @@ async function getChatPromptRender(
|
|
| 133 |
if (isHuggingChat && id.startsWith("CohereForAI")) {
|
| 134 |
formattedMessages = [
|
| 135 |
{
|
| 136 |
-
role: "system",
|
| 137 |
content:
|
| 138 |
"\n\n<results>\n" +
|
| 139 |
toolResults
|
|
@@ -185,7 +201,7 @@ async function getChatPromptRender(
|
|
| 185 |
formattedMessages = [
|
| 186 |
...formattedMessages,
|
| 187 |
{
|
| 188 |
-
role: "system",
|
| 189 |
content: JSON.stringify(toolResults),
|
| 190 |
},
|
| 191 |
];
|
|
|
|
| 67 |
tools: z.boolean().default(false),
|
| 68 |
unlisted: z.boolean().default(false),
|
| 69 |
embeddingModel: validateEmbeddingModelByName(embeddingModels).optional(),
|
| 70 |
+
/** Used to enable/disable system prompt usage */
|
| 71 |
+
systemRoleSupported: z.boolean().default(true),
|
| 72 |
});
|
| 73 |
|
| 74 |
const modelsRaw = z.array(modelConfig).parse(JSON5.parse(env.MODELS));
|
|
|
|
| 117 |
role: message.from,
|
| 118 |
}));
|
| 119 |
|
| 120 |
+
if (!m.systemRoleSupported) {
|
| 121 |
+
const firstSystemMessage = formattedMessages.find((msg) => msg.role === "system");
|
| 122 |
+
formattedMessages = formattedMessages.filter((msg) => msg.role !== "system");
|
| 123 |
+
|
| 124 |
+
if (
|
| 125 |
+
firstSystemMessage &&
|
| 126 |
+
formattedMessages.length > 0 &&
|
| 127 |
+
formattedMessages[0].role === "user"
|
| 128 |
+
) {
|
| 129 |
+
formattedMessages[0].content =
|
| 130 |
+
firstSystemMessage.content + "\n" + formattedMessages[0].content;
|
| 131 |
+
}
|
| 132 |
+
}
|
| 133 |
+
|
| 134 |
if (preprompt && formattedMessages[0].role !== "system") {
|
| 135 |
formattedMessages = [
|
| 136 |
{
|
| 137 |
+
role: m.systemRoleSupported ? "system" : "user",
|
| 138 |
content: preprompt,
|
| 139 |
},
|
| 140 |
...formattedMessages,
|
|
|
|
| 149 |
if (isHuggingChat && id.startsWith("CohereForAI")) {
|
| 150 |
formattedMessages = [
|
| 151 |
{
|
| 152 |
+
role: m.systemRoleSupported ? "system" : "user",
|
| 153 |
content:
|
| 154 |
"\n\n<results>\n" +
|
| 155 |
toolResults
|
|
|
|
| 201 |
formattedMessages = [
|
| 202 |
...formattedMessages,
|
| 203 |
{
|
| 204 |
+
role: m.systemRoleSupported ? "system" : "user",
|
| 205 |
content: JSON.stringify(toolResults),
|
| 206 |
},
|
| 207 |
];
|