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) {
198198 * @return a new {@link Prompt} instance with the augmented system message.
199199 */
200200 public Prompt augmentSystemMessage (Function <SystemMessage , SystemMessage > systemMessageAugmenter ) {
201-
202201 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 ++) {
204204 Message message = messagesCopy .get (i );
205205 if (message instanceof SystemMessage systemMessage ) {
206206 messagesCopy .set (i , systemMessageAugmenter .apply (systemMessage ));
207+ found = true ;
207208 break ;
208209 }
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- }
214210 }
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+ }
216216 return new Prompt (messagesCopy , null == this .chatOptions ? null : this .chatOptions .copy ());
217217 }
218218
Original file line number Diff line number Diff line change @@ -239,4 +239,26 @@ void augmentSystemMessageWhenNone() {
239239 assertThat (prompt .getSystemMessage ().getText ()).isEqualTo ("" );
240240 }
241241
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+
242264}
You can’t perform that action at this time.
0 commit comments