Spaces:
Sleeping
Sleeping
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 |
];
|