3232import reactor .core .scheduler .Schedulers ;
3333
3434import org .springframework .ai .chat .messages .AssistantMessage ;
35- import org .springframework .ai .chat .messages .SystemMessage ;
35+ import org .springframework .ai .chat .messages .MessageType ;
3636import org .springframework .ai .chat .messages .ToolResponseMessage ;
3737import org .springframework .ai .chat .messages .UserMessage ;
3838import org .springframework .ai .chat .metadata .ChatGenerationMetadata ;
@@ -439,18 +439,21 @@ Prompt buildRequestPrompt(Prompt prompt) {
439439 OllamaApi .ChatRequest ollamaChatRequest (Prompt prompt , boolean stream ) {
440440
441441 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 ) {
443443 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+ }
447451 }
452+
448453 return List .of (messageBuilder .build ());
449454 }
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 ;
454457 List <ToolCall > toolCalls = null ;
455458 if (!CollectionUtils .isEmpty (assistantMessage .getToolCalls ())) {
456459 toolCalls = assistantMessage .getToolCalls ().stream ().map (toolCall -> {
@@ -465,7 +468,8 @@ else if (message instanceof AssistantMessage assistantMessage) {
465468 .toolCalls (toolCalls )
466469 .build ());
467470 }
468- else if (message instanceof ToolResponseMessage toolMessage ) {
471+ else if (message .getMessageType () == MessageType .TOOL ) {
472+ ToolResponseMessage toolMessage = (ToolResponseMessage ) message ;
469473 return toolMessage .getResponses ()
470474 .stream ()
471475 .map (tr -> OllamaApi .Message .builder (Role .TOOL ).content (tr .responseData ()).build ())
0 commit comments