File tree Expand file tree Collapse file tree 2 files changed +30
-8
lines changed
main/java/org/springframework/ai/chat/prompt
test/java/org/springframework/ai/chat/prompt Expand file tree Collapse file tree 2 files changed +30
-8
lines changed Original file line number Diff line number Diff line change @@ -198,21 +198,21 @@ else if (message instanceof ToolResponseMessage toolResponseMessage) {
198
198
* @return a new {@link Prompt} instance with the augmented system message.
199
199
*/
200
200
public Prompt augmentSystemMessage (Function <SystemMessage , SystemMessage > systemMessageAugmenter ) {
201
-
202
201
var messagesCopy = new ArrayList <>(this .messages );
203
- for (int i = 0 ; i <= this .messages .size () - 1 ; i ++) {
202
+ boolean found = false ;
203
+ for (int i = 0 ; i < messagesCopy .size (); i ++) {
204
204
Message message = messagesCopy .get (i );
205
205
if (message instanceof SystemMessage systemMessage ) {
206
206
messagesCopy .set (i , systemMessageAugmenter .apply (systemMessage ));
207
+ found = true ;
207
208
break ;
208
209
}
209
- if (i == 0 ) {
210
- // If no system message is found, create a new one with the provided text
211
- // and add it as the first item in the list.
212
- messagesCopy .add (0 , systemMessageAugmenter .apply (new SystemMessage ("" )));
213
- }
214
210
}
215
-
211
+ if (!found ) {
212
+ // If no system message is found, create a new one with the provided text
213
+ // and add it as the first item in the list.
214
+ messagesCopy .add (0 , systemMessageAugmenter .apply (new SystemMessage ("" )));
215
+ }
216
216
return new Prompt (messagesCopy , null == this .chatOptions ? null : this .chatOptions .copy ());
217
217
}
218
218
Original file line number Diff line number Diff line change @@ -239,4 +239,26 @@ void augmentSystemMessageWhenNone() {
239
239
assertThat (prompt .getSystemMessage ().getText ()).isEqualTo ("" );
240
240
}
241
241
242
+ @ Test
243
+ void augmentSystemMessageWhenNotFirst () {
244
+ Message [] messages = { new UserMessage ("Hi" ), new SystemMessage ("Hello" ) };
245
+ Prompt prompt = Prompt .builder ().messages (messages ).build ();
246
+
247
+ assertThat (prompt .getSystemMessage ()).isNotNull ();
248
+ assertThat (prompt .getUserMessage ()).isNotNull ();
249
+ assertThat (prompt .getUserMessage ().getText ()).isEqualTo ("Hi" );
250
+ assertThat (prompt .getSystemMessage ().getText ()).isEqualTo ("Hello" );
251
+
252
+ Prompt copy = prompt .augmentSystemMessage (message -> message .mutate ().text ("How are you?" ).build ());
253
+
254
+ assertThat (copy .getSystemMessage ()).isNotNull ();
255
+ assertThat (copy .getInstructions ().size ()).isEqualTo (messages .length );
256
+ assertThat (copy .getSystemMessage ().getText ()).isEqualTo ("How are you?" );
257
+
258
+ assertThat (prompt .getSystemMessage ()).isNotNull ();
259
+ assertThat (prompt .getUserMessage ()).isNotNull ();
260
+ assertThat (prompt .getUserMessage ().getText ()).isEqualTo ("Hi" );
261
+ assertThat (prompt .getSystemMessage ().getText ()).isEqualTo ("Hello" );
262
+ }
263
+
242
264
}
You can’t perform that action at this time.
0 commit comments