Mounayer nsarrazin HF Staff commited on
Commit
5340bb9
·
unverified ·
1 Parent(s): 3076857

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]>

Files changed (1) hide show
  1. 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
  ];