32
32
import reactor .core .scheduler .Schedulers ;
33
33
34
34
import org .springframework .ai .chat .messages .AssistantMessage ;
35
- import org .springframework .ai .chat .messages .SystemMessage ;
35
+ import org .springframework .ai .chat .messages .MessageType ;
36
36
import org .springframework .ai .chat .messages .ToolResponseMessage ;
37
37
import org .springframework .ai .chat .messages .UserMessage ;
38
38
import org .springframework .ai .chat .metadata .ChatGenerationMetadata ;
@@ -439,18 +439,21 @@ Prompt buildRequestPrompt(Prompt prompt) {
439
439
OllamaApi .ChatRequest ollamaChatRequest (Prompt prompt , boolean stream ) {
440
440
441
441
List <OllamaApi .Message > ollamaMessages = prompt .getInstructions ().stream ().map (message -> {
442
- if (message instanceof UserMessage userMessage ) {
442
+ if (message . getMessageType () == MessageType . USER || message . getMessageType () == MessageType . SYSTEM ) {
443
443
var messageBuilder = OllamaApi .Message .builder (Role .USER ).content (message .getText ());
444
- if (!CollectionUtils .isEmpty (userMessage .getMedia ())) {
445
- messageBuilder .images (
446
- userMessage .getMedia ().stream ().map (media -> this .fromMediaData (media .getData ())).toList ());
444
+ if (message instanceof UserMessage userMessage ) {
445
+ if (!CollectionUtils .isEmpty (userMessage .getMedia ())) {
446
+ messageBuilder .images (userMessage .getMedia ()
447
+ .stream ()
448
+ .map (media -> this .fromMediaData (media .getData ()))
449
+ .toList ());
450
+ }
447
451
}
452
+
448
453
return List .of (messageBuilder .build ());
449
454
}
450
- else if (message instanceof SystemMessage systemMessage ) {
451
- return List .of (OllamaApi .Message .builder (Role .SYSTEM ).content (systemMessage .getText ()).build ());
452
- }
453
- else if (message instanceof AssistantMessage assistantMessage ) {
455
+ else if (message .getMessageType () == MessageType .ASSISTANT ) {
456
+ var assistantMessage = (AssistantMessage ) message ;
454
457
List <ToolCall > toolCalls = null ;
455
458
if (!CollectionUtils .isEmpty (assistantMessage .getToolCalls ())) {
456
459
toolCalls = assistantMessage .getToolCalls ().stream ().map (toolCall -> {
@@ -465,7 +468,8 @@ else if (message instanceof AssistantMessage assistantMessage) {
465
468
.toolCalls (toolCalls )
466
469
.build ());
467
470
}
468
- else if (message instanceof ToolResponseMessage toolMessage ) {
471
+ else if (message .getMessageType () == MessageType .TOOL ) {
472
+ ToolResponseMessage toolMessage = (ToolResponseMessage ) message ;
469
473
return toolMessage .getResponses ()
470
474
.stream ()
471
475
.map (tr -> OllamaApi .Message .builder (Role .TOOL ).content (tr .responseData ()).build ())
0 commit comments