Skip to content

ZhiPuAiChatModel createRequest bug #1173

@lwgCodePlus

Description

@lwgCodePlus

If the message type used is UserMessage, it will not be built correctly

List<ChatCompletionMessage> chatCompletionMessages = prompt.getInstructions().stream().map(m -> {
			// Add text content.
			List<MediaContent> contents = new ArrayList<>(List.of(new MediaContent(m.getContent())));
			if (m instanceof UserMessage userMessage) {
				if (!CollectionUtils.isEmpty(userMessage.getMedia())) {
					// Add media content.
					contents.addAll(userMessage.getMedia()
						.stream()
						.map(media -> new MediaContent(
								new MediaContent.ImageUrl(this.fromMediaData(media.getMimeType(), media.getData()))))
						.toList());
				}
			}

			return new ChatCompletionMessage(contents, ChatCompletionMessage.Role.valueOf(m.getMessageType().name()));
		}).toList();

Here's my modified example

List<ChatCompletionMessage> chatCompletionMessages = prompt.getInstructions().stream().map(m -> {
                    if (m instanceof UserMessage userMessage) {
                        List<ChatCompletionMessage.MediaContent> contents = userMessage.getMedia().stream()
                                .flatMap(media -> Stream.of(
                                        new ChatCompletionMessage.MediaContent(userMessage.getContent()),
                                        new ChatCompletionMessage.MediaContent(
                                                new MediaContent.ImageUrl(this.fromMediaData(media.getMimeType(), media.getData())))
                                ))
                                .collect(Collectors.toList());

                        if (!contents.isEmpty()) {
                            return new ChatCompletionMessage(contents, ChatCompletionMessage.Role.valueOf(m.getMessageType().name()));
                        }
                    }
                    return new ChatCompletionMessage(m.getContent(), ChatCompletionMessage.Role.valueOf(m.getMessageType().name()));
                }).collect(Collectors.toList());

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions